Problème avec ExamineKeyboard

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
AWEAR
Messages : 264
Inscription : ven. 28/oct./2005 8:20
Localisation : Mayotte ( 976 ), Océan Indien, France

Message par AWEAR »

Il faut que tu mette un ExamineKeyboard () dans ta deuxième boucle, sinon le programme ne détectera jamais l'appui de la touche échap
La vie est une rose dont il faut accepter les épines, mais la mienne est fannée, arrosée par le goût de mes larmes. (Soprano)
wolfjeremy
Messages : 1202
Inscription : sam. 31/déc./2005 23:52

Message par wolfjeremy »

Ha ouai zut :oops: merci... excusez moi vous me trouver surement chian mais bon je debute alors mes erreur je les vois pas toujour :oops:

Mais y a un autre truc, pourquoi il n'affiche pas a coté de "votre réponse" la touche qui a été appuyer ? :(

EDIT: c'est bon j'ai trouver :P j'avai oublier mes flipbuffers()
Anonyme

Message par Anonyme »

J'ai survolé ton code, je l'ai trouver un peu fouilli et j'ai la flèmme de réflechir, donc j'en ai fait un spécialement pour toi ^^ :wink:
Je n'explique rien, mais rien de compliqué, si tu as un minimum de cervelle de devrait bien t'en sortir. :D

Code : Tout sélectionner

InitSprite () 
InitKeyboard () 
OpenScreen (800,600,32, "QuiZZZzzz" ) 



Global Points.l , KeyFlag.b



Structure Questions
 Text.s
 Reponse.s[7]
 ReponseValide.l
EndStructure : Dim Question.Questions(5)




Declare Init_question()
Declare AfficheQuestion()



Init_question()


