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.
|
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:
|
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
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.
Polecane artykuły: