Өзіндік жұмысқа арналған тапсырмалар:
Форма бетіне ұшақ суретін салатын программа құрыңыз.
Форма бетіне жүзіп бара жатқан кеменің және тышқанды басқанда жұлдыздар салынатын программа құрыңыз.
Форманың бетінде анимацияларды көруге болатын қосымша құрыңыз.
№7 Зертханалық жұмыс
Тақырыбы: «Зердені тексеру» ойынын жобалау.
Зертханалық жұмыстың мақсаты: Delphi ортасында ойынды жобалау арқылы программалауға деген қызығушылықты тудырып, қосымшалар құруды үйрену.
Төменде (2.1.25-сурет) осы қосымшаның компоненттер орналастырылған форма терезесі келтірілген.
2.1.25-сурет. Компоненттер орналастырылған форма терезесі
Тапсырманы орындау алгоритмі:
Жаңа жоба ашып, пішінге Label1 (Standard беті), Edit1 (Standard беті), Button1 (Standard беті), Timer1 ( System беті) компоненттерін орналастырыңыздар.
Пішіннің Caption қасиетіне «Зердені тексеру», Button1 батырмасына «Бастау» мәндерін жазыңыз. Edit1-дің Техт қаситінің мәнін және Label1-дің Caption қасиетін тазалаңыз.
Edit1 компонентін Color қасиеті арқылы түсін пішіннің түсіне өзгертіп, Label1-дің үстіне орналастырыңдар.
Код терезесін ашып,
var
Form1: TForm1;
Implementation жолдарының астына келесі кодты жазыңыздар:
const
KC = 5; // сандардың разрядтылығы ( цифрлар саны)
LT = 10; // сандардың жалпы саны (сынақ ұзындығы)
var
numb: integer; // сыналушының есте сақтайтын саны
right: integer; // дұрыс есте сақталған сандардың жалпы саны
n: integer; // сандар счетчигі
{$R *.dfm}
//k – разрядты санды генерациялайды
function GetNumb(k: integer) : integer;
var
n: integer; // генерацияланатын сан
i: integer;
begin
// үлкеннен бастап процедура санды разряд бойынша генерациялайды
n:= Random(9)+1; // үлкен разряд нөл бола алмайды
// қалған разрядтар
for i := 1 to (k-1) do
n := n*10 + Random(10);
GetNumb := n;
end;
5. Пішінді ерекшелеп, обьектілер инспектооры терезесінің Events бетіндегі OnCreate оқиғасының FormCreate мәнін екі рет шертіп, пайда болған процедураның дайындамасының ішіне келесі кодты жазыңыз:
// пішінді құру
procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1.Visible := False; // Edit1 енгізу өрісін жасыру
Edit1.MaxLength := KC; // енгізуге болатын символдар саны
Label1.WordWrap := True; // келесі жолға сөздерді түсіруге рұқсат беру
Label1.Caption :=
'Казiр экранда сандар шыгады. ' +
'Сiздер сандарды есте сактап, оларды пернетактадан терiп,-дi басыныздар';
Button1.Caption := 'Бастау';
Timer1.Enabled := False; // таймер тоқтатылады
Timer1.Interval := 1000; // санды көрсету уақыты- 1 секунд
right := 0; // дұрыстарының саны
n := 0; // сандардың счетчигі
Randomize; // ГСЧ инициализациясы
end;
6. Button1 батырмасын екі рет шертіңіз. Пайда болған процедураның дайындамасына келесі кодты жазыңыз:
// "Бастау/Аяктау" батырмасын басу
procedure TForm1.Button1Click(Sender: TObject);
begin
if Button1.Caption = 'Аяктау' then
Form1.Close; // программа терезесін жабу
if Button1.Caption = 'Бастау' then
begin
Button1.Caption := 'Аяктау';
Button1.Visible := False; // батырманы жасыру
// Button1 батырмасы сынақ аяқталғаннан кейін қол жетімді болады
Label1.Caption := '';
Label1.Font.Size := 24; // Label1 өрісіндегі қаріптің өлшемі
Edit1.Font.Size := 24; // Edit1 өрісіндегі қаріптің өлшемі
// санды генерациялау және шығару
numb := GetNumb(KC);
Label1.Caption := IntToStr(numb);
Timer1.Enabled := True; // таймерді қосу
// сигналды таймерден өңдеу процедурасы санды өшіреді
end;
end;
7. Timer1 компонентін ерекшелеп, обьектілер инспекторы терезесінің Events бетіндегі OnTimer оқиғасының Timer1Timer мәнін екі рет шертіп, пайда болған процедураның дайындамасының ішіне келесі кодты жазыңыз:
// таймер оқиғасын өңдеу
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Timer1.Enabled := False; // таймерді тоқтату
Label1.Visible := False; // санды жасыру
Edit1.Visible := True; // Edit1 өрісін көрінетін ету
Edit1.SetFocus; // Edit1 өрісіне меңзерді орнату
end;
8. Edit1 компонентін ерекшелеп, обьектілер инспекторы терезесінің Events бетіндегі OnKeyPress оқиғасының Edit1KeyPress мәнін екі рет шертіп, пайда болған процедураның дайындамасының ішіне келесі кодты жазыңыз:
// Edit1 өрісіндегі батырманы басу
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var
igrok: integer; // сыналушы енгізген сан
begin
case Key of
'0'..'9',#8: ; // "0"-"9", батырмалары
#13: // батырмасы
begin
igrok := StrToInt(Edit1.Text);
if (igrok = numb)
then right := right + 1;
n := n + 1; // сандар счетчигі
Edit1.Text := '';
Edit1.Visible := False; // Edit1 өрісін жасыру
if n < LT then
begin
numb := GetNumb(KC); // келесі санды генерациялау
Label1.Caption := IntToStr(numb); // санды көрсету
Label1.Visible := True;
Timer1.Enabled := True; // таймерді қосу
end
else
begin
// сынақ аяқталды
// нәтижесін шығару
Label1.Font.Size := 10;
Label1.Caption := 'Натижесi:' + #13 +
'Сандар корсетiлдi: ' + IntToStr(LT) + #13 +
'Дурысы: ' + IntToStr(right);
Label1.Visible := True;
Button1.Visible := True; // "Аяқтау" батырмасын көрсету
end;
end;
else Key := Chr(0);
end;
end;
end.
9. Жобаны орындауға жіберіп, зердеңізді тексеріп көріңіз. 2.1.26-суретте «Зердені тексеру» ойынының шыққан нәтижесінің терезесі келтірілген.
2.1.26-сурет. Қосымшаның шыққан нәтижесі
Достарыңызбен бөлісу: |