Repeat 
 ClearScreen(0,0,0) 
  ExamineKeyboard() 
   AfficheQuestion()
    FlipBuffers() 
     Until KeyboardPushed ( #PB_Key_Escape ) 
      CloseScreen()
       End




Procedure AfficheQuestion()
Shared Index.l,Debriefing.b

If Index=0 : Index=1 : EndIf
If Index=6 : Index=5 : Debriefing=1 : EndIf


If Debriefing=1
ClearScreen(0,0,0)
 StartDrawing(ScreenOutput()) 
  FrontColor(255,255,255)
   DrawingMode(1)
    Locate(10,10)
     DrawText("Vous avez eu "+Str(Points*4)+" points sur 20")
      StopDrawing ()
       EndIf

If Debriefing<>1

StartDrawing(ScreenOutput()) 
 FrontColor(255,255,255)
  DrawingMode(1)
   Locate(10,10)
    DrawText(Question(Index)\Text)

For i = 1 To 5
  Locate(50,50+i*20)
  DrawText(Str(i)+"--->    "+Question(Index)\Reponse[i])
Next 

StopDrawing ()

;******************************************************************************
If KeyboardPushed(#PB_Key_1) And Question(Index)\ReponseValide=1 And KeyFlag=0
 KeyFlag=1
  Index+1
   Points+1
    If Index=>5 : Goto Debrief : EndIf
     EndIf



If KeyboardPushed(#PB_Key_1) And Question(Index)\ReponseValide<>1 And KeyFlag=0
 KeyFlag=1
  Index+1
   If Index=>5 : Goto Debrief : EndIf
    EndIf
    
    
;******************************************************************************
 If KeyboardPushed(#PB_Key_2) And Question(Index)\ReponseValide=2 And KeyFlag=0
 KeyFlag=1
  Index+1
   Points+1
    If Index=>5 : Goto Debrief : EndIf
     EndIf

If KeyboardPushed(#PB_Key_2) And Question(Index)\ReponseValide<>2 And KeyFlag=0
 KeyFlag=1
  Index+1
   If Index=>5 : Goto Debrief : EndIf
    EndIf
;******************************************************************************
 If KeyboardPushed(#PB_Key_3) And Question(Index)\ReponseValide=3 And KeyFlag=0
 KeyFlag=1
  Index+1
   Points+1
    If Index=>5 : Goto Debrief : EndIf
     EndIf

If KeyboardPushed(#PB_Key_3) And Question(Index)\ReponseValide<>3 And KeyFlag=0
 KeyFlag=1
  Index+1
   If Index=>5 : Goto Debrief : EndIf
    EndIf
;******************************************************************************
 If KeyboardPushed(#PB_Key_4) And Question(Index)\ReponseValide=4 And KeyFlag=0
 KeyFlag=1
  Index+1
   Points+1
    If Index=>5 : Goto Debrief : EndIf
     EndIf

If KeyboardPushed(#PB_Key_4) And Question(Index)\ReponseValide<>4 And KeyFlag=0
 KeyFlag=1
  Index+1
   If Index=>5 : Goto Debrief : EndIf
    EndIf
;******************************************************************************
 If KeyboardPushed(#PB_Key_5) And Question(Index)\ReponseValide=5 And KeyFlag=0
 KeyFlag=1
  Index+1
   Points+1
    If Index=>5 : Goto Debrief : EndIf
     EndIf

If KeyboardPushed(#PB_Key_5) And Question(Index)\ReponseValide<>5 And KeyFlag=0
 KeyFlag=1
  Index+1
   If Index=>5 : Goto Debrief : EndIf
    EndIf
;******************************************************************************
 
 
 EndIf

Debrief:

If KeyboardPushed(#PB_Key_All) = 0 : KeyFlag=0 : EndIf

EndProcedure

Procedure Init_question()

;************************************************
Question(1)\Text = "(1+1)*5?"

Question(1)\Reponse[1] = "7"
Question(1)\Reponse[2] = "-3"
Question(1)\Reponse[3] = "10"
Question(1)\Reponse[4] = "15"
Question(1)\Reponse[5] = "0"

Question(1)\ReponseValide = 3
;************************************************
Question(2)\Text = "((256*2)/2)*2?"

Question(2)\Reponse[1] = "512"
Question(2)\Reponse[2] = "1024"
Question(2)\Reponse[3] = "64"
Question(2)\Reponse[4] = "768"
Question(2)\Reponse[5] = "-256"

Question(2)\ReponseValide = 1
;************************************************
Question(3)\Text = "Hausse de combat du FAMAS?"

Question(3)\Reponse[1] = "100"
Question(3)\Reponse[2] = "200"
Question(3)\Reponse[3] = "300"
Question(3)\Reponse[4] = "400"
Question(3)\Reponse[5] = "500"

Question(3)\ReponseValide = 3
;************************************************
Question(4)\Text = "Sur une carte au 1/50000° , 1cm = ?"

Question(4)\Reponse[1] = "1Km"
Question(4)\Reponse[2] = "50m"
Question(4)\Reponse[3] = "500m"
Question(4)\Reponse[4] = "50km"
Question(4)\Reponse[5] = "5m"

Question(4)\ReponseValide = 3
;************************************************
Question(5)\Text = "3200 millièmes est égal à :"

Question(5)\Reponse[1] = "180 degrés"
Question(5)\Reponse[2] = "45 degrés"
Question(5)\Reponse[3] = "90 degrés"
Question(5)\Reponse[4] = "360 degrés"
Question(5)\Reponse[5] = "10 degrés"

Question(5)\ReponseValide = 1
;************************************************

EndProcedure
wolfjeremy
Messages : 1202
Inscription : sam. 31/déc./2005 23:52

Message par wolfjeremy »

Merci Cpl.Bator je vai regarder sa :P
Avatar de l’utilisateur
Polux
Messages : 440
Inscription : mer. 21/janv./2004 11:17
Localisation : france
Contact :

Message par Polux »

caca les goto :mad:
à ne jamais utiliser... ( très lent )
wolfjeremy
Messages : 1202
Inscription : sam. 31/déc./2005 23:52

Message par wolfjeremy »

Et les gosub je supose que c'est pas mieu ? faut utiliser quoi alors ? lol
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

Sans goto , sans gosub , sans structure , sans liste chainée , sans data , et sans les mains !

Code : Tout sélectionner

InitSprite()
InitKeyboard()

OpenScreen(800,600,32, "QuiZZZzzz")

Global reponse$, NoQuestion, QuestionMax
Global MemReponse
NoQuestion = 1
QuestionMax = 3
MemReponse = 0

Dim Question.s(QuestionMax,4)
Dim BonneReponse(QuestionMax)

Question(1,0)="1) Quel est le nom correct : "
Question(1,1)="a) PureBasique"
Question(1,2)="b) PoureBasic"
Question(1,3)="c) PureBasic"
Question(1,4)="d) PoureBasique"
BonneReponse(1)=3

Question(2,0)="2) Qui est le createur de ce quiz: "
Question(2,1)="a) moMo"
Question(2,2)="b) DOBRO"
Question(2,3)="c) toTo"
Question(2,4)="d) wolfjeremy"
BonneReponse(2)=4

Question(3,0)="3) On dit merci Qui ? : "
Question(3,1)="a) Geraldine"
Question(3,2)="b) Albert"
Question(3,3)="c) Comtois"
Question(3,4)="d) wolfjeremy"
BonneReponse(3)=3

Procedure AfficheQuestion(No)
   StartDrawing ( ScreenOutput ())
      DrawingMode (1)
      FrontColor(89,200,89)
      Locate (10,10)
      DrawText ("Bienvenue dans mon premier programme.")
      Locate (10,30)
      DrawText ("Createur : wolfjeremy")
      FrontColor (255, 57, 44)
      Locate (10,80)
      DrawText (Question(No,0))
      FrontColor (242, 193, 50)
      For i = 1 To 4
         Locate (10,80 + i * 20)
         DrawText (Question(No,i))
      Next i   
      Locate (10,180)
      DrawText ("Votre reponse: ")
   StopDrawing ()
EndProcedure

Procedure AttenteReponse(No)
   If ExamineKeyboard()
      reponse$=KeyboardInkey()
      reponse=Asc(LCase(reponse$))-96
      If reponse >0 And reponse<5 And MemReponse=0
         MemReponse = Reponse
      EndIf
   EndIf
EndProcedure
Procedure WaitKey()
   ProcedureReturn KeyboardPushed(#PB_Key_Space)
EndProcedure
Procedure AfficheReponseJoueur(No)
   StartDrawing ( ScreenOutput ())
      DrawingMode (1)
      FrontColor (255, 57, 44)
      Locate(110,180)
      DrawText(Question(No,MemReponse))
      ;C'est la bonne réponse ?
      Locate(10,200)
      If MemReponse = BonneReponse(No)
         DrawText("Bonne reponse !")
      Else   
         DrawText("La bonne reponse est : " + Question(No,BonneReponse(No)))
      EndIf
      DrawingMode (0)
      Locate(10,400)
      FrontColor(255,255,0)
      BackColor(0,0,255)
      DrawText("Appuyez la barre espace pour passer a la question suivante")
      
      ;Passe à la question suivante
      If WaitKey()
         If NoQuestion < QuestionMax
            NoQuestion + 1
            MemReponse = 0
         EndIf   
      EndIf   
   StopDrawing ()
EndProcedure

Repeat
   ClearScreen(0,0,0)
   ExamineKeyboard()
   AfficheQuestion(NoQuestion)
   AttenteReponse(NoQuestion)
   If MemReponse
      AfficheReponseJoueur(NoQuestion)
   EndIf   
   FlipBuffers()
Until KeyboardPushed ( #PB_Key_Escape )
tu peux le reprendre en ajoutant une structure , des datas pour stocker tes questions et les réponses.
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
wolfjeremy
Messages : 1202
Inscription : sam. 31/déc./2005 23:52

Message par wolfjeremy »

Merci comtois :wink:

Les gars la le code est déjà asser complex pour moi lol aller pas me chercher un code sans les Sans goto , sans gosub , sans structure , sans liste chainée , sans data , et sans les mains et sans les yeux en plus... lol vais déjà esseyer de m'en sortir avec ce machin 8O (faut que j'aille voir les data comment sa marche au faite lol)
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

wolfjeremy a écrit :Les gars la le code est déjà asser complex pour moi lol
Taratata , j'ai utilisé les mêmes commandes que dans ton code , rien de nouveau sauf le tableau :)
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Et le même, sans goto , sans gosub , sans structure , sans liste chainée , sans data , sans les mains, sans les pieds, ....et sans code !
CameleonTH
Messages : 333
Inscription : sam. 25/juin/2005 11:18
Localisation : Laon (02)
Contact :

Message par CameleonTH »

Euh Chris tu est un peu lourd la :D
wolfjeremy
Messages : 1202
Inscription : sam. 31/déc./2005 23:52

Message par wolfjeremy »

woaw Chris t'est trop fort 8O sa marche en plus ! je gagne tout le temp :P lol

Vais aller voir pour les tableau et les data si je trouve des tuto mois... vai faire le tour des forum :wink:
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

CameleonTH a écrit :Euh Chris tu est un peu lourd la :D
Pourquoi, lourd?
Répondre