IPB
ЛогинПароль:

> Недоделанная прога
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 38
Пол: Мужской
Реальное имя: 1234

Репутация: -  -1  +


Пожалуйста, помогите доделать прогу. Некоторые очерки я уже имею. Проблема заключена в следующем: как заставить объект стрелять, при том, что подстреленные объекты исчезают (как я понимаю, окрашиваясь в цвет фона). Но вопрос в другом: если, уже невидимый, объект попадает на стреляющий объект игра заканчивается. Потому как они существуют.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Профи
****

Группа: Пользователи
Сообщений: 618
Пол: Мужской

Репутация: -  24  +


1. Ставь теги, не гневи модератора!

2. В идеале, стоит переписать это дело под ООП, но можно и посредством обычных массивов. Подозреваю, что ООП ты делать не захочешь (если я ошибаюсь - пиши, поможем!), но и просто через массивы - муторно... Поэтому я выбераю третий выход: один массив + запись.

Uses Graph,crt;
const
Speed = 10;
MaxTiming = 50;
type
Ball = record
X, Y, Timing : integer;
{Timing - задержка падения шарика, чтоб не одновременно smile.gif}
end;
var
gD,gM: Integer;
p: pointer;
Balls : array [1..5] of Ball;
a, size, i : integer;
begin
gD := Detect;
InitGraph(gD,gM,'');
randomize;
setbkcolor(yellow);
setfillstyle(1,4);
setcolor(4);
circle(20,20,10);
floodfill(20,20,4);
size:=imagesize(10,10,30,30);
getmem(p,size);
getimage(10,10,30,30,p^);
putimage(10,10,p^,xorput);
for i := 1 to 5 do
begin
{начальные параметры}
Balls[i].Timing := Random(MaxTiming);
Balls[i].X := Random(GetMaxX);
Balls[i].Y := 0;
end;
while not KeyPressed do {До нажатия клавиши. Если нужно заданное число падений}
begin {проверяй значение счётчика здесь, а увеличивай его... (читай ниже)}
for i := 1 to 5 do
if Balls[i].Y > GetMaxY then
begin
{...здесь}
{Этот блок вызывается, если шарик ушёл ниже экрана}
Balls[i].Timing := Random(MaxTiming);
Balls[i].X := Random(GetMaxX);
Balls[i].Y := 0;
end
else
if Balls[i].Timing = 0 then
begin
Inc(Balls[i].Y, Speed);
PutImage(Balls[i].X, Balls[i].Y, p^, xorput);
delay(200);
PutImage(Balls[i].X, Balls[i].Y, p^, xorput);
end
else
Dec(Balls[i].Timing); {Пока таймер не обнулится мячик не рисуется}
end;
OuttextXY(10,10,'Press Enter to exit');
ReadLn;
CloseGraph;
end.



--------------------
Close the World...txeN eht nepO
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
1234   Недоделанная прога   22.12.2006 21:27
Malice   Приводи свои очерки, посмотрим..   23.12.2006 0:52
1234   Начнём с этого. Мне нужно чтобы шарики вылетали не…   23.12.2006 20:08
Archon   1. Ставь теги, не гневи модератора! 2. В идеа…   24.12.2006 6:19
1234   Спасибо тебе на добром слове/исходнике. А вот нова…   24.12.2006 20:08
Malice   У тебя y1 не инициализирована, т.е. =0, по этому в…   27.12.2006 1:39
1234   Учитывая ваши советы, у меня в силе остаются те же…   27.12.2006 18:42
Malice   Вот здесь ты рисуешь 30 точек, а стираешь одну …   27.12.2006 19:00
Malice   Глюк в левом углу - результат 2-х строк: getima…   27.12.2006 21:12
1234   :ypriamii: :ypriamii: :!help:   26.12.2006 17:14
Archon   Поставь сперва нормальные отступы, мне надоело их …   26.12.2006 22:32
1234   Как убрать глюк в левом верхнем углу? И, касательн…   27.12.2006 20:04
1234   Всё работаёт. Путём. Спасибо :respect2 Теперь, есл…   27.12.2006 21:30
Malice   Эх ты, блин, без подумать никак нельзя. :no1:   27.12.2006 21:34
1234   Эх ты, блин, без подумать никак нельзя. :no1: Пр…   28.12.2006 19:39


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 28.03.2024 16:16
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name