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

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

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

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

Рік:
2009
Тип роботи:
Лабораторна робота
Предмет:
Об’єктно-орієнтоване програмування
Група:
КН-32

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

Міністерство освіти та науки України Національний університет “Львівська Політехніка” Кафедра АСУ Лабораторна робота №3 з предмету Об'єктно-орієнтоване програмування на тему: Створення багатопотокових ужитків Мета роботи: Вивчення можливостей системи програмування Delphi 5 по створенню багатопотокових ужитків. Порядок роботи: Користуючись рекомендованою літературою до лабораторної роботи створити відповідний проект. Змінити текст програми так, щоб він відповідав індивідуальному завданню. Оформити звіт для захисту лабораторної роботи за зразком назва роботи мета роботи порядок роботи короткі теоретичні відомості алгоритм розв’язку задачі тексти відповідних модулів проекту аналіз отриманих результатів та висновки Індивідуальне завдання №12 Створити проект - модель гри "Пакмен". Переміщення кульки-Пакмена здійснюється в основному модулі, для відображення появи маленьких кульок, які з’їдає Пакмен, використати окремий потік. Тексти модулів проекту. //-------Progect1.dpr------- program Project1; uses Forms, Unit1 in 'Unit1.pas' {Form1}; {$R *.res} begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end. //------Unit1.pas--------- unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls; type TForm1 = class(TForm) Shape1: TShape; Shape2: TShape; Shape3: TShape; Timer1: TTimer; Timer2: TTimer; procedure FormCreate(Sender: TObject); procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure Timer1Timer(Sender: TObject); procedure Timer2Timer(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} uses Unit2; var MyThread:TMyThread; { MyThread1:TMyThread1; } procedure TForm1.FormCreate(Sender: TObject); begin MyThread:=TMyThread.Create(true); MyThread.FreeOnTerminate:=true; MyThread.Priority:=tpTimeCritical; MyThread.Resume; 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; procedure TForm1.Timer1Timer(Sender: TObject); begin a:=1+random(3); case a of 1: begin dx1:=-1; dy1:=0; end; 2: begin dx1:=1; dy1:=0; end; 3: begin dy1:=-1; dx1:=0; end; 4: begin dy1:=1; dx1:=0; end; end; end; procedure TForm1.Timer2Timer(Sender: TObject); begin b:=1+random(3); case b of 1: begin dx2:=-1; dy2:=0; end; 2: begin dx2:=1; dy2:=0; end; 3: begin dy2:=-1; dx2:=0; end; 4: begin dy2:=1; dx2:=0; end; end; end; end unit Unit2; interface uses Classes,sysutils; type TMyThread = class(TThread) private procedure move; procedure move1; procedure move2; { Private declarations } protected procedure Execute; override; end; var dx,dy,dx1,dy1,dx2,dy2,a,b:integer; implementation Uses Unit1; procedure TMyThread.move; begin Form1.Shape1.Top:=Form1.Shape1.Top+dy; Form1.Shape1.left:=Form1.Shape1.left+dx; if form1.Shape1.Left=440 then begin dx:=-1; dy:=0; end; if form1.Shape1.Left=0 then begin dx:=1; dy:=0; end; if form1.Shape1.top=440 then begin dy:=-1; dx:=0; end; if form1.Shape1.top=0 then begin dy:=1; dx:=0; end; end; procedure TMyThread.Execute; begin dx:=0; dy:=0; repeat Synchronize(Move); Synchronize(Move1); Synchronize(Move2); until Terminated; end; procedure TMyThread.move1; begin Form1.Shape2.Top:=Form1.Shape2.Top+dy1; Form1.Shape2.left:=Form1.Shape2.left+dx1; if form1.Shape2.Left>=440 then begin dx1:=-1; dy1:=0; end; if form1.Shape2.Left<=0 then begin dx1:=1; dy1:=0; end; if form1.Shape2.top>=440 then begin dy1:=-1; dx1:=0; end; if form1.Shape2.top<=0 then begin dy1:=1; dx1:=0; end; sleep(0); end; procedure TMyThread.move2; begin Form1.Shape3.Top:=Form1.Shape3.Top+dy2; Form1.Shape3.left:=Form1.Shape3.left+dx2; if form1.Shape3.Left>=440 then begin dx2:=-1; dy2:=0; end; if form1.Shape3.Left<=0 then begin dx2:=1; dy2:=0; end; if form1.Shape3.top>=440 then begin dy2:=-1; dx2:=0; end; if form1.Shape3.top<=0 then begin dy2:=1; dx2:=0; end; sleep(1); end; end. Вигляд форми:  Керування Пакменом (жовта кулька) здійснюється кнопками vk_up , vk_down , vk_left , vk_right. Висновок. На цій лабораторній роботі я вивчив можливості системи програмування Delphi 5 по створенню багатопотокових ужитків.
Антиботан аватар за замовчуванням

01.01.1970 03:01-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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