Показать сообщение отдельно
Старый 22.07.2010, 23:51   #25
LLI.T.A.L.K.E.R.
Мастер
 
Аватар для LLI.T.A.L.K.E.R.
 
Регистрация: 24.06.2009
Адрес: Набережные Челны
Сообщений: 930
Написано 292 полезных сообщений
(для 504 пользователей)
Сообщение Ответ: Плавный полёт снаряда - как реализовать?

Примерно так:
Var i,key,g:integer;
a,b: array [0..9of integer;
ipboolean;
p:array [0..9of image;
PuleShot: array [0..9of boolean;

Begin
g
:=0;
For 
i:=0 to 9 do begin
a
[i]:=100;
b[i]:=100;
p[i]:=LoadImage('/icon.png');
PuleShot[i]:=False;
end;

Repeat

FillRect
(0,0,240,320);

key:=GetKeyClicked;
If 
KeyToAction(key)=GA_FIRE then begin
    PuleShot
[g]:=True;
    
g:=g+1;
end;

If 
g>5 then g:=0;

For 
i:=0 to 9 do begin
    
If PuleShot[i]=True then begin
        DrawImage
(p[i], a[i], b[i]);
        
a[i]:=a[i]+1;
        If 
a[i]>240 then begin
            PuleShot
[i]:=False;
            
a[i]:=100;
        
end;
    
end;
end;

Repaint;

Until b[0]=10;

End
Добавил свойство пули PuleShot[i]- выстрелить её или нет (рисовать/не рисовать)

И зачем создавать лишний массив 100?
За 9 у меня на эмуляторе и то выстрел сразу не реагирует.

И чтобы игруля была мультиэкранка - нужно не за 240 пикс. пулю проверять, а в переменную
Var ScreenW: integer;
Begin
ScreenW:=GetWidth;
Repeat
If a[i]>ScreenW+5 then a[i]:=ScreenW/2;
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
NetBuilding (23.07.2010)