Page 1 of 2

j'ai commencé un truc mais ce n'est pas super rapide

Unread postPosted: 21 May 2011, 22:06
by charognard
Un casse brique en temps réel
il y a une solution pour augmenter cela ou j'arrète de suite ?



Code: Select all
vie=3
score=0
raqpos=100
raqlon=30
raqtype=1
level=2
palet={raqpos,202}
niv={{1,1,1,1,2,3,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,4,5,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1
},
{0,1,1,1,2,3,1,1,1,1,1,
0,1,1,1,1,1,1,1,1,1,1,
1,0,1,1,1,1,1,1,1,1,1,
1,0,1,1,4,5,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,
1,1,4,4,4,4,4,4,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1
}}
function on.paint(gc)
   interface()
   raquette(raqpos,raqtype)
   curseur()
   for b = 1, 14 do
      for a = 1, 11 do
         if niv[level][a+11*(b-1)]~=0 then
            brique(a,b,niv[level][a+11*(b-1)])
         end
      end
   end
end
function brique(x,y,type)
   if type==1 then
      platform.gc():setColorRGB(40,40,40)
   elseif type==2 then
      platform.gc():setColorRGB(80,80,80)
   elseif type==3 then
      platform.gc():setColorRGB(120,120,120)
   elseif type==4 then
      platform.gc():setColorRGB(255,0,0)
   elseif type==5 then
      platform.gc():setColorRGB(0,255,0)
   end
   platform.gc():fillRect(x*22-16,y*9-3,20,7)
end
function raquette(x,type)
   if type == 1 then
      platform.gc():fillRect(x,204,raqlon,3)
   elseif type == 2 then
      platform.gc():fillRect(x,204,raqlon,3)
   elseif type == 3 then
      platform.gc():fillRect(x,204,raqlon,3)
   end
end
function curseur()
   platform.gc():fillRect(palet[1]+raqlon/2,palet[2],3,3)
end
function interface()
   platform.gc():setColorRGB(0,0,0)
   platform.gc():drawRect(4,4,244,204)
   platform.gc():drawString("SCORE",260,30)
   platform.gc():drawString(score,280,45)
   platform.gc():drawString("LIFE",270,70)
   platform.gc():drawString(vie,280,85)
end
function refresh()
   platform.window:invalidate()
end
function on.arrowKey(key)
   if (key == "left") then
      raqpos = raqpos-5
   elseif (key == "right") then
      raqpos = raqpos+5
   end
   refresh()
end

Re: j'ai commencé un truc mais ce n'est pas super rapide

Unread postPosted: 21 May 2011, 22:18
by Levak
charognard wrote:Un casse brique en temps réel

Génial ! :):
Ça rend bien en tout cas.

il y a une solution pour augmenter cela ou j'arrète de suite ?

Pas compris. "augmenter" ??

Re: j'ai commencé un truc mais ce n'est pas super rapide

Unread postPosted: 21 May 2011, 22:25
by charognard
augmenter la rapidité

Regarde le titre du post

Mes premiers tests notent une lenteur avant même que j'intègre la gestion du palet et des briques ... je me pose donc d'éventuelles question si le LUA est adapté aux jeux temps réels ?

Re: j'ai commencé un truc mais ce n'est pas super rapide

Unread postPosted: 21 May 2011, 22:39
by Levak
Ah oui d'accord, je comprends.
En fait, il y a volontairement un delay dans la gestion des touches (dont les flèches directionnelles). Ce n'est pas une lenteur, seulement une précaution. Donc oui, dans ce cas, j'ai bien peur que le Lua ne soit pas adapté à avoir une réaction immédiate des touches (100 ms).

Re: j'ai commencé un truc mais ce n'est pas super rapide

Unread postPosted: 22 May 2011, 05:52
by charognard
merde alors !
je vais coder quand même le déplacement du palet en espèrant que l'appuis sur les touches ne ne ralenti pas...

à suivre ....

Re: j'ai commencé un truc mais ce n'est pas super rapide

