| HomeTortue graphiqueGPanelRobotique WebTigerPython |
| Python - Online |
![]()
DESCRIPTION DU JEU |
Lorsqu'un pion est placé, tous les pions adverses situés sur une même ligne ou diagonale entre le nouveau pion et un pion déjà placé de la même couleur sont retournés. Le but du jeu est d'avoir le plus grand nombre possible de pions de sa propre couleur sur le plateau à la fin de la partie. Le jeu se termine lorsque toutes les cases sont occupées. Programme: # Reversi.py from gamegrid import * # Checks endOfGame def endOfGame(): countYellow = 0 countRed = 0 all = getOccupiedLocations() for lc in all: if getOneActorAt(lc).getIdVisible() == 0: countYellow += 1 else: countRed += 1 if len(all) == 64: if countRed > countYellow: setTitle("Red wins - "+str(countRed)+":"+str(countYellow)) elif countRed < countYellow: setTitle("Yellow wins - "+str(countYellow)+":"+str(countRed)) else: setTitle("The game ended in a tie") #Checks if cell has a neighbour in the north, east, south or west def hasNeighbours(loc): locs = toList(loc.getNeighbourLocations(0.5)) for i in range(4): if getOneActorAt(locs[i]) != None: return True return False # set stone def onMousePressed(e): global imageID location = toLocationInGrid(e.getX(), e.getY()) if getOneActorAt(location) == None and hasNeighbours(location): stone = Actor("sprites/token.png", 2) addActor(stone, location) stone.show(imageID) # Check stones in all 8 directions and if can be turned add list for c in range (0, 360, 45): actors = [] loc = location.getNeighbourLocation(c) a = getOneActorAt(loc) hasSameImageID = False while a != None and not hasSameImageID: if a.getIdVisible() != imageID: actors.append(a) loc = loc.getNeighbourLocation(c) a = getOneActorAt(loc) else: if a.getIdVisible() == imageID: hasSameImageID = True # Turn stones if hasSameImageID: for actor in actors: actor.show(imageID) refresh() # Change player if imageID == 0: imageID = 1 setTitle("Red plays") else: imageID = 0 setTitle("Yellow plays") endOfGame() refresh() return True makeGameGrid(8, 8, 60, Color.gray, False, mousePressed = onMousePressed) setTitle("Reversi") yellow = Actor("sprites/token.png", 2) yellow2 = Actor("sprites/token.png", 2) red = Actor("sprites/token.png", 2) red2 = Actor("sprites/token.png", 2) addActor(yellow, Location(3, 3)) addActor(yellow2, Location(4, 4)) addActor(red, Location(4, 3)) addActor(red2, Location(3, 4)) yellow.show(0) yellow2.show(0) red.show(1) red2.show(1) imageID = 0 show() doRun() |
Explications du code |
|
![]()