19.03.2011, 19:40 | #1 (permalink) |
Sparkling
Регистрация: 29.09.2010
Сообщений: 98
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 93
|
Не могу доделать программу до конца
пародия на стрелялки =) Здесь летают жёлтые монстрики "@", при приближении друг другу стреляют, теряют жизни и умирают красной точкой. Добавлен второй модуль с демоном, на экран выводится зелёным "%". НО всего Один, а надо чтобы их тоже было много. Никак не могу разобраться, что ещё я забыла прописать! Сама программа: Код:
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. |
19.03.2011, 19:40 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Если решение проблемы затянулось, можете пролистать аналогичные темы Не могу найти программу... Не могу найти программу в компе Не могу найти программу для востановления Kingston 4gb Не могу правильно написать программу Помогите доделать задачу. Строки. Не могу удалить программу, компьютер выдает ошибку. |
19.03.2011, 19:53 | #2 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Лена, может я и не прав, но я с таким не встречался. Во втором модуле Вы, как положено, описываете часть "Implementation", за которой, как положено, следует команда "end." (с точкой!). Я всегда полагал, что дальнейшее, т.е. всё, что после "end.", транслятором просто не воспринимается - у Вас же там идет некая программа, тоже заканчивающаяся "end.", после чего следует еще один "end." - как видно, заключительный. А разве так можно? Нет, может быть и можно, просто я такого не видел (а уж модулей, и своих и чужих, я видел сотни).
|
19.03.2011, 20:23 | #3 (permalink) |
Sparkling
Регистрация: 29.09.2010
Сообщений: 98
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 93
|
а тоже самое в первом модуле вас не смутило?))
на самом деле... дали модуль из учебника, сказали, чтоб работало, подправила - работает. сказали сделать "много" - сделала... сказали присоединить "зелёного" - (с)... теперь снова надо сделать много зелёных, а в них я как то не догоняю... И стада везде добавила и модуль через модуль подключила, и точки сдвинула, чтоб не затирали одни других. и всё равно чего-то недопонимаю... |
19.03.2011, 21:06 | #4 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
А, да - недосмотрел. То же самое. Интересно - надо будет попробовать такие конструкции. Я о них даже нигде не читал.
Воистину - век живи, век учись, а... ну да - этим самым и помрешь! А вообще, как я посмотрю - у вас там какой-то жутко прогрессивный метод обучения: сажают как щенят в корзину, да и вытряхивают в воду, а на мелководье или в омут - тут уж как повезет. Я под этим подразумеваю сложность задач. Не знаю, может быть так и надо. Ну посмотрим, что в итоге получится... |
19.03.2011, 21:52 | #5 (permalink) |
Sparkling
Регистрация: 29.09.2010
Сообщений: 98
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 93
|
а мне этот метод обучения напоминает книжку из детства "пойди туда, не знаю куда, возьми то, не знаю что"...
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
20.03.2011, 14:31 | #8 (permalink) | ||
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Между прочим, Ваш код для начала просто не транслируется. Так, в модуле Daemons в строке
Цитата:
дальше ругается, что процедура Цитата:
|
||
20.03.2011, 14:38 | #10 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|