GRAFIKA|banner reklamowy
m m m m m m m m m
(X)HTML/XML [12]
Asembler [0]
ASP/ASP+ [18]
Bazy danych [0]
C/C++/C# [3]
CSS [3]
Delphi [25]
Grafika [2]
Inne [19]
Java [6]
Javascript [4]
Linux [5]
Pascal [18]
PHP [20]
Python [7]
SEO [3]
SSI [1]
Windows [1]

Dodaj artykuł
Dodaj news
GRAFIKA|endramki
Reklama  
sprzątanie warszawa psychiatra warszawa materacowe poduszki ogrody fontanny
GRAFIKA|endramki
Statystyki  
Użytkownicy: 0
Goście: 13
Ukryci: 0
Boty: 0
Wszyscy: 8971

Newsów: 137
Artykułów: 148
GRAFIKA|endramki
GRAFIKA|prztlo
GRAFIKA|gora
GRAFIKA|celewo Artykuły GRAFIKA|ceprawo
GRAFIKA|Artykuł    Test pisania na klawiaturze   22:21:26 29.05.2005   @Gujet   

Cześć.
W tym artykule pomogę Ci napisać program, który będzie służył do nauki pisania na klawiaturze. Nie będzie to może "Mistrz Klawiatury", ale na początek wystarczy:)
Co dokładnie będzie robił program? Losował znak i wyświetlał go na ekranie. Kiedy naciśniemy jakiś klawisz program sprawdzi, czy to co nacisnęliśmy równe jest temu, co wylosował komputer, po czym wylosuje następny znak. I tak w koło aż do upłynięcia 60 sekund. Wtedy program wystawi nam ocenę.
"Zaczynajmy, czas dokończy" - no, nie zrozumcie tego zbyt dokładnie:)

Umieść na formie: przycisk, gauge, timer i label. Nazwij je kolejno: rozp_test, postep, timer i...l1 :) Właściwość enabled komponentu timer ustaw na false. W ten sposób komponent nie będzie wykonywał swojego zadania w momencie uruchomienia programu, tylko wtedy, kiedy mu to rozkażemy. Właściwość Interval timera ustaw na 1000. Aha, zadeklaruj publiczne zmienne:

var czas :byte; // ile czasu do końca
l_znak :byte; // liczba poprawnie wciśnietych znaków
wyl_znak :integer; // numer wylosowanego znaku

Dobra, kilknij dwukrotnie na timer i uzupełnij prockę następująco:
begin
czas:=czas-1; //1
postep.progress:=czas; //2
if czas=0 then //3
begin
timer.Enabled:=false; //4
case l_znak of
57..250:messagebox(handle,'6','',MB_OK); //5
50..56 : messagebox(handle,'5','',MB_OK);
41..49 : messagebox(handle,'4','',MB_OK);
27..40 : messagebox(handle,'3','',MB_OK);
18..26 : messagebox(handle,'2','',MB_OK);
0..17 : messagebox(handle,'1','',MB_OK);
end;
rozp_test.enabled:=true; //6
end;
end;

//1-zmniejszy czas o jeden
//2-pokaże na pasku postępu ile zostało czasu
//3-jesli czas się skończy rozpocznie wystwianie oceny
//4-wyłączy timer
//5-jeżeli liczba poprawnie wpisanych znaków waha się między 57 z 250 (ciekawe kto tyle napisze:)), to program wyświetli okienko z oceną celującą. Reszta analogicznie.
//6-przycisk służący do rozpoczęcia testu stanie się aktywny

Teraz weźmy się za samo rozpoczęcie testu. Procedurę onClick przycisku uzupełnij tak:
begin
czas:=60;
postep.progress:=czas;
randomize;
wyl_znak:=random(94)+33; //1
l1.Caption:=chr(wyl_znak); //2
rozp_test.Enabled:=false; //3
timer.Enabled:=true; //4
end;

//1-losuje znak, przedział jest ustwiony taki a nie inny, bo chcemy, żeby program losował tylko widoczne znaki, a nie np. F4, Alt...
//2-na komponencie label wypisujemy wylosowany znak. funkcja chr() zamieia numer znaku na string np. chr(74) zwraca 'J'.
//3-ustawia przycisk na nieaktywny. Jeśli tego nie zrobimy, to program nie będzie działał jak należy. Znaczy się są inne metody, ale ja ich nie znam:(
//4-włącza pomiar czasu

Teraz dobierzemy się do zdarzenia onKeyPress formularza. zaznacz formę i na Object Inspectorze na zakładce Events wybierz onKeyPress i kliknij dwukrotnie na białe pole obok. Procedurę uzupełnij następująco:
begin
if string(key)=chr(wyl_znak) then l_znak:=l_znak+1; //1
wyl_znak:=random(94)+33; //2
l1.Caption:=chr(wyl_znak); //3
end;

//1-Uff...jak to wytłumaczyć? Ok, zmienna Key (to co nacisnęliśmy) jest typu Char,a wyl_znak typu integer. Jak dobrze wiesz, żeby je poróbnać muszą one być tego samego typu. Trzeba je więc skonwertować np. do typu string. Tak więc funkcja string() konwertuje typ Char do..string:) Funkcję chr() już omówiłem. Więc program sprwadzi czy te dwie zmienne są sobie równe, jeśli tak, to zwiększy liczbę poprawnie wciśniętych znaków o jeden.
//2-wylosuje znak
//3-napisze go na etykiecie tekstowej.

Dobrze, teraz kilknij dwukrotnie na formularz i wpisz:
begin
czas:=60;
l_znak:=0;
end;
Ta procka po prostu nadaje odpowiednie (początkowe) wartości zmiennym.

Teraz możesz już uruchomić program. Pozostawia on wiele do życzenia np. na pasku postępu wyświetlane są procenty (właściwość ShowText). Ale chodziło mi tylko o napisanie sprwanej aplikacji. Reszta nalezy do Was. Można tu dodać wiele rzeczy np.:
- rekord
- informację o liczbie poprwnie wpisanych znaków
...i tak dalej w tym rodzaju.
To by było na tyle...uczcie się szybko Delphi, bo podobno "Punks are dead, We are the next" :)
Gujet (gujet@o2.pl)

Komentarzy: 0  |  Głosuj (1, 2, 3, 4, 5, 6)  |  Ocena: 3.43   |   Czytane: 2849
GRAFIKA|dol
GRAFIKA|celewo Komentarze GRAFIKA|ceprawo
Musisz się zalogować aby mieć możliwość komentowania

GRAFIKA|dol
GRAFIKA|prztlo
Nie jesteś zalogowany?
Zaloguj się!
Nie masz konta?
Zarejestruj się!
GRAFIKA|endramki
  Linki
GRAFIKA|endramki
  Reklama
GRAFIKA|endram
Copyright © p-zone.pl