• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о проекте и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Паскаль

Хелен

Sparkling
Регистрация
28 Сен 2010
Сообщения
98
Реакции
2
Баллы
0
Паскаль

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