Створення багатопотокових ужитків

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
КН
Кафедра:
Не вказано

Інформація про роботу

Рік:
2011
Тип роботи:
Лабораторна робота
Предмет:
Delphi

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки України Національний університет «Львівська політехніка» / Лабораторна робота на Delphi №7. Створення багатопотокових ужитків Створення багатопотокових ужитків Мета роботи: Вивчення можливостей системи програмування Delphi 7 по створенню багатопотокових ужитків. Завдання Створити проект - модель гри "Рухомий хробак". Переміщення хробака здійснюється в основному модулі, для відображення появи маленьких кульок, які з’їдає хробак, використати окремий потік. unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Unit2, StdCtrls, ExtCtrls; type TForm1 = class(TForm) food: TShape; s1: TShape; s2: TShape; s3: TShape; procedure FormCreate(Sender: TObject); procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); private { Private declarations } public { Public declarations } end; var Form1: TForm1; Thread : Time; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin Thread:=Time.Create(True); Thread.FreeOnTerminate:=true; Thread.Priority:=tpTimeCritical; Thread.Resume; score:=0; end; procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if (key=vk_left) then begin dx:=-1; dy:=0; end; if (key=vk_right) then begin dx:=1; dy:=0; end; if (key=vk_up) then begin dx:=0; dy:=-1; end; if (key=vk_down) then begin dx:=0; dy:=1; end; end; end. unit Unit2; interface uses Classes, SysUtils, Dialogs; type Time = class(TThread) private procedure Myfood; procedure snake; procedure eat; procedure crash; protected procedure Execute; override; end; var dx,dy,oldx1,oldy1,oldx2,oldy2,score:integer; implementation uses Unit1; procedure Time.Myfood(); begin Repeat Form1.food.Top:=(Random(11)*25); Form1.food.Left:=(Random(11)*25); until ((Form1.food.Top<>Form1.s1.Top) and (Form1.food.Left<>Form1.s1.Left)) or ((Form1.food.Top<>Form1.s2.Top) and (Form1.food.Left<>Form1.s2.Left)) or ((Form1.food.Top<>Form1.s3.Top) and (Form1.food.Left<>Form1.s3.Left)); end; procedure Time.snake(); begin oldx1:=Form1.s1.Left; oldy1:=Form1.s1.Top; Form1.s1.Top:=Form1.s1.Top+dy*25; Form1.s1.left:=Form1.s1.left+dx*25; if ((dx=-1) and (dy=0)) then begin oldx2:=Form1.s2.Left; oldy2:=Form1.s2.Top; Form1.s2.Left:=oldx1; Form1.s2.Top:=oldy1; Form1.s3.Left:=oldx2; Form1.s3.Top:=oldy2; end; if (dx=1) and (dy=0) then begin oldx2:=Form1.s2.Left; oldy2:=Form1.s2.Top; Form1.s2.Left:=oldx1; Form1.s2.Top:=oldy1; Form1.s3.Left:=oldx2; Form1.s3.Top:=oldy2; end; if (dx=0) and (dy=1) then begin oldx2:=Form1.s2.Left; oldy2:=Form1.s2.Top; Form1.s2.Left:=oldx1; Form1.s2.Top:=oldy1; Form1.s3.Left:=oldx2; Form1.s3.Top:=oldy2; end; if (dx=0) and (dy=-1) then begin oldx2:=Form1.s2.Left; oldy2:=Form1.s2.Top; Form1.s2.Left:=oldx1; Form1.s2.Top:=oldy1; Form1.s3.Left:=oldx2; Form1.s3.Top:=oldy2; end; sleep(500); end; procedure Time.eat(); begin if ((Form1.s1.Top=Form1.food.Top) and (Form1.s1.Left=Form1.food.Left)) then Begin score:=score+1; Myfood(); end; end; procedure Time.crash(); begin if (Form1.s1.Top<0) or (Form1.s1.Top>300) or (Form1.s1.Left<0) or (Form1.s1.Left>300) then begin MessageDlg('You crashed. Your score = '+inttostr(score), mtError,[mbOk], 0); Form1.Close(); end; end; procedure Time.Execute; begin repeat Synchronize(Snake); Synchronize(Crash); Synchronize(eat); until Terminated; end; end.
Антиботан аватар за замовчуванням

20.02.2013 19:02-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!