Powtórz liczby
Jest to kolejna zabawa
rozwijająca nasz umysł. W tej, trenujemy i rozwijamy pamięć.
Program będzie podawał szereg liczb, które będziemy musieli z
pamięci powtórzyć.
Założenia i opis zabawy:
Podobnie jak w
poprzednich przypadkach, przyjmujemy możliwość wpisywania
odpowiedzi po raz drugi, gdy pierwsza nasza odpowiedź będzie
błędna. Pozostawiamy także sprawdzone rozwiązania z poprzednich
przykładów, czyli możliwość oceny naszych wyników przez program
na zakończenie gry i wyświetlanie na bieżąco wyników, ile
odpowiedzi udzieliliśmy poprawnych, a ile niepoprawnych.
Zachowujemy także
ograniczenia dla pola do wpisywania odpowiedzi: dopuszczamy tylko
możliwość wpisywania liczb oraz ich kasowanie. W poprzednich
zabawach istniała możliwość wpisywania minusa, w tej zabawie
minus nie jest nam potrzebny, więc usuwamy tę możliwość.
Aby ułatwić sobie
zadanie, nie będziemy losować każdej liczby osobno. Wylosujemy
jedną dużą liczbę, składającą się z pięciu znaków, które
będziemy musieli wpisać jedna za drugą, tworząc w ten sposób na
powrót jedną dużą liczbę. Jest to dobry kompromis między
trudnością zabawy a naszą niewyćwiczoną pamięcią. Nic nie stoi
jednak na przeszkodzie, aby zwiększyć ilość liczb do powtórzenia.
Potrzebne komponenty:
Generalnie będziemy
używać tych samych komponentów, co w poprzednich zabawach, różnice
będą tylko w sposobie ich oprogramowania. Na formie głównej
umieszczamy więc następujące komponenty, nadając im odpowiednie
nazwy:
komponent Nazwa
(Caption)
Edit1 (usuwamy
nazwę)
Button1 START
Button2 Sprawdź
Label1 Powtórz
liczby:
Label2 Wyniki
Label3 Poprawne:
Label4
Niepoprawne:
Label5 0
Label6 0
Label7 00000
A
oto interfejs programu i pełny kod zabawy:
unit
Unit1;
interface
uses
Windows,
Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,
StdCtrls;
type
TForm1
= class(TForm)
Edit1:
TEdit;
Button1:
TButton;
Button2:
TButton;
Label1:
TLabel;
Label2:
TLabel;
Label3:
TLabel;
Label4:
TLabel;
Label5:
TLabel;
Label6:
TLabel;
Label7:
TLabel;
procedure
Edit1KeyPress(Sender: TObject; var
Key: Char);
procedure
FormClose(Sender: TObject; var
Action: TCloseAction);
procedure
Button1Click(Sender: TObject);
procedure
Button2Click(Sender: Tobject);
private
{
Private declarations }
public
{
Public declarations }
end;
var
Form1:
TForm1;
WYNIK:
Integer; //zmienna przechowująca
liczby do powtórzenia
Poprawne:
Integer; //zmienna przechowująca
ilość poprawnych odpowiedzi
Niepoprawne:
Integer; //zmienna
przechowująca ilość niepoprawnych odpowiedzi
implementation
{$R
*.dfm}
//pozwól na wpisywanie
tylko liczb i Backpace w polu odpowiedzi
procedure
TForm1.Edit1KeyPress(Sender: TObject; var
Key: Char);
begin
if
not (Key in ['0'..'9',#8])
then
begin
Key:=#0;
ShowMessage('To
nie jest liczba'); //wyświetl
komunikat o błędzie
end;
end;
//przy zamykaniu
programu oceń uzyskane wyniki
procedure
TForm1.FormClose(Sender: TObject; var
Action: TCloseAction);
begin
//jeżeli
uzyskałeś więcej złych odpowiedzi lub tyle samo co dobrych
wtedy...
if
(Poprawne<Niepoprawne) or
(Poprawne=Niepoprawne) then
begin
ShowMessage('Musisz
jeszcze trochę potrenować'); //wyświetl
komunikat
end
//bez średnika
else
//w przeciwnym wypadku...
ShowMessage('Gratuluję!
Uzyskałeś dobry wynik'); //wyświetl
komunikat
end;
//gdy
naciśniesz przycisk START
procedure
TForm1.Button1Click(Sender: TObject);
begin
Edit1.Clear;
//wyczyść pole
edycyjne (Do podawania Odpowiedzi)
Randomize;
//uruchom
maszynę losującą
WYNIK:=Random(99999);
//wylosuj plik do powtórzenia od 0
do 99999
Label7.Caption:=IntToStr(WYNIK);
//wyświetl liczbę do powtórzenia
Label7.Update;
//uaktualnij
komponent label
Button2.Enabled:=false;
//zablokuj przycisk Sprawdź
Sleep(3000);
//czekaj 3
sekundy
Label7.Caption:='powtórz';
//zamiast liczby wyświetl napis
'powtórz'
Button2.Enabled:=true;
//odblokuj przycisk Sprawdź
Edit1.SetFocus;
//ustaw focus w
Polu do Odpowiedzi
end;
//gdy
naciśniesz przycisk Sprawdź
procedure
TForm1.Button2Click(Sender: TObject);
Label
KONIEC; //Etykieta do przechodzenia
w inne miejsce kodu
var
Odp:
String;
//zmienna przechowująca naszą odpowiedź
begin
Odp:=
Edit1.Text; //odczytaj podaną odpowiedź
i przypisz ją do zmiennej
if
Odp='' then //gdy
nie podano odpowiedzi monituj o błędzie
begin
ShowMessage('Wpisz
najpierw wynik'); //wyświetl
komunikat informujący
Edit1.SetFocus;
//ustaw
focus w Polu do Odpowiedzi
goto
KONIEC; //pomiń poniższy kod i przejdź od
razu na koniec procedury
end;
if
Odp=(IntToStr(WYNIK)) then
//jeżeli odpowiedź jest poprawna to ...
begin
ShowMessage('Bardzo
dobrze!'); //wyświetl
komunikat o poprawnej odpowiedzi
Label7.Caption:=
'00000:'; //wyczyść
działanie
Poprawne:=Poprawne
+ 1; //dodaj
punkt do poprawnych odpowiedzi
end
//bez średnika
else
//w przeciwnym wypadku ...
begin
ShowMessage('Niestety
źle'); //wyświetl komunikat o
złej odpowiedzi
Niepoprawne:=Niepoprawne
+ 1; //dodaj
punkt do niepoprawnych odpowiedzi
end;
Edit1.Clear;
//wyczyść pole do podawania Odpowiedzi)
Edit1.SetFocus;
//ustaw focus
w Polu do Odpowiedzi
Label5.Caption:=
IntToStr(Poprawne); //wyświetl ilość
poprawnych odpowiedzi
Label6.Caption:=
IntToStr(Niepoprawne); //wyświetl
ilość niepoprawnych odpowiedzi
KONIEC:
//etykieta do której przechodzi kod, gdy
ktoś nie wpisze żadnej liczby
end;
end.
Strona 1/5 Dalej >
Artykuł pochodzi z mojej książki pt. "Delphi w przykładach dla początkujących". Zapraszam na Stronę książki.
Ciekawe artykuły:
Zapoznaj się z innymi utworami. Przejdź do zakładki Spis artykułów.
- Zagadki logiczne i inne zagadki
- Gry matematyczne w Delphi
- Zabawy rozwijające pamięć 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