| HomeTortue graphiqueGPanelRobotique WebTigerPython |
| Python - Online |
![]()
DESCRIPTION DU JEU |
Pour que le symbole change après chaque clic, tu introduis une variable player qui prend alternativement les valeurs 1 et 2. Dans le programme principal, tu attribues d'abord la valeur 1 à player. Pour pouvoir modifier la valeur de cette variable dans la fonction de rappel (callback), tu dois la déclarer comme variable globale (global player). Dans la version la plus simple du jeu, les joueurs placent leurs symboles à tour de rôle et vérifient eux-mêmes le résultat. Programme: #TicTacToe.py from gamegrid import * def onMousePressed(e): global player loc = toLocationInGrid(e.getX(), e.getY()) if getOneActorAt(loc) != None: return mark = Actor("sprites/mark.gif", 2) addActor(mark, loc) if player == 1: mark.show(0) player = 2 elif player == 2: mark.show(1) player = 1 makeGameGrid(3, 3, 70, Color.black, False, mousePressed = onMousePressed) setBgColor(makeColor("yellow")) show() doRun() player = 1 |
POUR ALLER PLUS LOIN |
L'occupation horizontale, verticale et diagonale du plateau de jeu est représentée par une chaîne de caractères contenant des groupes séparés par des virgules, sous la forme XOX,XX-,O-O,.... Les cases vides sont représentées par le caractère -. Si la chaîne contient XXX ou OOO, cela signifie qu'un joueur a gagné. Programme: #TicTacToe2.py from gamegrid import * def onMousePressed(e): global player loc = toLocationInGrid(e.getX(), e.getY()) if getOneActorAt(loc) != None: return mark = Actor("sprites/mark.gif", 2) addActor(mark, loc) if player == 1: mark.show(0) player = 2 elif player == 2: mark.show(1) player = 1 checkGameState() refresh() def setPattern(x, y): global pattern location = Location(x, y) a = getOneActorAt(location) if a == None: pattern += '-' elif a.getIdVisible() == 0: pattern += 'O' elif a.getIdVisible() == 1: pattern += 'X' def checkGameState(): # Convert board state into string pattern global pattern pattern = "" # Horizontal for y in range(3): for x in range(3): setPattern(x, y) pattern += ',' # Separator # Vertical for x in range(3): for y in range(3): setPattern(x, y) pattern += ',' # Diagonal for x in range(3): setPattern(x, x); pattern += ',' for x in range(3): setPattern(x, 2 - x); if "XXX" in pattern: setTitle("X won") elif "OOO" in pattern: setTitle("O won") elif not "-" in pattern: setTitle("Board full") makeGameGrid(3, 3, 70, Color.black, False, mousePressed = onMousePressed) setBgColor(makeColor("yellow")) player = 1 show() doRun() |
![]()