Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 15.04.2011, 16:26   #1 (permalink)
Хелен
Sparkling
 
Аватар для Хелен
 
Регистрация: 29.09.2010
Сообщений: 98
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 93
Arrow Паскаль

Помогите усовершенствовать модуль пожалуйста =)
Нужно добавить в программу:
а) одинаковые по названию, но разные по исполнению свойства для родственных объектов (здесь демоны-миша и монстры-вася)
б) наделить экземпляры объектов 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
 
Аватар для Helpmaster
 
Регистрация: 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
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 03:22.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.