Unread postPosted: 22 May 2011, 06:33
by charognard
Après tests ça peut être jouable !!
je vais continuer un peu pour voir ... mais pour l'instant j'ai rando VTT.
je verrais dans la semaine
Code: Select all
vie=3
score=0
raqpos=100
raqlon=30
raqtype=1
level=2
palet={raqpos,202}
paletdepx=3
paletdepy=-3
niv={{1,1,1,1,2,3,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,4,5,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1
},
{0,1,1,1,2,3,1,1,1,1,1,
0,1,1,1,1,1,1,1,1,1,1,
1,0,1,1,1,1,1,1,1,1,1,
1,0,1,1,4,5,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,
1,1,4,4,4,4,4,4,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0
}}
function on.paint(gc)
   interface()
   raquette(raqpos,raqtype)
   curseur()
   for b = 1, 13 do
      for a = 1, 11 do
         if niv[level][a+11*(b-1)]~=0 then
            brique(a,b,niv[level][a+11*(b-1)])
         end
      end
   end
   timer.start(0.01)
end
function brique(x,y,type)
   if type==1 then
      platform.gc():setColorRGB(40,40,40)
   elseif type==2 then
      platform.gc():setColorRGB(80,80,80)
   elseif type==3 then
      platform.gc():setColorRGB(120,120,120)
   elseif type==4 then
      platform.gc():setColorRGB(255,0,0)
   elseif type==5 then
      platform.gc():setColorRGB(0,255,0)
   end
   platform.gc():fillRect(x*22-16,y*9-3,20,7)
end
function raquette(x,type)
   if type == 1 then
      platform.gc():fillRect(x,204,raqlon,3)
   elseif type == 2 then
      platform.gc():fillRect(x,204,raqlon,3)
   elseif type == 3 then
      platform.gc():fillRect(x,204,raqlon,3)
   end
end
function curseur()
   platform.gc():setColorRGB(0,0,0)
   platform.gc():fillRect(palet[1],palet[2],6,6)
   if palet[1]241 then
      paletdepx=-3
   elseif palet[1]3 then
      paletdepx=3
   elseif palet[2]201 then
      paletdepy=-3
   elseif palet[2]100 then
      paletdepy=3
   end
   palet[1]=palet[1]+paletdepx
   palet[2]=palet[2]+paletdepy
end
function interface()
   platform.gc():setColorRGB(0,0,0)
   platform.gc():drawRect(4,4,244,204)
   platform.gc():drawString("SCORE",260,30)
   platform.gc():drawString(score,280,45)
   platform.gc():drawString("LIFE",270,70)
   platform.gc():drawString(vie,280,85)
end
function refresh()
   platform.window:invalidate()
end
function on.arrowKey(key)
   if (key == "left") then
      raqpos = raqpos-5
   elseif (key == "right") then
      raqpos = raqpos+5
   end
   refresh()
end
function on.timer(gc)
   timer.stop()
   refresh()
end

Re: j'ai commencé un truc mais ce n'est pas super rapide

Unread postPosted: 22 May 2011, 13:16
by Dyar
Bonne rando alors ! :):

Sinon tu pourrais aussi essayer de déplacer le palet en fonction de la position de la sourie, avec le touchpad ...
Mais c'est vrai que le support du clavier est assez mal géré. De la même manière, je crois bien qu'on ne peut pas détecter l'appui continu sur une touche autre que celle de directions. Il faudrait des commandes événementielles plus précises : onKeyUp, onKeyDown, ou des tests : isKeyDown ...

Mais ce temps d'attente pour les touche directionnelles vient de LUA ou de l'OS à votre avis ?

Re: j'ai commencé un truc mais ce n'est pas super rapide

Unread postPosted: 22 May 2011, 13:20
by Lionel Debroux
Sur les TI-68k et probablement aussi sur les TI-Z80, quand on utilise la lecture bas niveau des touches, on met habituellement un délai car les claviers sont dépourvus d'anti-rebond matériel. Ca doit être la même chose sur Nspire, ce qui expliquerait que l'OS, ou Lua, utilise un temps d'attente ?

Re: j'ai commencé un truc mais ce n'est pas super rapide

Unread postPosted: 22 May 2011, 18:22
by charognard
je vais palier à ce problème par 2 touches pour chaque direction déplacement lent et rapide
pour la raquette 3 de prévues normal, longue, collante
5 couleurs de brique pour les type de raquette ou le nombre de touche avant destruction
plusieurs niveaux seront gérés

reste plus qu'à trouver le temps et la motivation

Re: j'ai commencé un truc mais ce n'est pas super rapide

Unread postPosted: 22 May 2011, 18:36
by Loulou 54
L'appui sur les touches doit sûrement provoquer des interruptions aussi pour mettre en mémoire tampon, ... ça peut beaucoup ralentir aussi ! (Sur 68k, en C, on peut désactiver ces interruptions et ça change tout !)