15.04.2011, 16:26 | #1 (permalink) |
Sparkling
Регистрация: 29.09.2010
Сообщений: 98
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 93
|
Паскаль
Нужно добавить в программу: а) одинаковые по названию, но разные по исполнению свойства для родственных объектов (здесь демоны-миша и монстры-вася) б) наделить экземпляры объектов 2-мя различными свойствами. (напр. подпрыгнуть или кричит "Караул" или воспроизведение какого-то звука, типа "сирены") Программа выполняется так: включаем, появляется жёлтый монстр, клавишами двигается в любую сторону, нажимаем Esc, появляется зелёный демон, при наезде демона на монстра, монстр съедается. Свойства думаю выглядеть должно примерно, когда демон на монстра наехать должен, может его перепрыгнуть, а может остановится и сказать "о-оу" или ещё что. =) Текст программы: Код:
program dragging; uses graph, crt, monsters; var Vasia : monstr; Misha : daemon; x,y : integer; gd, gm : integer; begin gd := detect; initgraph(gd, gm, 'c:/BP/BIN'); if graphresult <> grOk then begin writeln('ошибка инициализации графики'); readln; exit end; Vasia.init(200,200,10,8); Vasia.draw; while vasia.drag do;Misha.init(400, 400, 10, 8 ,2); Misha.draw; while misha.drag do; end. Код:
unit monsters; interface uses graph,crt; type monstr = object constructor init(x_, y_, health_, ammo_ : word); procedure attack ; virtual ; procedure draw ; virtual ; procedure erase ; virtual ; procedure hit; procedure move(x_,y_: word) ; function drag :boolean;virtual; private x, y : word; health, ammo : word; color : word; end; daemon = object (monstr) constructor init(x_, y_, health_, ammo_ ,magic_: word); procedure attack ; virtual ; procedure draw ; virtual ; procedure erase ; virtual ; procedure wizardry; private magic : word; end; implementation {**************************realize method monster*********} constructor monstr.init(x_,y_,health_,ammo_: word); begin x:= x_; y:=y_; health:= health_; ammo:=ammo_; color:=yellow; end; {*****************monstr.attack**********} procedure monstr.attack; begin if ammo = 0 then exit; dec(ammo); setcolor(color); outtextXY(x+15,y,'ba-bax!'); end; {***********monstr.draw********} procedure monstr.draw; begin setcolor(color); outtextXY(x,y,'@'); end; {****************monstr.erase***********} procedure monstr.erase; begin setcolor(black); outtextXY(x,y,'@');outtextXY(x+15,y,'ba-bax!'); end; {***********monstr.hit************} procedure monstr.hit; begin if health=0 then exit; dec(health); if health = 0 then begin color := red; draw;exit;end; attack; end; {************************monstr.move*************} procedure monstr.move(x_,y_:word); begin if health = 0 then exit; erase; x:=x_;y:=y_; draw; end; {*********************monster.drag**************} function monstr.drag : boolean; var key : char; dx,dy : integer; step : integer; begin step := 5; key := readkey; if key = chr(0) then key := readkey; dx := 0; dy := 0; case ord(key) of 72 : dy := -step; 75 : dx := -step; 77 : dx := step; 80 : dy := step; 27 : begin drag := false; exit end; end; monstr.move(x + dx, y + dy); drag := true; end; {realize method object deamon} constructor daemon.init ( x_,y_,health_,ammo_,magic_:word); begin inherited init ( x_,y_,health_,ammo_); color:=green; magic:=magic_; end; {daemon.attack} procedure daemon.attack; begin if ammo= 0 then exit; dec(ammo); if magic > 0 then begin outtextXY(x+15,y,'BY-BYX!'); dec(magic); end else outtextXY(x+15,y,'by-byx!'); end; {daemon.draw} procedure daemon.draw; begin setcolor(color); outtextXY(x,y,'%'); end; {daemon.erase} procedure daemon.erase; begin setcolor(black); outtextXY(x,y,'%)');outtextXY(x+15,y,'by-byx!');outtextXY(x+15,y,'BY-BYX'); end; {daemon.wizardry} procedure daemon.wizardry; begin if magic = 0 then exit; outtextXY(x+15,y,'Krible-krable-byms!'); dec (magic); end; end. |
15.04.2011, 16:26 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Посты которые имеют сходства с вашей темой Турбо Паскаль или Фри Паскаль. Задание по теме Типизированный файл Паскаль Паскаль АВС |
21.04.2011, 18:21 | #2 (permalink) |
Sparkling
Регистрация: 29.09.2010
Сообщений: 98
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 93
|
Помогите пожалуйста хотя бы найти место в коде, где умирает монстр при наезде на него демона...
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|