15 практикалык жумыс. Программалау
Скачать 40.5 Kb.
|
Ф-ОБ-050/049 №15 - практикалық жұмыс Сабақ тақырыбы: Объектілерді қозғалысқа келтіру. Ойындарды программалау. Сабақ мақсаты: Delphi ортасында негізгі графиктік мүмкіндіктерді қолдана отырып объектіні қозғалысқа келтіру принципін, ойындарды программалауды үйрету. Қарастырылатын негізгі мәселелер: Объектілерді қозғалысқа келтіру. Анимация.Өзіндік жұмысНегізгі ұғымдар.Объектілерді қозғалысқа келтіру. Анимация. Объектіні қозғалысқа келтіру алгоритмінің негізі мынада:Графиктік мүмкіндіктерді пайдалана отырып объектінің бейнесі салынады. Формада объектінің бастапқы орналасуы немесе базалық координаттары анықталады.Объектіні жаңа координатаға көшіреміз де, алдыңғы объектіні форма түсімен бояймыз. Объектіні форма бетінде жылжыта отырып, белгіленген бағытта қозғалысқа келтіреміз. Объектіні қозғалысқа келтіру принципін ойындарды программалауда қолдануға болады.Мысал. Форма бетінде сурет (объект) жылжиды. Біздің мақсатымыз тышқанның сол жақ кнопкасымен суретті шерте отырып жоғарғы мәнді ұпай жинау. Мысалы, атыс саны 10 болса, оның нешеуі тиетінін анықтауымыз керек. Delphi-ді жүктейміз. Формаға Label1, button1, Timer1 компоненттерін орналастырамыз. Label1 (Caption) тақырыбына есеп шартын жазамыз. Button1 компонентінің Onclick оқиғасы Label1, button1 компоненттерін көрінбейтін қылады және Timer-ді қосады. procedure TForm1.Button1Click(Sender: TObject); begin Label1.Visible:=false; Button1.Visible:=False; Timer1.Enabled:=True; end; S_f процедурасында объект суретін саламыз: procedure TForm1.S_f(x,y:integer); begin with Canvas do begin Pen.Color:=clblack; Brush.Color:=clYellow; Ellipse(x,y,x+30,Y+30); Ellipse(x+9,y+10,x+11,Y+13); Ellipse(x+19,y+10,x+21,Y+13); Arc(x+4,y+4,x+26,y+26,x,y+20,x+30,y+20) end; end; EF процедурасында суретті форма түсімен бояймыз, яғни сурет экранда көрінбейді. procedure TForm1.EF(x,y:integer); begin with Canvas do begin Pen.Color:=clBtnFace; Brush.Color:=clBtnFace; Ellipse(x,y,x+30,Y+30); end; end; Timer1 компонентінің OnTimer оқиғасы кездейсоқ сандар генераторы арқылы объектінің жаңа координатасын анықтайды. procedure TForm1.Timer1Timer(Sender: TObject); begin EF(fx,fy); fx:=Random(ClientWidth-30); fy:= Random(ClientHeight-30); S_F(fx,fy); end; Форманың OnCreate оқиғасында объектінің бастапқы координатасы анықталады және кездейсоқ сандар генераторы реализацияланады. procedure TForm1.FormCreate(Sender: TObject); begin fx:=100; fy:=100; randomize; end; Форманың OnMouseDown оқиғасында тышқанның сол жақ кнопкасымен суретті шерте отырып ұпай жинаймыз және 10 атыстың нәтижесін көрсетеді. procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin inc(n); if(x>fx) and(x then inc(p); if n=10 then begin Timer1.Enabled:=false; ShowMessage('10 атыс. тиг. '+inttostr(p)+'.'); EF(fx,fy); Label1.Visible:=True; Button1.Visible:=True; n:=0;p:=0; end; end; Оқиғалар кодының модулін және проектті Lab13 бумасына сақтаңыз және қосымшаны орындауға жіберіңіз. ІІ. Тапсырма:1. Формаға қозғалатын объектісі бар қандайда бір көріністің (мысалы, теңіздегі кеме, автокөлік қозғалысы, мультипликациялық элементтер ) суретін салыңыз. 2. «Теңіздегі ұрыс(морской бой)» ойынының программасын құрыңыз. Қолданылатын әдебиеттер: Архангельский А.Я.. Программирование в DELPHI. 7. -М.:ООО “Бином- Пресс”,2005. - 1152с. Б.Д. Сыдықов, Ш.Т.Шекербекова, Н.И.Культин - Delphi ортасында бағдарламалау практикумы. Алматы, 2005 Н. И. Культин – Delphi в задачах и примерах. – СПб.: БХВ – Санкт-Петербург, 1999. |