Хелен
Sparkling
- Регистрация
- 28 Сен 2010
- Сообщения
- 98
- Реакции
- 2
- Баллы
- 0
Не могу доделать программу до конца
Опять не могу доделать... помогите пожалуйста! ) Программа, даже не знаю, как объяснить, что выполняющая )))
пародия на стрелялки =)
Здесь летают жёлтые монстрики "@", при приближении друг другу стреляют, теряют жизни и умирают красной точкой. Добавлен второй модуль с демоном, на экран выводится зелёным "%". НО всего Один, а надо чтобы их тоже было много. Никак не могу разобраться, что ещё я забыла прописать! :tehnari_ru_281:
Сама программа:
Первый модуль:
Второй модуль:
Опять не могу доделать... помогите пожалуйста! ) Программа, даже не знаю, как объяснить, что выполняющая )))
пародия на стрелялки =)
Здесь летают жёлтые монстрики "@", при приближении друг другу стреляют, теряют жизни и умирают красной точкой. Добавлен второй модуль с демоном, на экран выводится зелёным "%". НО всего Один, а надо чтобы их тоже было много. Никак не могу разобраться, что ещё я забыла прописать! :tehnari_ru_281:
Сама программа:
Код:
Program dinner2;
uses graph,crt,monsters,daemons;
const n=30;
var
stado:array[1..n] of monstr;
stado2:array[1..n] of daemon;
x,y:array[1..n] of integer;
gd,gm:integer;
i,j:word;
begin
gd:=detect;
initgraph(gd,gm,'...');
If graphresult<>grOk then
begin
writeln('Error - Ошибка инициализации графики');
exit
end;
randomize;
for i:=1 to N do
begin
stado[i].init(random(600),random(440),random(10), random(8));
stado[i].draw;
stado2[i].init(random(500),random(400),random(20), random(5),random(10));
stado2[i].draw;
end;
repeat
for i:=1 to n do
begin
x[i]:=random(600);
y[i]:=random(440);
stado[i].move(x[i],y[i]);
stado2[i].move(x[i]+5,y[i]+5);
end;
For i:=1 to n-1 do
For J:=i+1 to n do
If(abs(x[i]-x[j])<15) and (abs(y[i]-y[j])<15)
then begin
Stado[i].hit;
Stado[j].hit;
Stado2[i].hit;
Stado2[j].hit;
end;
delay(2000);
until keypressed;
end.
Первый модуль:
Код:
unit monsters;
interface
uses Graph;
type monstr = object
procedure init(x_, y_, health_, ammo_ : word);
procedure attack;
procedure draw;
procedure erase;
procedure hit;
procedure move(x_, y_ : word);
procedure getpos(var x_, y_ : word);
private
x, y : word;
health, ammo : word;
color : word;
end;
implementation
procedure monstr.init(x_, y_, health_, ammo_ : word);
begin
x := x_;
y := y_;
health := health_;
ammo := ammo_;
color := yellow;
end;
procedure monstr.draw;
begin
setcolor(color); outtextXY(x, y, '@');
end;
procedure monstr.getpos(var x_, y_ : word);
begin
x_ := x; y_ := y;
end;
procedure monstr.attack;
begin
if ammo = 0 then exit;
dec(ammo); setcolor(color);
outtextXY(x + 15, y, 'Ba-Bax!');
end;
procedure monstr.erase;
begin
setcolor(black); outtextXY(x, y, '@');
end;
procedure monstr.hit;
begin
If health = 0 then exit;
dec(health);
If health = 0 then
begin
color:=red;
draw;
exit;
end;
attack;
end;
procedure monstr.move(x_, y_ : word);
begin
if health = 0 then exit;
erase; x := x_; y := y_; draw;
end;
end.
uses graph, crt, monsters;
var Vasia : monstr;
x, y : word;
gd, gm : integer;
begin
gd := detect; initgraph(gd, gm, '...');
Vasia.init(100, 100, 10, 10);
Vasia.draw; Vasia.attack; readln;
x := 110;
while x < 200 do begin
Vasia.move(x, x); inc(x, 7);
delay(200);
end;
readln;
end.
Второй модуль:
Код:
unit daemons;
interface
uses graph,monsters;
type daemon = object (monstr)
procedure init(x_, y_, health_, ammo_, magic_ : word);
procedure attack;
procedure draw;
procedure erase;
procedure wizardry;
procedure hit;
procedure move(x_, y_ : word);
procedure getpos(var x_, y_ : word);
private
Demon: daemon
magic : word;
x,y,ammo,health,color:word;
end;
implementation
procedure daemon.init(x_, y_, health_, ammo_, magic_ : word);
begin
inherited init(x_, y_, health_, ammo_);
color := green;
magic := magic_;
end;
procedure daemon.attack;
begin
if ammo = 0 then exit;
dec(ammo);
setcolor(color);
outtextXY(x + 25, y, 'Bu-Bux!');
end;
procedure daemon.draw;
begin setcolor(color); outtextXY(x, y, '%)');
end;
procedure daemon.erase;
begin setcolor(black); outtextXY(x, y, '%)');
end;
procedure daemon.wizardry;
begin
if magic=0 then exit;
outtextXY(x+15,y,'Fire Ball!');
dec(magic);
end;
procedure daemon.hit;
begin
If health = 0 then exit;
dec(health);
If health = 0 then
begin
color:=blue;
draw;
exit;
end;
attack;
end;
procedure daemon.move(x_, y_ : word);
begin
if health = 0 then exit;
erase; x := x_+1; y := y_+1; draw;
end;
end.
uses graph, crt, monsters;
var Demon: daemon;
x, y : word;
gd, gm : integer;
begin
gd := detect; initgraph(gd, gm, '...');
Demon.init(100, 100, 10, 10);
Demon.draw; Demon.attack; readln;
x := 110;
while x < 200 do begin
Demon.move(x, x); inc(x, 7);
delay(200);
end;
readln;
end.
end.