Tic Tac Toe

Voici un classique qui n’a pas besoin d’être présenté. Il s’agit d’un Tic Tac Toe aussi appeler morpion.

Le but est simple, le premier qui réussi une ligne, une colonne, une diagonale gagne la partie.

Le jeu se joue a 2 joueurs physiques (pas d’IA) au tour par tour.

Code source

; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
; + Autor : Venom +
; + Project name : Tic Tac Toe +
; + Version : V 1.0 +
; + Compilator : PureBasic V5.73 +
; + Date : 08/11/2015 +
; + OS : Windows 10 +
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;- Window Constants
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Enumeration
#Window_0
EndEnumeration

; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;- Gadgets Constants
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
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

; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;- Initialisations
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
UsePNGImageDecoder()
LoadFont(#Font_0, « Arial », 20, #PB_Font_Bold)

; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;- Declarations variables
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Global Dossier$ = «  »
Global DossierImages$ = « images\ »

; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;- Declarations procedures
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Declare CreatePref()

; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;- Ouverture de la fenetre principale
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
If OpenWindow(#Window_0, 0, 0, 300, 350, « Tic Tac Toe », #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
SetWindowColor(#Window_0, RGB(0, 0, 0))

CreatePref() ; appele la procedure

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

; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;- Boucle
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
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
ClosePreferences()

OpenPreferences(Dossier$+ »TicTacToe.pref ») ; on ouvre le fichier pref
; 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
ClosePreferences()

OpenPreferences(Dossier$+ »TicTacToe.pref ») ; on ouvre le fichier pref
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
ClosePreferences()

OpenPreferences(Dossier$+ »TicTacToe.pref ») ; on ouvre le fichier pref
; 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 »)
ClosePreferences()

OpenPreferences(Dossier$+ »TicTacToe.pref ») ; on ouvre le fichier pref
; 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
ClosePreferences()

OpenPreferences(Dossier$+ »TicTacToe.pref ») ; on ouvre le fichier pref
ElseIf Val(ReadPreferenceString(« joueur », «  »)) = 2
SetGadgetAttribute(#Button_2, #PB_Button_Image, ImageID(#Cercle))
WritePreferenceString(« 2 », « 5 »)
WritePreferenceString(« joueur », « 1 »)
ClosePreferences()

OpenPreferences(Dossier$+ »TicTacToe.pref ») ; on ouvre le fichier pref
; 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 »)
ClosePreferences()

OpenPreferences(Dossier$+ »TicTacToe.pref »)
; 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
ClosePreferences()

OpenPreferences(Dossier$+ »TicTacToe.pref »)
ElseIf Val(ReadPreferenceString(« joueur », «  »)) = 2
SetGadgetAttribute(#Button_3, #PB_Button_Image, ImageID(#Cercle))
WritePreferenceString(« 3 », « 5 »)
WritePreferenceString(« joueur », « 1 »)
ClosePreferences()

OpenPreferences(Dossier$+ »TicTacToe.pref »)
; 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 »)
ClosePreferences()

OpenPreferences(Dossier$+ »TicTacToe.pref »)
; 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
ClosePreferences()

OpenPreferences(Dossier$+ »TicTacToe.pref »)
ElseIf Val(ReadPreferenceString(« joueur », «  »)) = 2
SetGadgetAttribute(#Button_4, #PB_Button_Image, ImageID(#Cercle))
WritePreferenceString(« 4 », « 5 »)
WritePreferenceString(« joueur », « 1 »)
ClosePreferences()

OpenPreferences(Dossier$+ »TicTacToe.pref »)
; 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 »)
ClosePreferences()

OpenPreferences(Dossier$+ »TicTacToe.pref »)
; 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
ClosePreferences()

OpenPreferences(Dossier$+ »TicTacToe.pref »)
ElseIf Val(ReadPreferenceString(« joueur », «  »)) = 2
SetGadgetAttribute(#Button_5, #PB_Button_Image, ImageID(#Cercle))
WritePreferenceString(« 5 », « 5 »)
WritePreferenceString(« joueur », « 1 »)
ClosePreferences()

OpenPreferences(Dossier$+ »TicTacToe.pref »)
; 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 »)
ClosePreferences()

OpenPreferences(Dossier$+ »TicTacToe.pref »)
; 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
ClosePreferences()

OpenPreferences(Dossier$+ »TicTacToe.pref »)
ElseIf Val(ReadPreferenceString(« joueur », «  »)) = 2
SetGadgetAttribute(#Button_6, #PB_Button_Image, ImageID(#Cercle))
WritePreferenceString(« 6 », « 5 »)
WritePreferenceString(« joueur », « 1 »)
ClosePreferences()

OpenPreferences(Dossier$+ »TicTacToe.pref »)
; 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 »)
ClosePreferences()

OpenPreferences(Dossier$+ »TicTacToe.pref »)
; 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
ClosePreferences()

OpenPreferences(Dossier$+ »TicTacToe.pref »)
ElseIf Val(ReadPreferenceString(« joueur », «  »)) = 2
SetGadgetAttribute(#Button_7, #PB_Button_Image, ImageID(#Cercle))
WritePreferenceString(« 7 », « 5 »)
WritePreferenceString(« joueur », « 1 »)
ClosePreferences()

OpenPreferences(Dossier$+ »TicTacToe.pref »)
; 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 »)
ClosePreferences()

OpenPreferences(Dossier$+ »TicTacToe.pref »)
; 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
ClosePreferences()

OpenPreferences(Dossier$+ »TicTacToe.pref »)
ElseIf Val(ReadPreferenceString(« joueur », «  »)) = 2
SetGadgetAttribute(#Button_8, #PB_Button_Image, ImageID(#Cercle))
WritePreferenceString(« 8 », « 5 »)
WritePreferenceString(« joueur », « 1 »)
ClosePreferences()

OpenPreferences(Dossier$+ »TicTacToe.pref »)
; 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 »)
ClosePreferences()

OpenPreferences(Dossier$+ »TicTacToe.pref »)
; 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
ClosePreferences()

OpenPreferences(Dossier$+ »TicTacToe.pref »)
ElseIf Val(ReadPreferenceString(« joueur », «  »)) = 2
SetGadgetAttribute(#Button_9, #PB_Button_Image, ImageID(#Cercle))
WritePreferenceString(« 9 », « 5 »)
WritePreferenceString(« joueur », « 1 »)
ClosePreferences()

OpenPreferences(Dossier$+ »TicTacToe.pref »)
; 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

; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;- Procedures
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
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

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.