poniedziałek, 11 listopada 2019

Symulator automatu do gier w Delphi część 2

<<-- Przejdź do części 1

3. Gdy naciśniesz przycisk „START”


Aby móc operować na liczbach wyświetlanych w polach Memo, musimy dla nich przygotować piętnaście osobnych zmiennych (M1..M15), po jednej dla każdego pola Memo. Będziemy dzięki nim losować liczbę do wyświetlenia. Każda ze zmiennych „M” jest ściśle przyporządkowana do komponentu Memo o tym samym numerze. 
 
W naszym prostym przykładzie, zamiast obrazków wyświetlamy liczby, ale nic nie stoi na przeszkodzie, aby zmodyfikować kod w taki sposób, aby można było te obrazki wyświetlać. Nie jest to aż takie trudne. Pierwszą zmianą, jaką musielibyśmy wprowadzić, to wymiana komponentów Memo na Image, aby w polach można było wyświetlać obrazki. Ponadto, będziemy musieli do naszego kodu dodać instrukcje warunkowe if...then, do „tłumaczenia” wyników liczbowych na obrazki. Wprowadzane warunki będą proste:

M1:= Random (10) //wylosuj liczbę

if M1= 1 then //gdy wylosuje 1, wtedy
Image1.LoadFromFile('C:\Gry\1.jpg'); //wyświetl obrazek 1

if M1= 2 then //gdy wylosuje 2, wtedy
Image1.LoadFromFile('C:\Gry\2.jpg'); //wyświetl obrazek 2

(...)

if M1= 9 then //gdy wylosuje 9, wtedy
Image1.LoadFromFile('C:\Gry\9.jpg'); //wyświetl obrazek 9
Powyższą grupę warunków należy teraz powtórzyć dla każdej zmiennej „M”. Jak łatwo się domyślić, długość kodu jeszcze bardziej się wydłuży, ale pisząc programy komputerowe, musimy liczyć się z tym, że mogą one zawierać tysiące linii kodu.

Pierwszą czynnością po naciśnięciu przycisku „START”, jest ustalenie stawki, jaką gracz zaznaczył. Domyślnie ustawiona jest stawka najniższa, za pięć punktów. Ona także jest punktem wyjścia do wyznaczenia współczynników kolejnych stawek, przez które należy pomnożyć punkty. Druga stawka to „10 punktów” – jest ona dwa razy większa od stawki podstawowej, stąd też zmienna „Stawka” przyjmuje wartość „2”.

Do wyznaczania stawki przez gracza wykorzystaliśmy nowy komponent o nazwie „RadioButton”. Ma on tę właściwość, że w danej chwili może być aktywny tylko jeden z nich. Jest to więc taki przełącznik: Jeżeli jest zaznaczony jeden, a my klikniemy drugi, to tamten zostanie „odhaczony”, a ten zaznaczony. Aby wykorzystać w kodzie informację, która kontrolka została zaznaczona, stosujemy instrukcję warunkową:

if RadioButton1.checked= true then //gdy wybrano stawkę x5
Stawka:= 1; //pomnóż wynik razy 1

Po ustaleniu stawki, za jaką gracz gra, przywracamy każdemu polu kolor biały. Musimy to zrobić, gdyż wszelkie układy i bonusy podświetlają pola na inny kolor, nie mogą więc one pozostać takie dla nowego losowania:

Memo1.Color:= clwhite;

Następną czynnością, jaką musimy wykonać, jest odjęcie punktów za uruchomienie bębnów. Za każdym razem, gdy naciskamy w automacie do gier przycisk „Graj”, pobiera on ustaloną ilość punktów z naszego konta. W naszym przypadku najniższa stawka to pięć punktów i tyle też zostanie nam z konta pobrane. W przypadku wybrania wyższej stawki zwiększy się odpowiednio ilość odjętych punktów. Aby móc zabrać punkty, najpierw musimy dowiedzieć się, jaki jest aktualny stan konta:

Konto:= StrToInt(Edit2.Text); //odczytaj stan konta
Konto:= Konto-(5*Stawka); //odejmij punkty z konta za uderzenie
Edit2.Text:= IntToStr(Konto); //wyświetl stan konta
Edit2.Update; //uaktualnij komponent

Edit1.Text:= IntToStr(0); //wyzeruj pole wygranych
Edit1.Update; //uaktualnij komponent

Jak widzimy z powyższego kodu, w pierwszej kolejności odczytujemy zawartość pola Edit2 (wyświetlającego stan konta) i przypisujemy ją do zmiennej „Konto”. Teraz możemy odjąć od niej pięć punktów, pomnożone przez stawkę, którą gracz wybrał. Nową wartość naszego konta możemy na powrót wyświetlić, aktualizując cały komponent.

Ostatnią czynnością przygotowawczą do nowego rozdania jest wyzerowanie pola wygranych na wypadek, gdyby w polu tym pozostawała wartość wygranej z poprzedniego rozdania:

Edit1.Text:= IntToStr(0); //wyzeruj pole wygranych
Edit1.Update; //uaktualnij komponent

Przystępując do nowego rozdania, musimy najpierw wylosować liczby dla każdego pola Memo z osobna:

M1:= Random(10); //wylosuj liczbę dla okna 1
(…)
M15:= Random(10); //wylosuj liczbę dla okna 15

Mając już ustalone, jakie liczby mają być wyświetlone w każdym polu, przystępujemy do „uruchomienia” bębnów. W tym miejscu wprowadzamy nasze dwa założenia: Po pierwsze, nie chcemy, aby program pokazał od razu wylosowane liczby. Chcemy, aby najpierw pokręcił bębnami tak, jak w prawdziwym automacie. Jego właściwością jest także to, iż bębny nie zatrzymują się w tym samym czasie, tylko jeden po drugim, począwszy od lewej strony. Uzyskanie tego efektu będzie zatem naszym drugim założeniem.


Artykuł pochodzi z mojej książki pt. "Delphi w przykładach dla początkujących". Zapraszam na Stronę książki.

poradnik programowania Delphi





Ciekawe artykuły:

    
    Zapoznaj się z innymi artykułami. Przejdź do zakładki Spis artykułów.

Brak komentarzy:

Prześlij komentarz

Wspomóż mnie lub zostań moim patronem już od 5 zł - sprawdź szczegóły

Moje e-booki

Kliknij w okładkę, aby przejść do strony książki

Przejdź do strony książki Przejdź do strony książki