joypad et sa croix directionnelle, merci à Flype.

Programmation avancée de jeux en PureBasic
beauregard
Messages : 1307
Inscription : dim. 08/juil./2007 18:32
Localisation : Toulouse

joypad et sa croix directionnelle, merci à Flype.

Message par beauregard »

bonsoir,
Ce code va vous permettre d'activer la croix directionnelle de votre joypad. Testé sur:
-> 360controller: tout va bien.
-> dual shock: cela fonctionne, mais il y a un petit blème avec l'affichage de çà:

Code : Tout sélectionner

  zut$= Str(*info\dwPOV) ; faut pas avoir peur, voyez. C'est comme çà, la vie est parfois compliqué, voyez.
  FrontColor ( RGB (154,154,154)):DrawText (1+1,120+1, "croix directionnelle: " +zut$)   
  FrontColor ( RGB (234,234,234)):DrawText (1,120, "croix directionnelle: " +zut$)
rien de grave donc.
http://fr.wikipedia.org/wiki/DualShock
-> grosse manette arcade pour ps1: cela fonctionne aussi, mais même petit blème qu'avec la dual shock.

Code : Tout sélectionner

; ------------------------------------------------------------
; test - PC - windaube xp
; joypad: croix directionnelle - 2008 - source PureBasic 4.10
; pseudo: flype - Djes - beauregard
; objectif: attribuer aux variables croixX et croixY, les valeurs renvoyés par la croix directionelle
; d'un joypad munis de stick analogique.
; ------------------------------------------------------------
If InitMouse ()=0 Or InitKeyboard ()=0 Or InitSprite ()=0  Or InitSprite3D ()=0
     MessageRequester ( "Error" , "Can't open DirectX 7 or later" , 0)
     End
EndIf
If InitJoystick():manette=1:EndIf
;KeyboardMode(#PB_Keyboard_International)
UsePNGImageDecoder()

; °°°°°°°°°°°°°°°°°°°°  fonte °°°°°°°°°°°°°°°°°°°°°°°°°°
LoadFont ( 0 , "Comic Sans Ms" ,12, #PB_Font_Bold)
LoadFont ( 1 , "Comic Sans Ms" ,20, #PB_Font_Bold)
; °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°


Enumeration ; ici, on donne un petit nom à nos sprites( non, chuis pas un numéro, voyez !):

  #repere
;- obscur1:
  #JOYCAPS_HASZ = 1
  #JOYCAPS_HASR = 2
  #JOYCAPS_HASU = 4
  #JOYCAPS_HASV = 8
  #JOYCAPS_HASPOV = 16
  #JOYCAPS_POV4DIR = 32
  #JOYCAPS_POVCTS = 64
 
EndEnumeration

Declare croix(joyCaps,joyInfoEx)
Declare testfinis()

; on ouvre une fenetre:
If OpenWindow ( 0 , 0, 0, 512+48, 384+48, "test" , #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar|#PB_Window_ScreenCentered  )
 OpenWindowedScreen ( WindowID ( 0 ), 23, 23, 512, 384, 0, 1, 1) ; ici, voyez, on fabrique un écran ecran graphique dans la fenêtre.
EndIf

; repere ( utilisé uniquement par le programmeur):
CreateSprite ( #repere ,8,8, #PB_Sprite_Texture )
 StartDrawing ( SpriteOutput ( #repere ))
  BackColor ( RGB (0,0,0))
  Box (0, 0, 8, 8, RGB (100,195,75)):Box (1, 1, 6, 6, RGB (100,125,75))
 StopDrawing ()

Global croixX.l, croixY.l, Xrepere, Yrepere, zut.l
If manette; une condition inutile, mais on est jamais trop prudent, voyez.
;- obscur2:
  joyInfoEx.JOYINFOEX
;  joyInfoEx\dwFlags = #JOY_RETURNALL
  joyInfoEx\dwSize = SizeOf(JOYINFOEX)
EndIf
; ******************************************************************************************************
Repeat ; Boucle principale
; ******************************************************************************************************
 Event= WindowEvent ()

 ;ExamineMouse():
 ExamineKeyboard ()
 If manette:ExamineJoystick():EndIf
 FlipBuffers()
 ClearScreen(RGB(0, 0, 0))
 
;- obscur3:
If joyGetPosEx_(#JOYSTICKID1,joyInfoEx) = #JOYERR_NOERROR And manette:croix(joyCaps,joyInfoEx):EndIf

If (manette=0 And KeyboardPushed ( #PB_Key_Up )) Or (manette And (JoystickAxisY()=-1 Or croixY=-1)); <-- voyez !
  If Yrepere>-192:Yrepere-2:EndIf
EndIf
If (manette=0 And KeyboardPushed ( #PB_Key_Down )) Or (manette And (JoystickAxisY()=1 Or croixY=1)); <-- c'est comme çà, voyez ! 
  If Yrepere<192-8:Yrepere+2:EndIf
EndIf

If (manette=0 And KeyboardPushed ( #PB_Key_Right )) Or (manette And (JoystickAxisX()=1 Or croixX=1)); <-- et faite bien attention... 
  If Xrepere<256-8:Xrepere+2:EndIf
EndIf
If (manette=0 And KeyboardPushed ( #PB_Key_Left )) Or (manette And (JoystickAxisX()=-1 Or croixX=-1)); <-- au nombre de parenthèses, voyez ! 
  If Xrepere>-256:Xrepere-2:EndIf
EndIf

DisplayTransparentSprite( #repere , 256+Xrepere, 192+Yrepere)

If manette=0
  StartDrawing ( ScreenOutput ())
    DrawingMode (1):DrawingFont ( FontID (1)):BackColor ( RGB (0,0,0)) 
    FrontColor ( RGB (154,154,154)):DrawText (24+2,120+2, "vous n'avez pas de joypad, voyez.")   
    FrontColor ( RGB (234,234,234)):DrawText (24,120, "vous n'avez pas de joypad, voyez.")
  StopDrawing () 
EndIf

 If KeyboardPushed ( #PB_Key_F ) And nbreis=0:nbreis+1:EndIf
 If KeyboardPushed ( #PB_Key_F )=0 And nbreis=1:nbreis+1:EndIf
 If KeyboardPushed ( #PB_Key_F ) And nbreis=2:nbreis+1:EndIf
 If KeyboardPushed ( #PB_Key_F )=0 And nbreis=3:nbreis=0:EndIf

         Gosub fps ; nombre d'image par seconde ( à placer dans tout vos jolis programmes, voyez !)
; ******************************************************************************************************   
 Delay (1)
 If Event= #PB_Event_CloseWindow Or KeyboardPushed ( #PB_Key_Escape ):testfinis():EndIf; si clique coin haut droit ou touche Esc, alors ferme fenêtre.
ForEver

fps:
If Val ( FormatDate ( "%ss" , Date ()))=sek ; regardez pas là, c'est trop compliqué voyez.
     
    fps+1 ; Arrêtez j'vous dis, vous allez vous faire mal à la tête, voyez!
Else
    FPS$= Str (fps)
    fps=0
EndIf
sek= Val ( FormatDate ( "%ss" , Date ()))
StartDrawing ( ScreenOutput ())
DrawingMode (1)
FrontColor ( RGB (255,255,255))
If nbreis=1 Or nbreis=2:DrawText (1,1, "FPS: " +FPS$):EndIf
StopDrawing ()
Return

;- obscur4:
Procedure.l croix(*caps.JOYCAPS, *info.JOYINFOEX);une petite procédure à placer dans vos jeux( un grand merci à flype).
  croixX=0:croixY=0


  StartDrawing ( ScreenOutput ())
  DrawingMode (1):DrawingFont ( FontID (0)):BackColor ( RGB (0,0,0)) 


  zut$= Str(*info\dwPOV) ; faut pas avoir peur, voyez. C'est comme çà, la vie est parfois compliqué, voyez.
  FrontColor ( RGB (154,154,154)):DrawText (1+1,120+1, "croix directionnelle: " +zut$)   
  FrontColor ( RGB (234,234,234)):DrawText (1,120, "croix directionnelle: " +zut$)

     If *info\dwPOV=0 Or *info\dwPOV=4500 Or *info\dwPOV=31500:croixY=-1:EndIf; haut
     If *info\dwPOV=18000 Or *info\dwPOV=22500 Or *info\dwPOV=13500:croixY=1:EndIf; bas
     
     If *info\dwPOV=9000 Or *info\dwPOV=4500 Or *info\dwPOV=13500:croixX=1:EndIf; droite
     If *info\dwPOV=27000 Or *info\dwPOV=31500 Or *info\dwPOV=22500:croixX=-1:EndIf; gauche

 StopDrawing ()

EndProcedure

Procedure.l testfinis()
 If IsImage(#repere):FreeImage(#repere):EndIf ; là, une bonne habitude à prendre, voyez.
 End
EndProcedure
Dernière modification par beauregard le mer. 02/janv./2008 21:12, modifié 1 fois.
beauregard
Messages : 1307
Inscription : dim. 08/juil./2007 18:32
Localisation : Toulouse

Re: joypad

Message par beauregard »

Alors, l'intérêt de la chose pour un jeu 2D, c'est que certains joueurs ont une préférence pour la croix directionnelle, peut être du à une habitude prise avec les gameboy, et les console8 et 16bit.

Pour la 3D, avec des jeux se déroulant sur un seul plan( combat, plate forme comme crash bandicoot), ben là aussi, la croix directionnelle est désirée.

Pour la 3D, avec des jeux en tout 3D, les fps ou driver-like, la croix peut servir à donner des ordres, ou pour gérer l'inventaire( sorte de racourcis clavier-> racourcis joypad, voyez).

Le code qui suit est de flype, que je remercie, mais ne soyez pas choqué si rien ne s'affiche: soit vous n'avez pas branché votre joypad, soit vous utilisez une bonne vieille dualshock( et là çà fonctionne, vous pouvez m'en croire):

Code : Tout sélectionner

;
; Win32 / Multimedia / Joystick
;An example on how to use the Win32 Joystick functions

;  info\dwPOV


Enumeration ; #JOYCAPS_
  #JOYCAPS_HASZ = 1
  #JOYCAPS_HASR = 2
  #JOYCAPS_HASU = 4
  #JOYCAPS_HASV = 8
  #JOYCAPS_HASPOV = 16
  #JOYCAPS_POV4DIR = 32
  #JOYCAPS_POVCTS = 64
EndEnumeration

Procedure.l MyDraw(*caps.JOYCAPS, *info.JOYINFOEX)
 
  TextColor = $F0F0F0
  LineColor = $966E47
  FrontColor = $A77F58
 
  iw = ImageWidth(0)
  ih = ImageHeight(0)
 
  iw2 = iw - 50
  ih2 = ih - 50
 
  If StartDrawing(ImageOutput(0))
   
    x = (*info\dwXpos*iw2)/*caps\wXmax
    y = (*info\dwYpos*ih2)/*caps\wYmax
    w = (*info\dwRpos*iw2)/*caps\wRmax
    h = (*info\dwZpos*ih2)/*caps\wZmax
   
    DrawingMode(1)
    DrawingFont(FontID(0))
   
    Box(0,0,iw,ih,FrontColor)
    Line(iw/2-2,0,0,ih,LineColor)
    Line(0,ih/2-2,iw,0,LineColor)
    Box(25,25,iw2,ih2,LineColor)
    Line(iw/2-2,25,0,ih2,FrontColor)
    Line(25,ih/2-2,iw2,0,FrontColor)
    Line(x+25,0,0,ih,FrontColor)
    Line(0,y+25,iw,0,FrontColor)
    Ellipse(25+x,25+y,w/2,h/2,LineColor)
    Ellipse(25+x,25+y,(w/2)-5,(h/2)-5,FrontColor)
    Line(x+25,y-h/2+25,0,h,LineColor)
    Line(x-w/2+25,y+25,w,0,LineColor)
   
    y = 15
    For i = 0 To *caps\wMaxButtons - 1
      If (i % 4) = 0
        x = iw-145 : y + 26
      EndIf
      x + 26
      button = Pow(2,i)
      If (*info\dwButtons & button)
        Circle(x,y,12,FrontColor)
        Circle(x,y,10,$193CC0)
      Else
        DrawingMode(4)
        Circle(x,y,12,FrontColor)
        Circle(x,y,11,LineColor)
        DrawingMode(1)
      EndIf
      If (i<*caps\wNumButtons)
        DrawText(x-7,y-6,RSet(Str(i+1),2,"0"),TextColor)
      Else
        DrawText(x-7,y-6,RSet(Str(i+1),2,"0"),FrontColor)
      EndIf
    Next
   
    x = 10
   
    DrawText(x,10,"Name: "+PeekS(@*caps\szPname),TextColor)
    DrawText(x,25,"Manufacturer: 0x"+Hex(*caps\wMid),TextColor)
    DrawText(x,40,"Product: 0x"+Hex(*caps\wPid),TextColor)
    DrawText(x,55,"RegKey: "+PeekS(@*caps\szRegKey),TextColor)
    DrawText(x,70,"OEM: "+PeekS(@*caps\szOEMVxD),TextColor)
   
    DrawText(x,105,"Nb Axes: "+Str(*caps\wNumAxes)+"/"+Str(*caps\wMaxAxes),TextColor)
    DrawText(x,120,"Period: "+Str(*caps\wPeriodMin)+"/"+Str(*caps\wPeriodMax)+" ms",TextColor)
    DrawText(x,150,"HasZ: "+Str((*caps\wCaps & #JOYCAPS_HASZ)/#JOYCAPS_HASZ),TextColor)
    DrawText(x,165,"HasR: "+Str((*caps\wCaps & #JOYCAPS_HASR)/#JOYCAPS_HASR),TextColor)
    DrawText(x,180,"HasU: "+Str((*caps\wCaps & #JOYCAPS_HASU)/#JOYCAPS_HASU),TextColor)
    DrawText(x,195,"HasV: "+Str((*caps\wCaps & #JOYCAPS_HASV)/#JOYCAPS_HASV),TextColor)
    DrawText(x,210,"HasPOV: "+Str((*caps\wCaps & #JOYCAPS_HASPOV)/#JOYCAPS_HASPOV),TextColor)
    DrawText(x,225,"POV4DIR: "+Str((*caps\wCaps & #JOYCAPS_POV4DIR)/#JOYCAPS_POV4DIR),TextColor)
    DrawText(x,240,"POVCTS: "+Str((*caps\wCaps & #JOYCAPS_POVCTS)/#JOYCAPS_POVCTS),TextColor)
    DrawText(x,255,"Caps: %"+RSet(Bin(*caps\wCaps),7,"0"),TextColor)
   
    DrawText(x,285,"POV: "+Str(*info\dwPOV),TextColor) ; <-------croix directionnelle est ici !!!
    
    DrawText(x,315,"X: "+RSet(Str(*info\dwXpos),5,"0")+" ("+Str(*caps\wXmin)+","+Str(*caps\wXmax)+")",TextColor)
    DrawText(x,330,"Y: "+RSet(Str(*info\dwYpos),5,"0")+" ("+Str(*caps\wYmin)+","+Str(*caps\wYmax)+")",TextColor)
    DrawText(x,345,"Z: "+RSet(Str(*info\dwZpos),5,"0")+" ("+Str(*caps\wZmin)+","+Str(*caps\wZmax)+")",TextColor)
    DrawText(x,360,"R: "+RSet(Str(*info\dwRpos),5,"0")+" ("+Str(*caps\wRmin)+","+Str(*caps\wRmax)+")",TextColor)
    DrawText(x,375,"U: "+RSet(Str(*info\dwUpos),5,"0")+" ("+Str(*caps\wUmin)+","+Str(*caps\wUmax)+")",TextColor)
    DrawText(x,390,"V: "+RSet(Str(*info\dwVpos),5,"0")+" ("+Str(*caps\wVmin)+","+Str(*caps\wVmax)+")",TextColor)
   
    DrawText(iw-175,ih-15,"Buttons: %"+RSet(Bin(*info\dwButtons),16,"0"),TextColor)
   
    StopDrawing()
   
    SetGadgetState(0,ImageID(0))
   
  EndIf
 
EndProcedure

iw = 640
ih = 480
;If OpenWindow(0,0,0,iw,ih,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"Joystick (Win32)")
If OpenWindow(0,0,0,iw,ih,"Joystick (Win32)",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
 
  If CreateGadgetList(WindowID(0))
    CreateImage(0,iw,ih)
    ImageGadget(0,0,0,iw,ih,ImageID(0))
    LoadFont(0,"Verdana",7,#PB_Font_HighQuality)
  EndIf
 
  If joySetCapture_(WindowID(0),#JOYSTICKID1,#Null,#False) = #JOYERR_NOERROR
    If joyGetDevCaps_(#JOYSTICKID1,joyCaps.JOYCAPS,SizeOf(JOYCAPS)) = #JOYERR_NOERROR
      ; done
    EndIf
  EndIf
 
  joyInfoEx.JOYINFOEX
  joyInfoEx\dwFlags = #JOY_RETURNALL
  joyInfoEx\dwSize = SizeOf(JOYINFOEX)
 
  Repeat
   
    Select WaitWindowEvent(50)
      Case #PB_Event_CloseWindow: Break
    EndSelect
   
;   joyGetPosEx_(#JOYSTICKID1,joyInfoEx.JOYINFOEX)
   
    If joyGetPosEx_(#JOYSTICKID1,joyInfoEx) = #JOYERR_NOERROR
      MyDraw(joyCaps,joyInfoEx)
    EndIf
   
    Delay(1)
   
  ForEver
 
  If joyReleaseCapture_(#JOYSTICKID1) = #JOYERR_NOERROR
    ; done
  EndIf

EndIf
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: joypad

Message par Backup »

beauregard a écrit : Le code qui suit est de flype, que je remercie,

oui moi aussi !! :D

marche tres bien avec ma manette "thrustmaster" 360 modena :)

tout mes boutons sont geré !!
ma croix, mes 2 joystick analogique aussi !! :D

manque juste les vibrations de la manettes .... ?? Flype ?? pour la nouvelle année un petit cadeau surprise ? :lol:

en tout cas merci c'est cool :)
beauregard
Messages : 1307
Inscription : dim. 08/juil./2007 18:32
Localisation : Toulouse

Re: joypad

Message par beauregard »

Dobro a écrit : manette "thrustmaster" 360 modena :)
bonsoir,
Ah ! Je viens de comprendre qu'il s'agissait d'un volant...
tout mes boutons sont geré !!
depuis peu, j'ai eu la surprise de découvrir que tout les boutons* sont gérés en natif( la doc à besoin d'une mise à jour).
A+

*non analogique
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: joypad

Message par Backup »

beauregard a écrit :
Dobro a écrit : manette "thrustmaster" 360 modena :)
bonsoir,
Ah ! Je viens de comprendre qu'il s'agissait d'un volant...

Pas du tout :lol:

c'est une manette type Playstation :D
Avatar de l’utilisateur
Thyphoon
Messages : 2697
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Re: joypad

Message par Thyphoon »

Dobro a écrit : marche tres bien avec ma manette "thrustmaster" 360 modena :
Connais tres bien cette "manette" a l'époque ou je bossais chez Guillemot (Hercules/thrustmaster/Ubisoft) ça me rapelle quelques souvenir ...
Et a propos de volant, est ce qu'il existe une lib pour le Force Feed Back ?
beauregard
Messages : 1307
Inscription : dim. 08/juil./2007 18:32
Localisation : Toulouse

couché à 4H du mat, chuis pas frais.

Message par beauregard »

Dobro a écrit :c'est une manette type Playstation :D
ah! ça tombe bien car dans ce cas, j'attend un petit commentaire sur le message concernant les boutons d'un joypad et, heu, leur concordance.

As-tu un petit lien vers une belle image de ce joypad ?
moi j'ai trouvé çà( le net=Q):
http://www.ferraricluboflasvegas.com/ca ... dena-2.jpg
Dernière modification par beauregard le sam. 05/janv./2008 11:02, modifié 1 fois.
beauregard
Messages : 1307
Inscription : dim. 08/juil./2007 18:32
Localisation : Toulouse

Re: joypad

Message par beauregard »

Thyphoon a écrit :est ce qu'il existe une lib
as-tu testé le code de Flype ? ( 2ème message)
http://www.purebasic.fr/french/viewtopic.php?t=7622
Avatar de l’utilisateur
Thyphoon
Messages : 2697
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Re: joypad

Message par Thyphoon »

beauregard a écrit :
Thyphoon a écrit :est ce qu'il existe une lib
as-tu testé le code de Flype ? ( 2ème message)
http://www.purebasic.fr/french/viewtopic.php?t=7622
Oui Oui j'ai essayé ! Mais ça marche pas pour le FFB. mais bon j'ai pas un FFB standard c'est une bidouille des volants Arcades
beauregard
Messages : 1307
Inscription : dim. 08/juil./2007 18:32
Localisation : Toulouse

Message par beauregard »

Thyphoon a écrit :Oui Oui j'ai essayé ! Mais ça marche pas pour le FFB. mais bon j'ai pas un FFB standard c'est une bidouille des volants Arcades
çà va pas être facile, mais faut pas désespérer car le combat n'est pas terminé, voyez:
http://www.purebasic.fr/english/viewtop ... getdevcaps

http://www.purebasic.fr/english/viewtop ... getdevcaps

http://www.purebasic.fr/english/viewtop ... getdevcaps

http://www.purebasic.fr/english/viewtop ... getdevcaps

et là, en allemagne( mot clé: joystick ):
http://www.purebasic.fr/german/search.p ... 622ff444e0

un site important me semble t il
http://www.purearea.net/pb/english/index.htm
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: couché à 4H du mat, chuis pas frais.

Message par Backup »

beauregard a écrit : As-tu un petit lien vers une belle image de ce joypad ?
moi j'ai trouvé çà( le net=Q):
http://www.ferraricluboflasvegas.com/ca ... dena-2.jpg

http://www.clubic.com/telecharger-pilot ... force.html

Image
Image
beauregard
Messages : 1307
Inscription : dim. 08/juil./2007 18:32
Localisation : Toulouse

Re: couché à 4H du mat, chuis pas frais.

Message par beauregard »

un bien bel objet que tu as là :)
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: couché à 4H du mat, chuis pas frais.

Message par Backup »

beauregard a écrit :un bien bel objet que tu as là :)
oui mais il ne me sert pas !! :lol:

en general j'utilise le clavier pour jouer !! :lol:

il n'y a que sur emulateur Playstation que c'est interressant !! :)
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Message par Ollivier »

Salut Beauregard,

C'est avec quelques mois de retard que je réponds à ce sujet sur lequel je suis tombé.

Franchement bien : un code simple et hop, ça marche ! J'ai tout ce qu'il me faut comme contrôle pour la manette.

J'ai dû juste faire une petite modif qui n'a rien à voir avec le programme en lui-même : J'ai mis le Delay() à 50 ms. ça semble beaucoup, pourtant ça m'évite que un petit plantage en arrière-plan.

Woilà donc merci à Beauregard mais aussi tout ceux qui ont contribué à tester et mettre en route les manettes analogiques. C'est un temps précieux de gagné.

Ollivier

Edit: J'avais pas vu qu'il y avait 2 codes. Résumé : un délay à 10ms pour le premier code et un à 50ms pour le second code, sinon ya le feu au lac...

Configuration :
CPU : Machine de Turing / Mémoire : 1 classeur de 500 pages perforées contenant chacune 32 octets / Modem avec code morse intégré.
beauregard
Messages : 1307
Inscription : dim. 08/juil./2007 18:32
Localisation : Toulouse

saluons nous joyeusement

Message par beauregard »

Ollivier a écrit :Salut Beauregard,

C'est avec quelques mois de retard que je réponds à ce sujet sur lequel je suis tombé.

Franchement bien : un code simple et hop, ça marche ! J'ai tout ce qu'il me faut comme contrôle pour la manette.
Salut Ollivier
oui, on a le plus rapide des basics, mais surtout doué pour la 2D( jusqu'à la version 4.20), alors une gestion des manettes est juste indispensable, un peu comme un moteur3D et son joyeux compagnon, le moteur physique( pour la version 4.30, si Fred réalise l'objectif vers lequel il tend car il est grand temps). :)
Ollivier a écrit : Edit: J'avais pas vu qu'il y avait 2 codes. Résumé : un délay à 10ms pour le premier code et un à 50ms pour le second code, sinon ya le feu au lac...
Configuration :
CPU : Machine de Turing / Mémoire : 1 classeur de 500 pages perforées contenant chacune 32 octets / Modem avec code morse intégré.
je comprend pourquoi tu jongle ainsi avec les delay() . Je te conseille de coder sur un pet, c'est bien plus moderne, et aussi bien plus fun comme machine ! ;) http://fr.wikipedia.org/wiki/PET_2001

Ta machine date d'au moins l'an 2000 ? La question qu'il faudrait se poser, c'est si le pb d'aujourd'hui est adapté aux vieilles machines. As-tu les même problème avec un exécutable de ton jeu réalisé à partir de la 3.94 ?...
Répondre