Strony

wtorek, 2 grudnia 2014

Zabawy rozwijające pamięć w Delphi cz 3

Powtórz litery




     Przedstawiona tu zabawa w założeniach podobna jest do tej, którą prezentowaliśmy poprzednio (Powtórz liczby). W obu chodzi o to, aby powtórzyć ciąg znaków, jakie program dla nas wygeneruje. Pomimo tego podobieństwa, użycie liter jako znaków do odgadnięcia implikuje użycie bardziej skomplikowanej formy kodu. Uwarunkowane jest to naturą tychże znaków. W przypadku poprzedniej zabawy, znakami tymi były liczby, więc program -jako maszyna matematyczna- nie miał problemu z ich obróbką. Wystarczyło wylosować jedną liczbę pięcioznakową, aby spełnić nasze oczekiwanie. W sytuacji gdy mamy do czynienia z literami (a więc znakami niematematycznymi), program nie jest w stanie sam od siebie niczego wygenerować. Musimy mu z poziomu kodu zaimplementować jakiś zbiór znaków (w tym przypadku liter), aby mógł na nim dokonywać działań. Poprzez swoje funkcje Delphi zaczyna traktować te znaki w sposób matematyczny, pamiętając jednak, że są to znaki typu string.



Oto peny 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 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: String;               //zmienna przechowująca litery do odgadnięcia

Poprawne: Integer;           //zmienna przechowująca ilość poprawnych odpowiedzi

Niepoprawne: Integer;       //zmienna przechowująca ilość niepoprawnych odpowiedzi



implementation



{$R *.dfm}





                                 //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);

const

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


var

Litera1: String;               //zmienna przechowująca pierwszą literę

Litera2: String;               //zmienna przechowująca drugą literę

Litera3: String;               //zmienna przechowująca trzecią literę

Litera4: String;               //zmienna przechowująca czwartą literę

Litera5: String;               //zmienna przechowująca piątą literę

Litera6: String;               //zmienna przechowująca szóstą literę


begin

Edit1.Clear;                    //wyczyść pole edycyjne (Do podawania Odpowiedzi)

Randomize;                                           //uruchom maszynę losującą

Litera1:= Tablica[Random(23)+1];            //wylosuj 1 literę

Litera2:= Tablica[Random(23)+1];            //wylosuj 2 literę

Litera3:= Tablica[Random(23)+1];            //wylosuj 3 literę

Litera4:= Tablica[Random(23)+1];            //wylosuj 4 literę

Litera5:= Tablica[Random(23)+1];            //wylosuj 5 literę

Litera6:= Tablica[Random(23)+1];            //wylosuj 6 literę

WYNIK:= (Litera1+Litera2+Litera3+Litera4+Litera5+Litera6);

                                              //zapisz wylosowane litery do zmiennej globalnej



Label2.Caption:=WYNIK;                        //wyświetl liczbę do powtórzenia

Label2.Update;                                       //uaktualnij komponent label

Button2.Enabled:=false;                         //zablokuj przycisk Sprawdź

Sleep(3000);                                          //czekaj 3 sekundy

Label2.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);

var

Odp: String;                                     //zmienna przechowująca naszą odpowiedź



begin

   Odp:= Edit1.Text;                 //odczytaj podaną odpowiedź i przypisz ją do zmiennej



if Odp=WYNIK then                         //jeżeli odpowiedź jest poprawna to ...

   begin

      ShowMessage('Bardzo dobrze!');   //wyświetl komunikat o poprawnej odpowiedzi

      Label2.Caption:= '------';                //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



Label6.Caption:= IntToStr(Poprawne);         //wyświetl ilość poprawnych odpowiedzi

Label7.Caption:= IntToStr(Niepoprawne);     //wyświetl ilość niepoprawnych odpowiedzi

end;

end.




                  < Wstecz    1...3/5    Dalej >

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

poradnik programowania Delphi



Brak komentarzy:

Prześlij komentarz