class GUIboard(object): # Load pygame def __init__(self, timelimit): self.pygame = pygame self.pygame.init() self.fpsClock = pygame.time.Clock() self.board = Board() self.whitePlayer = Human(self, self.board, Board.white) self.blackPlayer = MinimaxAI(self, self.board, Board.black, timelimit) self.currentPlayer = self.blackPlayer self.screen = self.drawscreen() def drawscreen(self): # Setup screen sqs = 70 bs = 8*sqs screen = self.pygame.display.set_mode((bs, bs)) tit = 'Othello ala Linus och Kasper!' pygame.display.set_caption(tit) pygame.mouse.set_visible(True) self.myfont = self.pygame.font.SysFont("monospace", 20) return screen def updatescreen(self): black = pygame.Color(0, 0, 0) white = pygame.Color(255, 255, 255) green = pygame.Color(0, 128, 0) sqs = 70 bs = 8*sqs self.screen.fill(green) for y in xrange(8): for x in xrange(8): # Draw black background squares self.pygame.draw.rect(self.screen, black, (y*sqs, x*sqs, sqs, sqs), 2) # Draw coordinate label = self.myfont.render("("+str(y)+","+str(x)+")", 1, (0,0,0)) self.screen.blit(label, (x*sqs+5, y*sqs+5)) # Draw disks if self.board.grid[y][x] == Board.black: self.pygame.draw.circle(self.screen, black, (x*sqs+sqs/2, y*sqs+sqs/2), sqs/2, 0) elif self.board.grid[y][x] == Board.white: self.pygame.draw.circle(self.screen, white, (x*sqs+sqs/2, y*sqs+sqs/2), sqs/2, 0) def rungame(self): # Main application loop while True: self.updatescreen() self.pygame.display.update() self.fpsClock.tick(30) # Handle actions canWhite = self.board.canMakeMove(Board.white) canBlack = self.board.canMakeMove(Board.black) if not canWhite and not canBlack: print "Score (black, white):", self.board.score() while True: for event in self.pygame.event.get(): if event.type == QUIT: self.pygame.quit() sys.exit() elif self.currentPlayer == self.whitePlayer and canWhite: y,x = self.whitePlayer.makeMove() self.currentPlayer = self.blackPlayer elif self.currentPlayer == self.whitePlayer and not canWhite: self.currentPlayer = self.blackPlayer elif self.currentPlayer == self.blackPlayer and canBlack: y,x = self.blackPlayer.makeMove() self.currentPlayer = self.whitePlayer elif self.currentPlayer == self.blackPlayer and not canBlack: self.currentPlayer = self.whitePlayer