forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   MidletPascal (http://forum.boolean.name/forumdisplay.php?f=46)
-   -   Плавный полёт снаряда - как реализовать? (http://forum.boolean.name/showthread.php?t=11952)

odd 19.02.2010 23:06

Ответ: Беркут 2.1
 
Цитата:

Сообщение от Mig-29 (Сообщение 138280)
Вышел хотфикс на версию 2.0 :)

Но всё равно ещё работать и работать.
Не под все экраны нормально идет, да и хотелось бы на весь экран.

Mig-29 20.02.2010 15:56

Ответ: Плавный полёт снаряда - как реализовать?
 
В версии 3.0 много доработано.
Конкретно по экранам - теперь можно играть на экране до
264x176, это уже смартовские разрешения.
Я понимаю, что ты хочешь сказать - на весь экран проще и экономнее растянуть текстуру спрайтами =)
В аркаде так и будет, а тут код как "Война и мир" уже.

Изначальная ориентация на прямоугольные экраны, у которых высота больше ширины.

P.S. поборол тот глюк с исчезновением объектов во время repaint'а

NetBuilding 21.07.2010 16:11

Ответ: Плавный полёт снаряда - как реализовать?
 
Помогите.
нужен пример, как реализовать многократный выстрел.

SBJoker 21.07.2010 17:08

Ответ: Плавный полёт снаряда - как реализовать?
 
Эм.. Пыщь-Пыщь - некатит?
--
Если серьёзно то изложи подробнее что неполучается.

NetBuilding 21.07.2010 17:42

Ответ: Плавный полёт снаряда - как реализовать?
 
сейчас так: нажимаем кнопку вылетает пуля и летит себе до конца экрана.
пока не долетит еще раз не выстреллиш.

надо так: пуля еще не долетела до конца, а мы нажимем еще раз кнопку и вылетает уже другая пуля и т.д.
оно не получается.

вот пример как сейчас:
program pula;
var a,b,key:integer;
ip:boolean;
begin
a:=100;
ip:=false;
repeat
key:=getKeyPressed;
if keyToAction(key)=GA_FIRE then ip:=true;
setColor(0, 0, 0);
fillRect(0, 0, 240, 320);
if ip=true then
a:=a+5;
if a<240 then
drawImage(loadImage('/icon.png'), a, 100);
else begin
a:=100; ip:=false; end;
repaint;
until b=10;
end.


SBJoker личный вопрос, под iPhone на чем програмиш?

SBJoker 21.07.2010 18:11

Ответ: Плавный полёт снаряда - как реализовать?
 
Ну нужно загонять пули в объекты или в массив и циклом их обновлять.

Под iPhone пишу на C++/Obj-C в XCode в качестве движка iXors3d

NetBuilding 21.07.2010 19:53

Ответ: Плавный полёт снаряда - как реализовать?
 
сделал так:

var b,i,key,g:integer;
a:array [0..10] of integer;
ip:boolean;
begin
g:=0;
a[0]:=100;
ip:=false;
repeat
key:=getKeyClicked;
if keyToAction(key)=GA_FIRE then begin ip:=true; g:=g+1; end
if g>9 then g:=0;
setColor(0, 0, 0);
fillRect(0, 0, 240, 320);
a[g+1]:=100;
if ip=true then
a[g]:=a[g]+5;
for i:=0 to 10 do begin
if a[g]<240 then
drawImage(loadImage('/icon.png'), a[i], 100);
else begin
ip:=false; end;
end;
repaint;
until b=10;
end.

чего-то не хватает. :(

Ребята покажите пожалуйста на примере как это сделать у меня игруха без этого непроходимая получается.

SBJoker 22.07.2010 16:20

Ответ: Плавный полёт снаряда - как реализовать?
 
ну я то на мидлете не программирую, потому нужно ждать помощи завсегдатаев.
Я могу лишь общие советы дать.
После каждого выстрела создавать пулю - записывать её положение и другие параметры в массив или если есть ООП то в класс, после чего работать со всеми пулями в цикле.

NetBuilding 22.07.2010 17:51

Ответ: Плавный полёт снаряда - как реализовать?
 
SBJoker благодарю за посильную помощь
Получилось но все равно чето нето.

Цитата:

var i,key,g:integer;
a,b:array [0..100] of integer;
ip:boolean;p:array [0..100] of image;
begin
g:=0;
for i:=0 to 10 do begin
a[i]:=100;
b[i]:=100;
p[i]:=loadImage('/icon.png');
end;

repeat
key:=getKeyClicked;
if keyToAction(key)=GA_FIRE then begin g:=g+1;end
if g>9 then g:=0;

fillrect(0,0,240,320);


for i:=0 to g do begin
drawImage(p[i], a[i], b[i]);
a[i]:=a[i]+1;
if a[i]>240 then a[i]:=100;
end;
repaint;
until b[0]=10;
end.
помогите пожалуйста

LLI.T.A.L.K.E.R. 22.07.2010 23:51

Ответ: Плавный полёт снаряда - как реализовать?
 
Примерно так:
PHP код:

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;

NetBuilding 23.07.2010 11:36

Ответ: Плавный полёт снаряда - как реализовать?
 
LLI.T.A.L.K.E.R. Огромный тебе респект!
Теперь мою угруху можно будет пройти :rolleyes:

Igor 23.07.2010 11:49

Ответ: Плавный полёт снаряда - как реализовать?
 
ООП тут нет


Часовой пояс GMT +4, время: 05:12.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot