Voici l'intégralité du code.
J'essaye de faire un jeu de rythme, vous risquez de trouver ça naïf comme façon de faire mais je débute

.
Dans le fichier .txt il y a des millisecondes qui correspondent à l'enregistrement de l'apuie/relachage des touches que j'ai fait une fois au préalable avec un autre programme en écoutant la musique .... , jusqu'à présent je voulais afficher le BMP du logo PB quand lors de la lecture de mon fichier, la touche était enfoncée et le faire disparaitre quand l'enregistrement ne montrait qu'aucune touche n'était enfoncée.
Sous mes if(s) il y avait des clearscreens flipbuffer dans le cas éteins et des clearscreen+affichage logo+flipbuffer dans le cas allumé.
Ca marchait mais je trouvais que le logo clignotant ne servait à rien car trop rapide je compte maintenant faire changer un sprite de couleur pour décrire le cycle (par exemple plus il est vert plus on est proche du bon moment et quand il est rouge c'est qu'on est loin).
Mais bon je pense pouvoir me débrouiller si je comprends ce qui fait que l'affichage joue sur mes "if(s)".
Code : Tout sélectionner
If ReadFile(0, "record_touche.txt") And InitSprite() And OpenScreen(1920, 1080, 32, "Sprite") And InitKeyboard () And InitSound()
LoadSprite(0,"PureBasic.bmp")
LoadSprite(1, "Barre_verte.bmp")
LoadSprite(2, "Barre_noire.bmp")
LoadSprite(3, "Habillage_100_300.bmp")
LoadSprite(4, "Wait.bmp")
LoadMusic(0, "another_one_bites.mod")
a=0 ; Variable qui contiendra les moments des transistions
test=0
Chuisallume=0 ; inverseur d'affichage
score=0 ; donne le score
tolerance=50 ; C'est la tolérance aux impulsions
long=Lof(0)
Armement_betise=0
Compteur_periode=0
Dim Montableau(long)
j=0
Etape_tableau=0
While Eof(0) = 0 ; Boucle tant que la fin du fichier n'est pas atteinte. (Eof = 'End Of File')
Montableau(j) = Val(ReadString(0))
j=j+1
Wend
PlayMusic(0)
Ref_temporelle.q=ElapsedMilliseconds() ; prise de référence du temps
If Etape_tableau=0 And test=0
ClearScreen(RGB(0,0,0))
DisplaySprite(4,750,500)
FlipBuffers()
test=1
EndIf
Repeat
; Debug Etape_tableau
;ClearScreen(RGB(0,0,0))
; DisplaySprite(0, 100, 100) ; logo pure basic
; DisplaySprite(1,533,500) ;barre verte
; DisplaySprite(2,533,500-score*2) ; barre noire
; DisplayTransparentSprite(3,500,500) ; habillage
; FlipBuffers()
If (ElapsedMilliseconds()-Ref_temporelle)=Montableau(Etape_tableau) And Chuisallume=0 ; Condition pour afficher
Etape_tableau=Etape_tableau+1
Chuisallume=1
EndIf
If (ElapsedMilliseconds()-Ref_temporelle)=Montableau(Etape_tableau) And Chuisallume=1 ; Condition pour éteindre
Etape_tableau=Etape_tableau+1
Chuisallume=0
EndIf
; Détermination de la zone de score front montant
If ((ElapsedMilliseconds()-Ref_temporelle)>(Montableau(Etape_tableau)-tolerance) Or (ElapsedMilliseconds()-Ref_temporelle)<(Montableau(Etape_tableau)+tolerance)) And Chuisallume=0
zoneup=1
Else
zoneup=0
EndIf
; Détermination de la zone de score front descendant.....devenu inutile car je ne score plus que sur les montants
;If ((ElapsedMilliseconds()-Ref_temporelle)<(Montableau(n)-tolerance) Or (ElapsedMilliseconds()-Ref_temporelle)>(Montableau(n)+tolerance)) And Chuisallume=1
; zonedown=1
;Else
; zonedown=0
;EndIf
; Calcul du score sur impulsion clavier
ExamineKeyboard()
If KeyboardPushed(#PB_Key_L)
Debug Etape_tableau
j=0
While j<50
Debug Montableau(j)
j=j+1
Wend
Debug ElapsedMilliseconds()
Debug "Temps écoulé : "+Str(Ref_temporelle)+" millisecondes"
Debug score
End
EndIf
If KeyboardPushed(#PB_Key_All) And zoneup=1 And front_up=0 ; Front montant dans la zone ou c'est bien
score=score+2
front_up=1
; front_down=0
EndIf
If KeyboardReleased(#PB_Key_All); And zonedown=1 And front_down=0 ; Front descendant dans la zone ou c'est bien
; score=score+2
; front_down=1
front_up=0
EndIf
If KeyboardPushed(#PB_Key_All) And zoneup=0 And front_up=0 ; Front montant hors zone
score=score-1
front_up=1
; front_down=0
EndIf
; If KeyboardReleased(#PB_Key_All) And zonedown=0 And front_down=0 ; Front descendant hors zone
; score=score-2
; front_down=1
; front_up=0
; EndIf
; Retrait de point si pas d'impulsion clavier
If Etape_tableau=Compteur_periode+2
If Armement_betise=1 And score>0
score=score-1
EndIf
Compteur_periode=Etape_tableau
Armement_betise=1
EndIf
If KeyboardPushed(#PB_Key_All)
Armement_betise=0
EndIf
Until Etape_tableau=50
CloseFile(0)
; CloseScreen()
Debug score
Debug Etape_tableau
Else
MessageRequester("PureBasic", "Error", 0)
EndIf