Komentarz:
1. Wstęp
Jak widzimy, komponenty
użyte w tej zabawie pozostają te same, co w poprzedniej. Tutaj nic
się nie zmienia. Zmianie ulegnie tylko część kodu obsługująca
działanie programu. Przede wszystkim nie wprowadzamy procedury
Edit1KeyPress ograniczającej rodzaj wpisywanych znaków w
pole edycyjne przeznaczone do podania odpowiedzi. Musieliśmy usunąć
te ograniczenie, aby można było wpisywać litery. Pozostałe
rozwiązania pozostają niezmienione, aż do procedury obsługującej
przycisk START.
2. Gdy naciśniesz przycisk START
Jak już
wspominaliśmy, program jako maszyna matematyczna nie zna liter,
musimy je dopiero zadeklarować. Wykorzystujemy do tego celu dwa nowe
dla nas elementy: stałą i tablicę. Do tej pory nauczyliśmy się
stosować zmienne jako miejsce przechowywania danych, które często
się zmieniają. Tutaj sytuację mamy inną: z góry wiemy, jakie
litery będą używane. Będzie to zatem stały element.
Konkretne litery, po
wylosowaniu w dalszej części procedury zostaną przypisane do
zmiennych Litera, w których to program będzie je przechowywał
podobnie, jak robił to wcześniej z liczbami. Sekcja ta jest zatem
bazą, z której program będzie czerpał litery. Pozostaje jeszcze
kwestia ich implementacji. Moglibyśmy to zrobić analogicznie jak w
przypadku zmiennych, czyli każdą z liter deklarując osobno, na
przykład tak:
const
Znak1:= 'a';
Znak2:= 'b';
Znak3:= 'c';
(...)
Znak23:= 'z';
Powyższe rozwiązanie
jak widzimy generuje znaczny przyrost kodu i stratę naszego czasu. O
wiele szybciej i prościej cały ten zbiór możemy zawrzeć w
tablicy stałych:
Tablica: array
[1..23] of
String
=('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p',
'r','s','t','u','w','y','z');
//tablica liter
Zamiast
znacznika var
(od angielskiej nazwy Zmienna) używamy tu znacznika const,
czyli stała. W dalszej kolejności wprowadzamy nazwę tablicy. Nazwa
może być dowolna, pamiętajmy jednak, że musi być ona
jednoczłonowa. My przyjęliśmy prostą nazwę, czyli „Tablica”.
Teraz musimy zadeklarować z ilu, i z jakich elementów będzie się
składała, oraz po znaku równości, w nawiasie wymieniamy je, każdy
element umieszczając w apostrofach i oddzielając go od innych
elementów za pomocą przecinka. W naszym przypadku mamy 23 elementy
(litery) typu string.
Chcąc
skorzystać w procedurze z tak przygotowanego zbioru, używamy nazwy
tablicy i numeru elementu, który chcemy użyć, przykładowo, chcąc
użyć literę „c” odwołujemy się do niej w następujący
sposób: Tablica[3]. Litera „c” jest trzecim elementem tego
zbioru, więc i taką matematyczną nazwę będzie w tym przypadku
posiadała.
Aby móc używać
liter z naszej tablicy w tworzonej przez nas procedurze, musimy
zadeklarować sześć zmiennych typu string (Litera1...6) do ich
przechowywania. Ilość zmiennych uzależniona jest od ilości liter,
jakie chcemy powtarzać. Przyjęliśmy, że powtórzenie sześciu
liter z pamięci jest wystarczająco trudnym zadaniem, stąd też
tyle zmiennych przygotowujemy.
W rozpoczynającej
się procedurze następuje wylosowanie jednego z elementów tablicy
liter i przypisanie go do zmiennej Litera:
Litera1:=
Tablica[Random(23)+1].
Każda
ze zmiennych Litera przechowuje jedną literę do powtórzenia,
wylosowaną z tego samego zbioru, czyli Tablica. Istnieje więc
możliwość, że wśród tych liter niektóre mogą się powtarzać.
WYNIK:=
(Litera1+Litera2+Litera3+Litera4+Litera5+Litera6);
Po
przypisaniu liter do zmiennych, następuje połączenie ich w jeden
ciąg znaków i zapisanie do zmiennej globalnej WYNIK. Działanie to
wymaga od nas, aby i my podali odpowiedź, wpisując jedna litera za
drugą, bez oddzielania ich za pomocą spacji. Warto zwrócić uwagę
na fakt, że litery jako znaki tekstowe nie wymagają od zmiennej
WYNIK żadnej konwersji.
Dalsza część
procedury, jak i dalszy kod pozostają bez zmian w stosunku do
pierwowzoru, więc pomijamy ją w tym komentarzu. Zwracamy tylko
uwagę, aby zmienną WYNIK nie konwertować przy sprawdzaniu
odpowiedzi, gdyż przecież jest ona w tym projekcie zmienną typu
string, a więc tego samego typu, co zmienna Odp.
W trzecim przykładzie
zabawy z tej grupy, napiszemy program łączący obie wcześniejsze
zabawy, czyli będzie losował dla nas zarówno litery, jak i liczby.
Artykuł pochodzi z mojej książki pt. "Delphi w przykładach dla początkujących". Zapraszam na Stronę książki.
Ciekawe artykuły:
- Zagadki logiczne i inne zagadki
- Gry matematyczne w Delphi
- Zabawy matematyczne w Delphi
- Przechwyt klawiatury w Delphi
- Nauki płynące z mądrości pokoleń
Zapoznaj się z innymi utworami. Przejdź do zakładki Spis artykułów.
Brak komentarzy:
Prześlij komentarz