Tic Tac toe

Programmation avancée de jeux en PureBasic
Avatar de l’utilisateur
venom
Messages : 3128
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Tic Tac toe

Message par venom »

Bonsoir,

voilà je me suis amusé a codé un petit Tic Tac Toe très basic (pas de menu etc..) il est jouable a 2 avec la même souris. quand je disais que c’était basique
La conception est simple car le jeu est basé sur des ButtonImageGadget et un fichier preference rien de plus.

Screen:
Image

Lien vers le zip

Code source:

Code : Tout sélectionner

Enumeration   
  #Window_0
EndEnumeration

Enumeration   
  #Font_0
  
  #Vide
  #Cercle
  #Croix
  
  #Button_1
  #Button_2
  #Button_3
  #Button_4
  #Button_5
  #Button_6
  #Button_7
  #Button_8
  #Button_9
  
  #Text_Joueur
EndEnumeration

UsePNGImageDecoder()
Dossier$ = ""
DossierImages$ = "images\"
LoadFont(#Font_0, "Arial", 20, #PB_Font_Bold)

Procedure CreatePref()
If CreatePreferences(Dossier$+"TicTacToe.pref", #PB_Preference_NoSpace)
  For a = 1 To 9
   WritePreferenceString(Str(a), "0") 
  Next 
   WritePreferenceString("joueur", "1") 
  ClosePreferences()
EndIf 
EndProcedure
CreatePref()

  If OpenWindow(#Window_0, 0, 0, 300, 350, "Tic Tac Toe", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
      SetWindowColor(#Window_0, RGB(0, 0, 0))
    
      LoadImage(#Vide, DossierImages$+"vide.png",  #PB_Sprite_AlphaBlending)
      LoadImage(#Cercle, DossierImages$+"rond.png",  #PB_Sprite_AlphaBlending)
      LoadImage(#Croix, DossierImages$+"croix.png",  #PB_Sprite_AlphaBlending)
      
      ButtonImageGadget(#Button_1, 0, 0, 100, 100, ImageID(#Vide), #PB_Button_Toggle)
      ButtonImageGadget(#Button_2, 100, 0, 100, 100, ImageID(#Vide), #PB_Button_Toggle)
      ButtonImageGadget(#Button_3, 200, 0, 100, 100, ImageID(#Vide), #PB_Button_Toggle)
      
      ButtonImageGadget(#Button_4, 0, 100, 100, 100, ImageID(#Vide), #PB_Button_Toggle)
      ButtonImageGadget(#Button_5, 100, 100, 100, 100, ImageID(#Vide), #PB_Button_Toggle)
      ButtonImageGadget(#Button_6, 200, 100, 100, 100, ImageID(#Vide), #PB_Button_Toggle)
      
      ButtonImageGadget(#Button_7, 0, 200, 100, 100, ImageID(#Vide), #PB_Button_Toggle)
      ButtonImageGadget(#Button_8, 100, 200, 100, 100, ImageID(#Vide), #PB_Button_Toggle)
      ButtonImageGadget(#Button_9, 200, 200, 100, 100, ImageID(#Vide), #PB_Button_Toggle)
      
      TextGadget(#Text_Joueur, 0, 310, 300, 50, "JOUEUR 1", #PB_Text_Center)
       SetGadgetColor(#Text_Joueur, #PB_Gadget_BackColor, RGB(0, 0, 0))
       SetGadgetColor(#Text_Joueur, #PB_Gadget_FrontColor , RGB(255, 255, 255))
      SetGadgetFont(#Text_Joueur, FontID(#Font_0))
       
  EndIf

  Repeat
   EventID = WaitWindowEvent()
    If EventID = #PB_Event_Gadget
      Select EventGadget()
          
;{ Tout ce qui concerne le bouton 1
        Case #Button_1 ; appuie sur le bouton
         If GetGadgetState(#Button_1) = 0 ; si le bouton = 0 alors il a déja etait cliquer
          SetGadgetState(#Button_1, 1) ; on lui remet donc l'identifiant 1
          MessageRequester("Erreur", "Case déjà prise", 0) ; on informe l'utilisateur que le bouton est deja pris
         Else ; si le bouton est vide
           OpenPreferences(Dossier$+"TicTacToe.pref") ; on ouvre le fichier pref
            If Val(ReadPreferenceString("joueur", "")) = 1 ; on regarde si c'est au tour du joueur n°1 si oui:
             SetGadgetAttribute(#Button_1, #PB_Button_Image, ImageID(#Croix)) ; on affiche la croix dans le BoutonImageGadget
              WritePreferenceString("1", "1") ; on modifie la ligne 1 du fichier pref pour dire que la case 1 est egale a la croix
              WritePreferenceString("joueur", "2") ; on modifie la ligne joueur pour dire que le prochain tour c'est au joueur 2
              SetGadgetText(#Text_Joueur, "JOUEUR 2") ; on modifie aussi le TextGadget pour indiquer que c'est au tour du joueur 2
              
              ; verifie si il y a victoire
              If Val(ReadPreferenceString("1", "")) + Val(ReadPreferenceString("2", "")) + Val(ReadPreferenceString("3", "")) = 3 Or Val(ReadPreferenceString("1", "")) + Val(ReadPreferenceString("4", "")) + Val(ReadPreferenceString("7", "")) = 3 Or Val(ReadPreferenceString("1", "")) + Val(ReadPreferenceString("5", "")) + Val(ReadPreferenceString("9", "")) = 3
               reponseMsg = MessageRequester("VICTOIRE", "Bravo, le JOUEUR 1 gagne la partie. Souhaitez vous faire une nouvelle partie ?", #PB_MessageRequester_YesNo)
               If reponseMsg = 6
                For ID = #Button_1 To #Button_9
                 SetGadgetAttribute(ID, #PB_Button_Image, ImageID(#Vide))
                 SetGadgetState(ID, 0)
                 SetGadgetText(#Text_Joueur, "JOUEUR 1")
                 CreatePref()
                Next 
               Else
                End 
               EndIf 
              EndIf 

               
            ElseIf Val(ReadPreferenceString("joueur", "")) = 2 ; on regarde si c'est au tour du joueur n°2 si oui:
             SetGadgetAttribute(#Button_1, #PB_Button_Image, ImageID(#Cercle)) ; on affiche un cercle dans le BoutonImageGadget
              WritePreferenceString("1", "5") ; on modifie la ligne 1 du fichier pref pour dire que la case 1 est egale a la croix
              WritePreferenceString("joueur", "1") ; on modifie la ligne joueur pour dire que le prochain tour c'est au joueur 1
              
              ; verifie si il y a victoire
              If Val(ReadPreferenceString("1", "")) + Val(ReadPreferenceString("2", "")) + Val(ReadPreferenceString("3", "")) = 15 Or Val(ReadPreferenceString("1", "")) + Val(ReadPreferenceString("4", "")) + Val(ReadPreferenceString("7", "")) = 15 Or Val(ReadPreferenceString("1", "")) + Val(ReadPreferenceString("5", "")) + Val(ReadPreferenceString("9", "")) = 15
               reponseMsg = MessageRequester("VICTOIRE", "Bravo, le JOUEUR 2 gagne la partie. Souhaitez vous faire une nouvelle partie ?", #PB_MessageRequester_YesNo)
               If reponseMsg = 6
                For ID = #Button_1 To #Button_9
                 SetGadgetAttribute(ID, #PB_Button_Image, ImageID(#Vide))
                 SetGadgetState(ID, 0)
                 CreatePref()
                Next 
               Else
                End 
               EndIf 
              EndIf
             
               SetGadgetText(#Text_Joueur, "JOUEUR 1") ; on modifie aussi le TextGadget pour indiquer que c'est au tour du joueur 1
            EndIf 
            
            ; verifie si il y a nul
             If Val(ReadPreferenceString("1", "")) + Val(ReadPreferenceString("2", "")) + Val(ReadPreferenceString("3", "")) + Val(ReadPreferenceString("4", "")) + Val(ReadPreferenceString("5", "")) + Val(ReadPreferenceString("6", "")) + Val(ReadPreferenceString("7", "")) + Val(ReadPreferenceString("8", "")) + Val(ReadPreferenceString("9", "")) = 25
               reponseMsg = MessageRequester("NUL", "Match nul. Souhaitez vous faire une nouvelle partie ?", #PB_MessageRequester_YesNo)
               If reponseMsg = 6
                For ID = #Button_1 To #Button_9
                 SetGadgetAttribute(ID, #PB_Button_Image, ImageID(#Vide))
                 SetGadgetState(ID, 0)
                 CreatePref()
                Next 
               Else
                End 
               EndIf
             EndIf 
             
           ClosePreferences() ; on ferme la lecture du fichier pref
         EndIf
;}
         
;{ Tout ce qui concerne le bouton 2
        Case #Button_2
         If GetGadgetState(#Button_2) = 0
          SetGadgetState(#Button_2, 1)
          MessageRequester("Erreur", "Case déjà prise", 0)
         Else
           OpenPreferences(Dossier$+"TicTacToe.pref")
            If Val(ReadPreferenceString("joueur", "")) = 1
             SetGadgetAttribute(#Button_2, #PB_Button_Image, ImageID(#Croix))
              WritePreferenceString("2", "1") 
              WritePreferenceString("joueur", "2")
              SetGadgetText(#Text_Joueur, "JOUEUR 2")
              
              ; verifie si il y a victoire
              If Val(ReadPreferenceString("1", "")) + Val(ReadPreferenceString("2", "")) + Val(ReadPreferenceString("3", "")) = 3 Or Val(ReadPreferenceString("2", "")) + Val(ReadPreferenceString("5", "")) + Val(ReadPreferenceString("8", "")) = 3
               reponseMsg = MessageRequester("VICTOIRE", "Bravo, le JOUEUR 1 gagne la partie. Souhaitez vous faire une nouvelle partie ?", #PB_MessageRequester_YesNo)
               If reponseMsg = 6
                For ID = #Button_1 To #Button_9
                 SetGadgetAttribute(ID, #PB_Button_Image, ImageID(#Vide))
                 SetGadgetState(ID, 0)
                 SetGadgetText(#Text_Joueur, "JOUEUR 1")
                 CreatePref()
                Next 
               Else
                End 
               EndIf 
              EndIf 

            ElseIf Val(ReadPreferenceString("joueur", "")) = 2
             SetGadgetAttribute(#Button_2, #PB_Button_Image, ImageID(#Cercle))
              WritePreferenceString("2", "5")
              WritePreferenceString("joueur", "1")
              
              ; verifie si il y a victoire
              If Val(ReadPreferenceString("1", "")) + Val(ReadPreferenceString("2", "")) + Val(ReadPreferenceString("3", "")) = 15 Or Val(ReadPreferenceString("2", "")) + Val(ReadPreferenceString("5", "")) + Val(ReadPreferenceString("8", "")) = 15
               reponseMsg = MessageRequester("VICTOIRE", "Bravo, le JOUEUR 2 gagne la partie. Souhaitez vous faire une nouvelle partie ?", #PB_MessageRequester_YesNo)
               If reponseMsg = 6
                For ID = #Button_1 To #Button_9
                 SetGadgetAttribute(ID, #PB_Button_Image, ImageID(#Vide))
                 SetGadgetState(ID, 0)
                 CreatePref()
                Next 
               Else
                End 
               EndIf 
              EndIf
              
               SetGadgetText(#Text_Joueur, "JOUEUR 1")
            EndIf 
            
            ; verifie si il y a nul
             If Val(ReadPreferenceString("1", "")) + Val(ReadPreferenceString("2", "")) + Val(ReadPreferenceString("3", "")) + Val(ReadPreferenceString("4", "")) + Val(ReadPreferenceString("5", "")) + Val(ReadPreferenceString("6", "")) + Val(ReadPreferenceString("7", "")) + Val(ReadPreferenceString("8", "")) + Val(ReadPreferenceString("9", "")) = 25
               reponseMsg = MessageRequester("NUL", "Match nul. Souhaitez vous faire une nouvelle partie ?", #PB_MessageRequester_YesNo)
               If reponseMsg = 6
                For ID = #Button_1 To #Button_9
                 SetGadgetAttribute(ID, #PB_Button_Image, ImageID(#Vide))
                 SetGadgetState(ID, 0)
                 CreatePref()
                Next 
               Else
                End 
               EndIf
             EndIf 
              
           ClosePreferences()
         EndIf
;}
         
;{  Tout ce qui concerne le bouton 3
        Case #Button_3
         If GetGadgetState(#Button_3) = 0
          SetGadgetState(#Button_3, 1)
          MessageRequester("Erreur", "Case déjà prise", 0)
         Else
           OpenPreferences(Dossier$+"TicTacToe.pref")
            If Val(ReadPreferenceString("joueur", "")) = 1
             SetGadgetAttribute(#Button_3, #PB_Button_Image, ImageID(#Croix))
              WritePreferenceString("3", "1") 
              WritePreferenceString("joueur", "2")
              SetGadgetText(#Text_Joueur, "JOUEUR 2")
              
              ; verifie si il y a victoire
              If Val(ReadPreferenceString("1", "")) + Val(ReadPreferenceString("2", "")) + Val(ReadPreferenceString("3", "")) = 3 Or Val(ReadPreferenceString("3", "")) + Val(ReadPreferenceString("5", "")) + Val(ReadPreferenceString("7", "")) = 3 Or Val(ReadPreferenceString("3", "")) + Val(ReadPreferenceString("6", "")) + Val(ReadPreferenceString("9", "")) = 3
               reponseMsg = MessageRequester("VICTOIRE", "Bravo, le JOUEUR 1 gagne la partie. Souhaitez vous faire une nouvelle partie ?", #PB_MessageRequester_YesNo)
               If reponseMsg = 6
                For ID = #Button_1 To #Button_9
                 SetGadgetAttribute(ID, #PB_Button_Image, ImageID(#Vide))
                 SetGadgetState(ID, 0)
                 SetGadgetText(#Text_Joueur, "JOUEUR 1")
                 CreatePref()
                Next 
               Else
                End 
               EndIf 
              EndIf

            ElseIf Val(ReadPreferenceString("joueur", "")) = 2
             SetGadgetAttribute(#Button_3, #PB_Button_Image, ImageID(#Cercle))  
              WritePreferenceString("3", "5")
              WritePreferenceString("joueur", "1")
              
              ; verifie si il y a victoire
              If Val(ReadPreferenceString("1", "")) + Val(ReadPreferenceString("2", "")) + Val(ReadPreferenceString("3", "")) = 15 Or Val(ReadPreferenceString("3", "")) + Val(ReadPreferenceString("5", "")) + Val(ReadPreferenceString("7", "")) = 15 Or Val(ReadPreferenceString("3", "")) + Val(ReadPreferenceString("6", "")) + Val(ReadPreferenceString("9", "")) = 15
               reponseMsg = MessageRequester("VICTOIRE", "Bravo, le JOUEUR 2 gagne la partie. Souhaitez vous faire une nouvelle partie ?", #PB_MessageRequester_YesNo)
               If reponseMsg = 6
                For ID = #Button_1 To #Button_9
                 SetGadgetAttribute(ID, #PB_Button_Image, ImageID(#Vide))
                 SetGadgetState(ID, 0)
                 CreatePref()
                Next 
               Else
                End 
               EndIf 
              EndIf
              
               SetGadgetText(#Text_Joueur, "JOUEUR 1")
            EndIf
            
            ; verifie si il y a nul
             If Val(ReadPreferenceString("1", "")) + Val(ReadPreferenceString("2", "")) + Val(ReadPreferenceString("3", "")) + Val(ReadPreferenceString("4", "")) + Val(ReadPreferenceString("5", "")) + Val(ReadPreferenceString("6", "")) + Val(ReadPreferenceString("7", "")) + Val(ReadPreferenceString("8", "")) + Val(ReadPreferenceString("9", "")) = 25
               reponseMsg = MessageRequester("NUL", "Match nul. Souhaitez vous faire une nouvelle partie ?", #PB_MessageRequester_YesNo)
               If reponseMsg = 6
                For ID = #Button_1 To #Button_9
                 SetGadgetAttribute(ID, #PB_Button_Image, ImageID(#Vide))
                 SetGadgetState(ID, 0)
                 CreatePref()
                Next 
               Else
                End 
               EndIf
             EndIf 
              
           ClosePreferences()
         EndIf
;}
         
;{ Tout ce qui concerne le bouton 4
        Case #Button_4
         If GetGadgetState(#Button_4) = 0
          SetGadgetState(#Button_4, 1)
          MessageRequester("Erreur", "Case déjà prise", 0)
         Else
           OpenPreferences(Dossier$+"TicTacToe.pref")
            If Val(ReadPreferenceString("joueur", "")) = 1
             SetGadgetAttribute(#Button_4, #PB_Button_Image, ImageID(#Croix))
              WritePreferenceString("4", "1") 
              WritePreferenceString("joueur", "2")
              SetGadgetText(#Text_Joueur, "JOUEUR 2")
              
              ; verifie si il y a victoire
              If Val(ReadPreferenceString("1", "")) + Val(ReadPreferenceString("4", "")) + Val(ReadPreferenceString("7", "")) = 3 Or Val(ReadPreferenceString("4", "")) + Val(ReadPreferenceString("5", "")) + Val(ReadPreferenceString("6", "")) = 3
               reponseMsg = MessageRequester("VICTOIRE", "Bravo, le JOUEUR 1 gagne la partie. Souhaitez vous faire une nouvelle partie ?", #PB_MessageRequester_YesNo)
               If reponseMsg = 6
                For ID = #Button_1 To #Button_9
                 SetGadgetAttribute(ID, #PB_Button_Image, ImageID(#Vide))
                 SetGadgetState(ID, 0)
                 SetGadgetText(#Text_Joueur, "JOUEUR 1")
                 CreatePref()
                Next 
               Else
                End 
               EndIf 
              EndIf

            ElseIf Val(ReadPreferenceString("joueur", "")) = 2
             SetGadgetAttribute(#Button_4, #PB_Button_Image, ImageID(#Cercle))
              WritePreferenceString("4", "5")
              WritePreferenceString("joueur", "1")
              
              ; verifie si il y a victoire
              If Val(ReadPreferenceString("1", "")) + Val(ReadPreferenceString("4", "")) + Val(ReadPreferenceString("7", "")) = 15 Or Val(ReadPreferenceString("4", "")) + Val(ReadPreferenceString("5", "")) + Val(ReadPreferenceString("6", "")) = 15
               reponseMsg = MessageRequester("VICTOIRE", "Bravo, le JOUEUR 2 gagne la partie. Souhaitez vous faire une nouvelle partie ?", #PB_MessageRequester_YesNo)
               If reponseMsg = 6
                For ID = #Button_1 To #Button_9
                 SetGadgetAttribute(ID, #PB_Button_Image, ImageID(#Vide))
                 SetGadgetState(ID, 0)
                 CreatePref()
                Next 
               Else
                End 
               EndIf 
              EndIf
              
               SetGadgetText(#Text_Joueur, "JOUEUR 1")
            EndIf
            
            ; verifie si il y a nul
             If Val(ReadPreferenceString("1", "")) + Val(ReadPreferenceString("2", "")) + Val(ReadPreferenceString("3", "")) + Val(ReadPreferenceString("4", "")) + Val(ReadPreferenceString("5", "")) + Val(ReadPreferenceString("6", "")) + Val(ReadPreferenceString("7", "")) + Val(ReadPreferenceString("8", "")) + Val(ReadPreferenceString("9", "")) = 25
               reponseMsg = MessageRequester("NUL", "Match nul. Souhaitez vous faire une nouvelle partie ?", #PB_MessageRequester_YesNo)
               If reponseMsg = 6
                For ID = #Button_1 To #Button_9
                 SetGadgetAttribute(ID, #PB_Button_Image, ImageID(#Vide))
                 SetGadgetState(ID, 0)
                 CreatePref()
                Next 
               Else
                End 
               EndIf
             EndIf 
              
           ClosePreferences()
         EndIf 
;}
         
;{ Tout ce qui concerne le bouton 5
        Case #Button_5
         If GetGadgetState(#Button_5) = 0
          SetGadgetState(#Button_5, 1)
          MessageRequester("Erreur", "Case déjà prise", 0)
         Else
           OpenPreferences(Dossier$+"TicTacToe.pref")
            If Val(ReadPreferenceString("joueur", "")) = 1
             SetGadgetAttribute(#Button_5, #PB_Button_Image, ImageID(#Croix))
              WritePreferenceString("5", "1") 
              WritePreferenceString("joueur", "2")
              SetGadgetText(#Text_Joueur, "JOUEUR 2")
              
              ; verifie si il y a victoire
              If Val(ReadPreferenceString("1", "")) + Val(ReadPreferenceString("5", "")) + Val(ReadPreferenceString("9", "")) = 3 Or Val(ReadPreferenceString("2", "")) + Val(ReadPreferenceString("5", "")) + Val(ReadPreferenceString("8", "")) = 3 Or Val(ReadPreferenceString("3", "")) + Val(ReadPreferenceString("5", "")) + Val(ReadPreferenceString("7", "")) = 3 Or Val(ReadPreferenceString("4", "")) + Val(ReadPreferenceString("5", "")) + Val(ReadPreferenceString("6", "")) = 3
               reponseMsg = MessageRequester("VICTOIRE", "Bravo, le JOUEUR 1 gagne la partie. Souhaitez vous faire une nouvelle partie ?", #PB_MessageRequester_YesNo)
               If reponseMsg = 6
                For ID = #Button_1 To #Button_9
                 SetGadgetAttribute(ID, #PB_Button_Image, ImageID(#Vide))
                 SetGadgetState(ID, 0)
                 SetGadgetText(#Text_Joueur, "JOUEUR 1")
                 CreatePref()
                Next 
               Else
                End 
               EndIf 
              EndIf
               
            ElseIf Val(ReadPreferenceString("joueur", "")) = 2
             SetGadgetAttribute(#Button_5, #PB_Button_Image, ImageID(#Cercle))
              WritePreferenceString("5", "5")
              WritePreferenceString("joueur", "1")
              
              ; verifie si il y a victoire
              If Val(ReadPreferenceString("1", "")) + Val(ReadPreferenceString("5", "")) + Val(ReadPreferenceString("9", "")) = 15 Or Val(ReadPreferenceString("2", "")) + Val(ReadPreferenceString("5", "")) + Val(ReadPreferenceString("8", "")) = 15 Or Val(ReadPreferenceString("3", "")) + Val(ReadPreferenceString("5", "")) + Val(ReadPreferenceString("7", "")) = 15 Or Val(ReadPreferenceString("4", "")) + Val(ReadPreferenceString("5", "")) + Val(ReadPreferenceString("6", "")) = 15
               reponseMsg = MessageRequester("VICTOIRE", "Bravo, le JOUEUR 2 gagne la partie. Souhaitez vous faire une nouvelle partie ?", #PB_MessageRequester_YesNo)
               If reponseMsg = 6
                For ID = #Button_1 To #Button_9
                 SetGadgetAttribute(ID, #PB_Button_Image, ImageID(#Vide))
                 SetGadgetState(ID, 0)
                 CreatePref()
                Next 
               Else
                End 
               EndIf 
              EndIf
              
               SetGadgetText(#Text_Joueur, "JOUEUR 1")
            EndIf
            
            ; verifie si il y a nul
             If Val(ReadPreferenceString("1", "")) + Val(ReadPreferenceString("2", "")) + Val(ReadPreferenceString("3", "")) + Val(ReadPreferenceString("4", "")) + Val(ReadPreferenceString("5", "")) + Val(ReadPreferenceString("6", "")) + Val(ReadPreferenceString("7", "")) + Val(ReadPreferenceString("8", "")) + Val(ReadPreferenceString("9", "")) = 25
               reponseMsg = MessageRequester("NUL", "Match nul. Souhaitez vous faire une nouvelle partie ?", #PB_MessageRequester_YesNo)
               If reponseMsg = 6
                For ID = #Button_1 To #Button_9
                 SetGadgetAttribute(ID, #PB_Button_Image, ImageID(#Vide))
                 SetGadgetState(ID, 0)
                 CreatePref()
                Next 
               Else
                End 
               EndIf
             EndIf 
              
           ClosePreferences()
         EndIf 
;}
         
;{ Tout ce qui concerne le bouton 6
        Case #Button_6
         If GetGadgetState(#Button_6) = 0
          SetGadgetState(#Button_6, 1)
          MessageRequester("Erreur", "Case déjà prise", 0)
         Else
           OpenPreferences(Dossier$+"TicTacToe.pref")
            If Val(ReadPreferenceString("joueur", "")) = 1
             SetGadgetAttribute(#Button_6, #PB_Button_Image, ImageID(#Croix))
              WritePreferenceString("6", "1") 
              WritePreferenceString("joueur", "2")
              SetGadgetText(#Text_Joueur, "JOUEUR 2")
              
              ; verifie si il y a victoire
              If Val(ReadPreferenceString("3", "")) + Val(ReadPreferenceString("6", "")) + Val(ReadPreferenceString("9", "")) = 3 Or Val(ReadPreferenceString("4", "")) + Val(ReadPreferenceString("5", "")) + Val(ReadPreferenceString("6", "")) = 3
               reponseMsg = MessageRequester("VICTOIRE", "Bravo, le JOUEUR 1 gagne la partie. Souhaitez vous faire une nouvelle partie ?", #PB_MessageRequester_YesNo)
               If reponseMsg = 6
                For ID = #Button_1 To #Button_9
                 SetGadgetAttribute(ID, #PB_Button_Image, ImageID(#Vide))
                 SetGadgetState(ID, 0)
                 SetGadgetText(#Text_Joueur, "JOUEUR 1")
                 CreatePref()
                Next 
               Else
                End 
               EndIf 
              EndIf
 
            ElseIf Val(ReadPreferenceString("joueur", "")) = 2
             SetGadgetAttribute(#Button_6, #PB_Button_Image, ImageID(#Cercle))
              WritePreferenceString("6", "5")
              WritePreferenceString("joueur", "1")
              
              ; verifie si il y a victoire
              If Val(ReadPreferenceString("3", "")) + Val(ReadPreferenceString("6", "")) + Val(ReadPreferenceString("9", "")) = 15 Or Val(ReadPreferenceString("4", "")) + Val(ReadPreferenceString("5", "")) + Val(ReadPreferenceString("6", "")) = 15
               reponseMsg = MessageRequester("VICTOIRE", "Bravo, le JOUEUR 2 gagne la partie. Souhaitez vous faire une nouvelle partie ?", #PB_MessageRequester_YesNo)
               If reponseMsg = 6
                For ID = #Button_1 To #Button_9
                 SetGadgetAttribute(ID, #PB_Button_Image, ImageID(#Vide))
                 SetGadgetState(ID, 0)
                 CreatePref()
                Next 
               Else
                End 
               EndIf 
              EndIf
              
               SetGadgetText(#Text_Joueur, "JOUEUR 1")
            EndIf
            
            ; verifie si il y a nul
             If Val(ReadPreferenceString("1", "")) + Val(ReadPreferenceString("2", "")) + Val(ReadPreferenceString("3", "")) + Val(ReadPreferenceString("4", "")) + Val(ReadPreferenceString("5", "")) + Val(ReadPreferenceString("6", "")) + Val(ReadPreferenceString("7", "")) + Val(ReadPreferenceString("8", "")) + Val(ReadPreferenceString("9", "")) = 25
               reponseMsg = MessageRequester("NUL", "Match nul. Souhaitez vous faire une nouvelle partie ?", #PB_MessageRequester_YesNo)
               If reponseMsg = 6
                For ID = #Button_1 To #Button_9
                 SetGadgetAttribute(ID, #PB_Button_Image, ImageID(#Vide))
                 SetGadgetState(ID, 0)
                 CreatePref()
                Next 
               Else
                End 
               EndIf
             EndIf 
              
           ClosePreferences()
         EndIf 
;}
         
;{ Tout ce qui concerne le bouton 7
        Case #Button_7
         If GetGadgetState(#Button_7) = 0
          SetGadgetState(#Button_7, 1)
          MessageRequester("Erreur", "Case déjà prise", 0)
         Else
           OpenPreferences(Dossier$+"TicTacToe.pref")
            If Val(ReadPreferenceString("joueur", "")) = 1
             SetGadgetAttribute(#Button_7, #PB_Button_Image, ImageID(#Croix))
              WritePreferenceString("7", "1") 
              WritePreferenceString("joueur", "2")
              SetGadgetText(#Text_Joueur, "JOUEUR 2")
              
              ; verifie si il y a victoire
              If Val(ReadPreferenceString("1", "")) + Val(ReadPreferenceString("4", "")) + Val(ReadPreferenceString("7", "")) = 3 Or Val(ReadPreferenceString("3", "")) + Val(ReadPreferenceString("5", "")) + Val(ReadPreferenceString("7", "")) = 3 Or Val(ReadPreferenceString("7", "")) + Val(ReadPreferenceString("8", "")) + Val(ReadPreferenceString("9", "")) = 3
               reponseMsg = MessageRequester("VICTOIRE", "Bravo, le JOUEUR 1 gagne la partie. Souhaitez vous faire une nouvelle partie ?", #PB_MessageRequester_YesNo)
               If reponseMsg = 6
                For ID = #Button_1 To #Button_9
                 SetGadgetAttribute(ID, #PB_Button_Image, ImageID(#Vide))
                 SetGadgetState(ID, 0)
                 SetGadgetText(#Text_Joueur, "JOUEUR 1")
                 CreatePref()
                Next 
               Else
                End 
               EndIf 
              EndIf

            ElseIf Val(ReadPreferenceString("joueur", "")) = 2
             SetGadgetAttribute(#Button_7, #PB_Button_Image, ImageID(#Cercle))
              WritePreferenceString("7", "5")
              WritePreferenceString("joueur", "1")
              
              ; verifie si il y a victoire
              If Val(ReadPreferenceString("1", "")) + Val(ReadPreferenceString("4", "")) + Val(ReadPreferenceString("7", "")) = 15 Or Val(ReadPreferenceString("3", "")) + Val(ReadPreferenceString("5", "")) + Val(ReadPreferenceString("7", "")) = 15 Or Val(ReadPreferenceString("7", "")) + Val(ReadPreferenceString("8", "")) + Val(ReadPreferenceString("9", "")) = 15
               reponseMsg = MessageRequester("VICTOIRE", "Bravo, le JOUEUR 2 gagne la partie. Souhaitez vous faire une nouvelle partie ?", #PB_MessageRequester_YesNo)
               If reponseMsg = 6
                For ID = #Button_1 To #Button_9
                 SetGadgetAttribute(ID, #PB_Button_Image, ImageID(#Vide))
                 SetGadgetState(ID, 0)
                 CreatePref()
                Next 
               Else
                End 
               EndIf 
              EndIf
              
               SetGadgetText(#Text_Joueur, "JOUEUR 1")
            EndIf
            
            ; verifie si il y a nul
             If Val(ReadPreferenceString("1", "")) + Val(ReadPreferenceString("2", "")) + Val(ReadPreferenceString("3", "")) + Val(ReadPreferenceString("4", "")) + Val(ReadPreferenceString("5", "")) + Val(ReadPreferenceString("6", "")) + Val(ReadPreferenceString("7", "")) + Val(ReadPreferenceString("8", "")) + Val(ReadPreferenceString("9", "")) = 25
               reponseMsg = MessageRequester("NUL", "Match nul. Souhaitez vous faire une nouvelle partie ?", #PB_MessageRequester_YesNo)
               If reponseMsg = 6
                For ID = #Button_1 To #Button_9
                 SetGadgetAttribute(ID, #PB_Button_Image, ImageID(#Vide))
                 SetGadgetState(ID, 0)
                 CreatePref()
                Next 
               Else
                End 
               EndIf
             EndIf 
              
           ClosePreferences()
         EndIf 
;}
         
;{ Tout ce qui concerne le bouton 8
         
        Case #Button_8
         If GetGadgetState(#Button_8) = 0
          SetGadgetState(#Button_8, 1)
          MessageRequester("Erreur", "Case déjà prise", 0)
         Else
           OpenPreferences(Dossier$+"TicTacToe.pref")
            If Val(ReadPreferenceString("joueur", "")) = 1
             SetGadgetAttribute(#Button_8, #PB_Button_Image, ImageID(#Croix))
              WritePreferenceString("8", "1") 
              WritePreferenceString("joueur", "2")
              SetGadgetText(#Text_Joueur, "JOUEUR 2")
              
              ; verifie si il y a victoire
              If Val(ReadPreferenceString("7", "")) + Val(ReadPreferenceString("8", "")) + Val(ReadPreferenceString("9", "")) = 3 Or Val(ReadPreferenceString("2", "")) + Val(ReadPreferenceString("5", "")) + Val(ReadPreferenceString("8", "")) = 3
               reponseMsg = MessageRequester("VICTOIRE", "Bravo, le JOUEUR 1 gagne la partie. Souhaitez vous faire une nouvelle partie ?", #PB_MessageRequester_YesNo)
               If reponseMsg = 6
                For ID = #Button_1 To #Button_9
                 SetGadgetAttribute(ID, #PB_Button_Image, ImageID(#Vide))
                 SetGadgetState(ID, 0)
                 SetGadgetText(#Text_Joueur, "JOUEUR 1")
                 CreatePref()
                Next 
               Else
                End 
               EndIf 
              EndIf

            ElseIf Val(ReadPreferenceString("joueur", "")) = 2
             SetGadgetAttribute(#Button_8, #PB_Button_Image, ImageID(#Cercle))
              WritePreferenceString("8", "5")
              WritePreferenceString("joueur", "1")
              
              ; verifie si il y a victoire
              If Val(ReadPreferenceString("7", "")) + Val(ReadPreferenceString("8", "")) + Val(ReadPreferenceString("9", "")) = 15 Or Val(ReadPreferenceString("2", "")) + Val(ReadPreferenceString("5", "")) + Val(ReadPreferenceString("8", "")) = 15
               reponseMsg = MessageRequester("VICTOIRE", "Bravo, le JOUEUR 2 gagne la partie. Souhaitez vous faire une nouvelle partie ?", #PB_MessageRequester_YesNo)
               If reponseMsg = 6
                For ID = #Button_1 To #Button_9
                 SetGadgetAttribute(ID, #PB_Button_Image, ImageID(#Vide))
                 SetGadgetState(ID, 0)
                 CreatePref()
                Next 
               Else
                End 
               EndIf 
              EndIf
             
               SetGadgetText(#Text_Joueur, "JOUEUR 1")
            EndIf
            
            ; verifie si il y a nul
             If Val(ReadPreferenceString("1", "")) + Val(ReadPreferenceString("2", "")) + Val(ReadPreferenceString("3", "")) + Val(ReadPreferenceString("4", "")) + Val(ReadPreferenceString("5", "")) + Val(ReadPreferenceString("6", "")) + Val(ReadPreferenceString("7", "")) + Val(ReadPreferenceString("8", "")) + Val(ReadPreferenceString("9", "")) = 25
               reponseMsg = MessageRequester("NUL", "Match nul. Souhaitez vous faire une nouvelle partie ?", #PB_MessageRequester_YesNo)
               If reponseMsg = 6
                For ID = #Button_1 To #Button_9
                 SetGadgetAttribute(ID, #PB_Button_Image, ImageID(#Vide))
                 SetGadgetState(ID, 0)
                 CreatePref()
                Next 
               Else
                End 
               EndIf
             EndIf 
              
           ClosePreferences()
         EndIf 
;}
         
;{ Tout ce qui concerne le bouton 9
        Case #Button_9
         If GetGadgetState(#Button_9) = 0
          SetGadgetState(#Button_9, 1)
          MessageRequester("Erreur", "Case déjà prise", 0)
         Else
           OpenPreferences(Dossier$+"TicTacToe.pref")
            If Val(ReadPreferenceString("joueur", "")) = 1
             SetGadgetAttribute(#Button_9, #PB_Button_Image, ImageID(#Croix))
              WritePreferenceString("9", "1") 
              WritePreferenceString("joueur", "2")
              SetGadgetText(#Text_Joueur, "JOUEUR 2")
              
              ; verifie si il y a victoire
              If Val(ReadPreferenceString("1", "")) + Val(ReadPreferenceString("5", "")) + Val(ReadPreferenceString("9", "")) = 3 Or Val(ReadPreferenceString("3", "")) + Val(ReadPreferenceString("6", "")) + Val(ReadPreferenceString("9", "")) = 3 Or Val(ReadPreferenceString("7", "")) + Val(ReadPreferenceString("8", "")) + Val(ReadPreferenceString("9", "")) = 3
               reponseMsg = MessageRequester("VICTOIRE", "Bravo, le JOUEUR 1 gagne la partie. Souhaitez vous faire une nouvelle partie ?", #PB_MessageRequester_YesNo)
               If reponseMsg = 6
                For ID = #Button_1 To #Button_9
                 SetGadgetAttribute(ID, #PB_Button_Image, ImageID(#Vide))
                 SetGadgetState(ID, 0)
                 SetGadgetText(#Text_Joueur, "JOUEUR 1")
                 CreatePref()
                Next 
               Else
                End 
               EndIf 
              EndIf

            ElseIf Val(ReadPreferenceString("joueur", "")) = 2
             SetGadgetAttribute(#Button_9, #PB_Button_Image, ImageID(#Cercle))
              WritePreferenceString("9", "5")
              WritePreferenceString("joueur", "1")
              
              ; verifie si il y a victoire
              If Val(ReadPreferenceString("1", "")) + Val(ReadPreferenceString("5", "")) + Val(ReadPreferenceString("9", "")) = 15 Or Val(ReadPreferenceString("3", "")) + Val(ReadPreferenceString("6", "")) + Val(ReadPreferenceString("9", "")) = 15 Or Val(ReadPreferenceString("7", "")) + Val(ReadPreferenceString("8", "")) + Val(ReadPreferenceString("9", "")) = 15
               reponseMsg = MessageRequester("VICTOIRE", "Bravo, le JOUEUR 2 gagne la partie. Souhaitez vous faire une nouvelle partie ?", #PB_MessageRequester_YesNo)
               If reponseMsg = 6
                For ID = #Button_1 To #Button_9
                 SetGadgetAttribute(ID, #PB_Button_Image, ImageID(#Vide))
                 SetGadgetState(ID, 0)
                 CreatePref()
                Next 
               Else
                End 
               EndIf 
              EndIf
              
               SetGadgetText(#Text_Joueur, "JOUEUR 1")
            EndIf
            
            ; verifie si il y a nul
             If Val(ReadPreferenceString("1", "")) + Val(ReadPreferenceString("2", "")) + Val(ReadPreferenceString("3", "")) + Val(ReadPreferenceString("4", "")) + Val(ReadPreferenceString("5", "")) + Val(ReadPreferenceString("6", "")) + Val(ReadPreferenceString("7", "")) + Val(ReadPreferenceString("8", "")) + Val(ReadPreferenceString("9", "")) = 25
               reponseMsg = MessageRequester("NUL", "Match nul. Souhaitez vous faire une nouvelle partie ?", #PB_MessageRequester_YesNo)
               If reponseMsg = 6
                For ID = #Button_1 To #Button_9
                 SetGadgetAttribute(ID, #PB_Button_Image, ImageID(#Vide))
                 SetGadgetState(ID, 0)
                 CreatePref()
                Next 
               Else
                End 
               EndIf
             EndIf 
              
           ClosePreferences()
         EndIf 
;}
         
      EndSelect
    EndIf
  Until EventID = #PB_Event_CloseWindow
Bon amusement. :wink:





@++
Dernière modification par venom le mar. 28/oct./2014 21:07, modifié 2 fois.
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Lemaquis
Messages : 271
Inscription : mer. 25/déc./2013 7:34
Localisation : la corse

Re: Tic Tac toe

Message par Lemaquis »

merci venom de ton partage
LeMaquis
Avatar de l’utilisateur
Micoute
Messages : 2583
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Tic Tac toe

Message par Micoute »

Bonjour venom, pour un petit jeu très basique, je le trouve plutôt bien achevé, merci pour ce partage !
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
kernadec
Messages : 1606
Inscription : ven. 25/avr./2008 11:14

Re: Tic Tac toe

Message par kernadec »

bonjour
Merci venon simple, efficace, petit mais tout d'un grand jeu d'enfants

Cordialement
Avatar de l’utilisateur
venom
Messages : 3128
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: Tic Tac toe

Message par venom »

Bonjour, merci pour vos retours. C'est que le jeu fonctionne bien chez vous :wink:

Oui il a était fait pour des petits. :D

Ps: je mettrais la source dans le 1er poste


@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Tic Tac toe

Message par Ar-S »

Simple et sympa.
ça m'a donné envie de faire une version avec Canvas et surtout, de tester une petite IA.
ça m'a paru assez faisable mais je suis en train de voir que c'est tout de suite plus pêchu qu'on se le dit. Mixer sa théorie avec sa réflexion et ses connaissances en PB ça donne mal au crâne. :mrgreen: Mais je m'amuse bien.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
raven
Messages : 222
Inscription : jeu. 06/janv./2005 15:45

Re: Tic Tac toe

Message par raven »

bravo venom,
merci pour ton partage :wink:
Pb5.24 Lts/5.31 Windows 7 64 nvidia 560 ti E8500 8g ram
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Tic Tac toe

Message par Kwai chang caine »

Fonctionne nickel
Merci pour le partage 8)
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Répondre