Déplacer, Bloquer, Relacher

Programmation avancée de jeux en PureBasic
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: Déplacer, Bloquer, Relacher

Message par G-Rom »

edit : je viens de faire des tests et ma routine est plus rapide de peut etre 20%
Donne le Bench mark :mrgreen:
Il y a une legere difference G-rom : mon code fait un seul test par boucle. Le tiens en fait 2 (4 meme !) constament. J'AIIIIIIME les choses optimisé
on va dire , qu'il en fait 4.

je reprends ton code :
If KeyboardPushed(#PB_Key_Left)
If left=0
left=1
EndIf
Else
left=0
EndIf
Deux test ici , on est d'accord
mais ensuite , t'es obligé de testé left pour bouger ou pas ton sprite
if Left = 1
; on bouge...
endif
Donc t'en a 3 minimum , avec une lisibilité du code , qui à la longue devient illisible.
si tu veut être optimisé , dans ton cas , tu es obligé de fusionné la partie clavier avec la partie affichage , pas terrible à la longue , m'enfin tu fait comme tu veut ,
je préfèré avoir un code lisible et fonctionnel , qu'un code qui fait 20% de + :mrgreen: parce que j'ai imbriqué l'affichage et la gestion du clavier.
Avatar de l’utilisateur
SPH
Messages : 4945
Inscription : mer. 09/nov./2005 9:53

Re: Déplacer, Bloquer, Relacher

Message par SPH »

Le miens, puis le tiens. A executer compilé et plusieurs fois puis faire la moyenne (enfin, c'est comme ca que je vois l'équité) :

Code : Tout sélectionner

InitSprite() And InitMouse() And InitKeyboard() 
Global NewMap KeyFlag.b()
OpenScreen(800,600,32,"")
temps=GetTickCount_()

For i=1 To 10000000
  ExamineKeyboard() 
     If KeyboardPushed(#PB_Key_Left)
       If left=0
         left=1
         variable=512
       EndIf
     Else
       left=0
     EndIf
 Next
  
temps=GetTickCount_()-temps
CloseScreen()
MessageRequester("Erreur", Str(temps)+" ms")

Code : Tout sélectionner

InitSprite() And InitMouse() And InitKeyboard() 
Global NewMap KeyFlag.b()
OpenScreen(800,600,32,"")
temps=GetTickCount_()

For i=1 To 10000000
  ExamineKeyboard() 
 If KeyboardPushed(Const) And KeyFlag(Str(Const)) = 0
    KeyFlag(Str(Const)) = 1
    variable=512
  EndIf
  If KeyboardPushed(Const)=0 And KeyFlag(Str(Const)) = 1
    KeyFlag(Str(Const)) = 0
  EndIf
Next
  
temps=GetTickCount_()-temps
CloseScreen()
MessageRequester("Erreur", Str(temps)+" ms")
Chez moi, moyenne du miens : 2000, et du tiens : 2800

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: Déplacer, Bloquer, Relacher

Message par G-Rom »

c'est pas comme ca qu'on mesure le temps des tests , là tu prends même le temps de la boucle for / next.
c'est pas précis ;)

Regarde ceci , j'ai été supris :

Code : Tout sélectionner

ITERATION = 100000

Delay(1000)

For i = 1 To ITERATION
  A.i = ElapsedMilliseconds()
  
  ; ******************************************************************
  ; TEST SOUS LA FORME G-ROM
  ; ******************************************************************
  
  If 1=1 And 2=2
    
  EndIf 

  If 3=3 And 4=4
      
  EndIf 
  
  ; ******************************************************************
  ;
  ; ******************************************************************
  
  C.i = ElapsedMilliseconds()
  R = R + (C-A)
Next   

TimeA = R : R=0

Delay(1000)

For i = 1 To ITERATION
  A.i = ElapsedMilliseconds()
  
  ; ******************************************************************
  ; TEST FACON SPH
  ; ******************************************************************
  If 1=1
    If 3=3
      
    EndIf 
  Else
    
  EndIf 
  
  If 5=5
    
  EndIf 
  ; ******************************************************************
  ;
  ; ******************************************************************
  C.i = ElapsedMilliseconds()
  R = R + (C-A)
Next   

TimeB = R : R=0



Gain.f = 100 - (TimeA * 100 / TimeB)

If Gain > 0
  MessageRequester("Dans le cul SPH :D","4 tests = "+Str(TimeA) +" ms" +Chr(10)+" 3 tests = "+Str(TimeB)+" ms"+Chr(10)+" Gain en % par rapport à 3 test = "+Str(Gain)+"%")
Else
  MessageRequester("Dans le cul G-ROM:D","4 tests = "+Str(TimeA) +" ms" +Chr(10)+" 3 tests = "+Str(TimeB)+" ms"+Chr(10)+" Gain en % par rapport à 3 test = "+Str(Gain)+"%")
EndIf 

Donne moi juste le titre du message requester de fin :D
enfin bon , on s'éloigne du sujet original , on va pas commencer à faire des "punch" de nos codes :mrgreen:
Avatar de l’utilisateur
SPH
Messages : 4945
Inscription : mer. 09/nov./2005 9:53

Re: Déplacer, Bloquer, Relacher

Message par SPH »

LOL, je n'ai pas du tout confiance dans ton test :mrgreen: :roll: :lol: :lol: :lol: :lol:

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Déplacer, Bloquer, Relacher

Message par Backup »

...
Dernière modification par Backup le mar. 19/août/2014 11:45, modifié 1 fois.
Avatar de l’utilisateur
venom
Messages : 3136
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: Déplacer, Bloquer, Relacher

Message par venom »

@g-ROM

non ton code fonctionne super bien ;) c'est celui de dobro qui ne va pas chez moi.

Pour l'optimisation, ne vous chamaillez pas :) quand je disais que je voyé sa plus court je penser tout simplement qu'il y avais une fonction native pour sa.

Comme par exemple quand ont utilise for NeXT avec un step par exemple.
Fin passons le résultat de vos code est exactement ce que je chercher c'est le but principale.





@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Déplacer, Bloquer, Relacher

Message par Backup »

venom a écrit :@g-ROM

non ton code fonctionne super bien ;) c'est celui de dobro qui ne va pas chez moi.

