Oto pełny kod programu:
unit
Unit1;
interface
uses
Windows,
Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,
StdCtrls, MmSystem, MPlayer;
type
TForm1
= class(TForm)
Edit1:
TEdit;
Button1:
TButton;
Button2:
TButton;
MediaPlayer1:
TMediaPlayer;
Label1:
TLabel;
Label2:
TLabel;
Label3:
TLabel;
Label4:
TLabel;
Label5:
TLabel;
procedure
Button1Click(Sender: TObject);
procedure
FormCreate(Sender: TObject);
procedure
FormClose(Sender: TObject; var
Action: TCloseAction);
procedure
Edit1KeyPress(Sender: TObject; var
Key: Char);
procedure
Button2Click(Sender: TObject);
procedure
Wylosuj_i_odtworz;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1:
TForm1;
WYNIK:
Integer; //zmienna przechowująca
wynik
Poprawne:
Integer; //zmienna przechowująca
ilość poprawnych odpowiedzi
Niepoprawne:
Integer; //zmienna
przechowująca ilość niepoprawnych
odpowiedzi
Ilosc_plikow:
Integer; //zmienna przechowująca ilość
plików w katalogu
Katalog:
String; //zmienna przechowująca
ścieżkę dostępu do katalogu
implementation
{$R
*.dfm}
//przy uruchomieniu
programu wyzeruj punktację
procedure
TForm1.FormCreate(Sender: TObject);
begin
Poprawne:=0;
//wyzeruj ilość poprawnych
odpowiedzi
Niepoprawne:=0;
//wyzeruj ilość niepoprawnych
odpowiedzi
Label4.Caption:=
'0'; //wyświetl
'0' poprawnych odpowiedzi
Label5.Caption:=
'0'; //wyświetl
'0' niepoprawnych odpowiedzi
end;
//przy
zamykaniu programu oceń uzyskane wyniki
procedure
TForm1.FormClose(Sender: TObject; var
Action: TCloseAction);
begin
if
(Poprawne<Niepoprawne) or
(Poprawne=Niepoprawne) then
begin
ShowMessage('Musisz
jeszcze trochę potrenować');
end
//bez średnika
else
//w przeciwnym wypadku...
ShowMessage('Gratuluję!
Uzyskałeś dobry wynik');
end;
//pozwól na wpisywanie
tylko liczb, minusa i Backpace w polu odpowiedzi
procedure
TForm1.Edit1KeyPress(Sender: TObject; var
Key: Char);
begin
if
not (Key in ['0'..'9',#45,#8])
then
begin
Key:=#0;
ShowMessage('To
nie jest liczba'); //wyświetl
komunikat o błędzie
end;
end;
//
Procedura losująca i odtwarzająca plik dźwiękowy
var
Plik:
Integer; //zmienna przechowująca numer
pliku do odtworzenia
procedure
TForm1.Wylosuj_i_odtworz;
begin
Randomize;
Plik:=
Random(Ilosc_plikow); //wylosuj plik z
katalogu
MediaPlayer1.FileName:=
Katalog+IntToStr(Plik)+'.mp3'; //odtwórz
plik
MediaPlayer1.Open;
//otwórz pliku
MediaPlayer1.Wait:=True;
//czekaj aż skończy się wybrzmiewać
plik
MediaPlayer1.Play;
//odtwórz plik
end;
//gdy
naciśniesz przycisk START
procedure
TForm1.Button1Click(Sender: TObject);
var
Liczba1:
Integer; //zmienna przechowująca
pierwszą liczbę
Liczba2:
Integer; //zmienna przechowująca
drugą liczbę
Dzialanie:
Integer; //zmienna pomocnicza do
losowania znaku działania
Numer_pliku:
Integer; //zmienna przechowująca numer
pliku 'Ile jest'
Znak:
String; //zmienna
przechowująca znak działania
Sciezka1:
String; //zmienna
przechowująca ścieżkę dostępu do pliku
dźwiękowego
Sciezka2:
String; //zmienna
przechowująca ścieżkę dostępu do pliku dźwiękowego
Sciezka3:
String; //zmienna
przechowująca ścieżkę dostępu do pliku dźwiękowego
Sciezka4:
String; //zmienna
przechowująca ścieżkę dostępu do pliku dźwiękowego
begin
Edit1.Clear;
//wyczyść pole edycyjne
(Do podawania Odpowiedzi)
Randomize;
//uruchom
maszynę losującą
Liczba1:=Random(21);
//losuj pierwszą liczbę
Liczba2:=Random(21);
//losuj drugą liczbę
Numer_pliku:=Random(5);
//wylosuj numer pliku Ile jest
Dzialanie:=Random(3);
//losuj znak działania
matematycznego
case
Dzialanie of
//gdy zostanie wylosowana dana liczba to...
0:
WYNIK:= Liczba1+Liczba2; //...wykonaj
dodawanie
1:
WYNIK:= Liczba1-Liczba2; //...wykonaj
odejmowanie
2:
WYNIK:= Liczba1*Liczba2;
//...wykonaj mnożenie
end;
if
Dzialanie=0 then
Znak:=
'+';
//jeżeli wylosowano dodawanie to pokaz znak '+'
if
Dzialanie=1 then
Znak:=
'-'; //jeżeli
wylosowano odejmowanie to pokaz znak '-'
if
Dzialanie=2 then
Znak:=
'x';
//jeżeli wylosowano mnożenie to pokaz znak 'x'
//przypisz do zmiennych
Sciezka ścieżki dostępu do plików
Sciezka1:='c:\Gry\Policz
ile jest\'+IntToStr(Numer_pliku)+'.wav';
Sciezka2:=
'c:\Gry\WSPOLNE\Liczby i
znaki\'+IntToStr(Liczba1)+'.wav';
Sciezka3:=
'c:\Gry\WSPOLNE\Liczby i znaki\'+Znak+'.wav';
Sciezka4:=
'c:\Gry\WSPOLNE\Liczby i
znaki\'+IntToStr(Liczba2)+'.wav';
PlaySound(PChar(Sciezka1),0,SND_FILENAME);
//odtwórz plik Ile jest
PlaySound(PChar(Sciezka2),0,SND_FILENAME);
//odtwórz plik 1 liczba
PlaySound(PChar(Sciezka3),0,SND_FILENAME);
//odtwórz
plik Znak działania
PlaySound(PChar(Sciezka4),0,SND_FILENAME);
//odtwórz plik 2 liczba
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 miejsca kodu
var
Odp:
String; //zmienna
przechowująca naszą odpowiedź
begin
Odp:=
Edit1.Text; //odczytaj podana odpowiedz i
przypisz ja do zmiennej
if
Odp='' then
//gdy nie podano odpowiedzi monituj o wpisaniu wyniku
begin
PlaySound('c:\Gry\WSPOLNE\Komunikaty\WpiszLiczbe.wav',0,SND_FILENAME);
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
Ilosc_plikow:=7;
//liczba plików
w katalogu
Katalog:='c:\Gry\WSPOLNE\Komunikaty\Dobrze\';
//ścieżka dostępu
Wylosuj_i_odtworz;
//włącz procedurę
odtwarzającą plik
Poprawne:=Poprawne
+ 1; //dodaj
punkt do poprawnych odpowiedzi
end
//bez
średnika
else
//w przeciwnym wypadku ...
begin
Ilosc_plikow:=8;
//liczba plików
w katalogu
Katalog:='c:\Gry\WSPOLNE\Komunikaty\Zle\';
//ścieżka dostępu
Wylosuj_i_odtworz;
//włącz procedurę
odtwarzającą plik
Niepoprawne:=Niepoprawne
+ 1; //dodaj
punkt do niepoprawnych odpowiedzi
end;
Edit1.Clear;
//wyczyść
pole do podawania Odpowiedzi
Edit1.SetFocus;
//ustaw focus w
Polu do Odpowiedzi
Label4.Caption:=
IntToStr(Poprawne); //wyświetl ilość
poprawnych odpowiedzi
Label5.Caption:=
IntToStr(Niepoprawne); //wyświetl
ilość niepoprawnych odpowiedzi
KONIEC:
//etykieta do której przechodzi kod, gdy
ktoś nie wpisze żadnej liczby
end;
end.
end.
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
- Zabawy matematyczne w Delphi
- Zabawy rozwijające pamięć w Delphi
- Przechwyt klawiatury w Delphi
- Zakładanie hooka w Delphi- metoda Short Cut
Zapoznaj się z innymi utworami. Przejdź do zakładki Spis artykułów.
Brak komentarzy:
Prześlij komentarz