wtorek, 5 listopada 2019

Symulator automatu do gier w Delphi część 1

Na zakończenie tematu poświęconego grom i zabawom wykonanych w środowisku Delphi, prezentujemy w pełni wykończony projekt, aby pokazać, jak odpowiednie zadbanie o estetykę interfejsu wpływa na atrakcyjność programu. Jako przykład wybraliśmy symulator automatu do gier. Będzie on oparty w większości na tych rozwiązaniach, które poznaliśmy do tej pory, choć nie brakuje też i nowych elementów.

symulator automatu do gier programowanie delpi
Automat do gier

Założenia i opis programu:


Naszym głównym założeniem jest chęć wykonania typowego automatu do gier, który będzie obracał bębnami i przyznawał punkty za trafiony układ. Wzorując się na oryginale, nie zabraknie także możliwości zmieniania stawki, za jaką w danej chwili chcemy zagrać oraz liczników obrazujących, ile otrzymaliśmy punktów za układ i jaki jest stan naszego konta.

Oczywiste jest, że nie zrobimy automatu na prawdziwe pieniądze, ale – nawiązując do prawdziwych automatów – będziemy posiadać przycisk, który będzie zasilać nasze konto w grze. Zachowując ten realizm, będziemy mieli rozeznanie, jak łatwo można stracić pieniądze, grając w prawdziwe automaty do gier.

Jako że jesteśmy twórcami naszego symulatora, nie musimy ograniczać się tylko do zgodności z oryginałem, możemy wprowadzić swoje dodatkowe założenia. Najważniejszym z nich będzie możliwość grania na debecie: Kiedy skończą się nam fundusze na koncie, będziemy mogli dalej grać, zaciągając pożyczkę. Stan naszego konta będzie wtedy ujemny do czasu, aż trafimy układ i program odliczy sobie przyznaną pożyczkę. Aby nie popaść w nadmierny hazard, założymy blokadę, abyśmy mogli zadłużać się tylko do kwoty 200 złotych. Powyżej tej granicy program uniemożliwi dalszą grę.

Wprowadzamy także bonusy za ustawienie niektórych symboli w określonym miejscu, mianowicie, będą nimi pola narożne oraz środkowe. Za każde takie trafienie będą przyznawane punkty, lecz nie o ściśle wyznaczonej wartości, tylko o wartości zmiennej, którą program przydzieli. Chcemy także, aby po umieszczeniu tych symboli we wszystkich tych miejscach naraz, program zachował się w sposób niezwykły, mianowicie chcemy, aby odwrócił nasz los o 180 stopni w ten sposób, że gdy będziemy mieli debet, anuluje go nam, natomiast w przypadku posiadania przez nas dodatniego stanu konta, po prostu wyzeruje go, wyświetlając napis „Bankrut”.

Aby ułatwić sobie zadanie, rezygnujemy z obrazków owoców widniejących na typowym automacie. Zamiast nich wyświetlać będziemy liczby, od zera do dziewięciu. Przyjmujemy, że elementem odpowiedzialnym za uzyskanie bonusu będzie cyfra zero. Wybieramy także najtrudniejszą wersję gry, czyli pięć bębnów. Za układy będziemy uważać te grupy liczb (minimum trzy), które są obok siebie w linii prostej: poziomej, pionowej lub ukośnej; są tego samego typu i mają swój początek w pierwszym lub ostatnim bębnie.

Zasada działania programu jest wbrew pozorom bardzo prosta. Po naciśnięciu przycisku „START” program losuje i wyświetla liczby na poszczególnych polach bębnów, a następnie sprawdza, czy ułożyły się jakieś układy. Jeżeli powstał układ lub bonus, przydziela za niego punkty pomnożone przez wybraną przez nas stawkę i wyświetla ją w polu wygranych. Jednocześnie, uzyskaną liczbę punktów dodaje także do naszego konta. Dla ułatwienia odczytywania układów program będzie zaznaczał układy na czerwono, a bonusy na zielono.

Potrzebne komponenty:


W tym projekcie używamy dużo komponentów. Wszystkie wstawiamy na formę główną. Oto wykaz potrzebnych komponentów:

Button1 – przycisk „Zasil konto”,
Button2 – przycisk „START”,
Panel1 – Ramka, na której znajdują się komponenty Memo,
Memo1..15 – Pola bębnów (3x5),
Edit1 – Pole do wyświetlania liczby punktów,
Edit2 – Pole do wyświetlania stanu konta,
Label1 – etykieta wyświetlająca napis „Wygrana”,
Label2 – etykieta wyświetlająca napis „Konto”,
RadioGroup1 – ramka do grupowania kontrolek RadioButton,
RadioButton1..6 – kontrolki do wybierania stawki.

Poszczególne komponenty rozmieszczamy i kształtujemy według poniższego wzoru:

automat do gier
Przykładowy wygląd symulatora automatu do gier

Rozkład komponentów Memo jest następujący:

1 2 3 4 5
6 7 8 9 10
11 12 13 14 15

A oto pełny kod programu: Kod dostępny w książce pt. "Delphi w przykładach dla początkujących".

 

Komentarz:


1. Form Create


W procedurze tej zawieramy tylko jedno polecenie, odpowiedzialne za wyświetlenie zera w polu „Stan konta”. Jest to konieczny zabieg, aby program wiedział, jaki jest stan początkowy naszego portfela. Musi przecież wiedzieć, od jakiej wartości odjąć punkty za uruchomienie bębnów oraz do jakiej wartości ma dodać punkty za uzyskany układ.


2. Gdy naciśniesz przycisk „Zasil konto”


Button2.Enabled:= True; //odblokuj przycisk START
Konto:= StrToInt(Edit2.Text); //odczytaj stan konta
Konto:= Konto+50; //dodaj do konta 50 pkt
Edit2.Text:= IntToStr(Konto); //wyświetl stan konta

Pierwsza linia kodu odblokowuje przycisk „START” na wypadek, gdyby został on zablokowany z powodu zbytniego zadłużenia. W dalszej części, z pola „Stan konta” odczytujemy najpierw, ile punktów mamy zgromadzonych na swoim koncie, następnie dodajemy do tej wartości 50 punktów i tę powiększoną wartość wyświetlamy w tym samym polu.

Jak widzimy po kodzie, możemy w każdej chwili zasilić konto o dodatkowe 50 punktów. Jeżeli nie chcemy udostępniać takiej możliwości, będziemy musieli wprowadzić warunek sprawdzający (if...then), który według naszej woli oceni, czy przy takiej ilości punktów może zasilić konto. Załóżmy, że chcemy zasilać konto tylko w przypadku, gdy stan konta jest ujemny lub nie przekracza 100 punktów. Musimy więc wprowadzić warunek sprawdzający:

if Konto > 100 then

ShowMessage ('Nie mogę zasilić konta. Zbyt wysoki stan konta')

else

begin

Konto:= Konto + 50;
Edit2.Text:= IntToStr(Konto);

end;


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

poradnik programowania Delphi




Polecane artykuły:


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