heu tu as essayé le dernier en couleurs ?
Avatar de l’utilisateur
venom
Messages : 3136
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: Déplacer, Bloquer, Relacher

Message par venom »

Non je suis sur mon téléphone la ;) mais si purebasic se porte sur iPhone je dit pas non :).
Je le test ce soir Dobro






@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Déplacer, Bloquer, Relacher

Message par Backup »

ok ok ! :)
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: Déplacer, Bloquer, Relacher

Message par G-Rom »

je ne comprends pas pourquoi vous vous prenez la tete avec KeyboardPushed()

alors que KeyboardReleased() marche tres bien :)
je suis d'accord avec toi , mais le comportement n'est pas le même , tu est obligé de relâcher la touche pour pouvoir bouger. :wink:
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Déplacer, Bloquer, Relacher

Message par Backup »

ha oui ! :D tres juste :)
Geo Trouvpatou
Messages : 471
Inscription : dim. 23/déc./2007 18:10

Re: Déplacer, Bloquer, Relacher

Message par Geo Trouvpatou »

Salut.

Ce qui faisait planter le premier code de Dobro chez nous les pauvres Windowsiens, c'était tout simplement : KeyboardMode(#PB_Keyboard_International) qui se trouvait dans la boucle.
Il faut le mettre à l'extérieur.
C'est pour cela que le code de G-Rom fonctionne.
Une fois mis à l'extérieur, le code fonctionne sans planter.
Avatar de l’utilisateur
venom
Messages : 3136
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: Déplacer, Bloquer, Relacher

Message par venom »

En effet Geo sa fonctionne très bien sans KeyboardMode(#PB_Keyboard_International) :P






@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Déplacer, Bloquer, Relacher

Message par Backup »

c'est vrais , j'ai ete perturbé par le fait qu'il ne s'agissais pas de mon code au debut
mais de celui de Venom

du coup, j'ai pas respecter une architecture correcte !
deja que j'ai du deplacer le flipbuffer() :lol:

Mea culpa :)
Avatar de l’utilisateur
venom
Messages : 3136
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: Déplacer, Bloquer, Relacher

Message par venom »

mais euh!!!.... :oops:

voilà sa tombe sur moi :D :wink:
il faudrais que je retelecharge le soft du soldat qui range les codes tout seuls tiens :P
bon le problème est régler.
merci en tout cas :wink:






@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Répondre