コード例 #1
0
    def runLocalGame(self, user):
        self.setGame(CheckersBoard())

        aiDifficulty = self.view.displayAIDifficultyForm()

        computerPlayer = ComputerPlayer(playerID=2, diff=aiDifficulty)
        computerPlayer.setHeuristic(self.getGame())
        computerPlayer.initializeAIStrategy()

        self.game.initializeGameBoard(HumanPlayer(1), computerPlayer)
        self.game.notifyObservers()

        self.view.displayBoard(self.game.getReadOnlyState())

        while (self.game.getWinner() is None):
            for player in self.game.observers:
                pieceID, moveType = self.view.getPlayerMove(
                    player.__class__.__name__)
                player.makeMove(self.game, pieceID, moveType)

                self.view.displayBoard(self.game.getReadOnlyState())

        if (type(self.game.getWinner()) == HumanPlayer):
            self.dbProxy.executeUpdateQuery('wins', user, 1)
        else:
            self.dbProxy.executeUpdateQuery('losses', user, 1)

        self.dbProxy.executeUpdateQuery('playtime', user,
                                        self.game.getTimerTotal())
コード例 #2
0
    def __init__(self, main, panel):
        self.play_process_state = StringVar(
        )  # proces-state to share information between the various events
        self.main = main
        self.panel = panel
        self.root = self.panel.root
        self.mg = MoveGenerator()
        self.cp = ComputerPlayer()
        self.get_move_from_book = False
        self.EvalReceivedProc = None
        self.EvalReceivedContinueProc = None
        self.ContinuationMessage = ''
        self.ProcesFixedDepth = None
        self.ContinuePlaying = None
        self.RescueProcess = None
        self.EngineID = None
        self.AnalyzeGameMoveReceived = None
        self.EndOfGameContinue = None
        self.ClockIsTicking = False
        self.CurrentTimeToGo = 0.0
        self.RemainingMinutes = 0
        self.RemainingSeconds = 0
        self.MiliSecondsRemaining = 1000
        self.NumberOfMovesToGo = 0
        self.RemainingEnigineTimeAvailable = self.main.TotalEngineTime
        file = open('/home/feike/Horizon/Opening Books/OpeningBook.pickle',
                    'r')
        self.OpeningBook = pickle.load(file)
        file.close()

        return
コード例 #3
0
 def __init__(self, main, panel):
     self.play_process_state=StringVar()                         # proces-state to share information between the various events
     self.main = main
     self.panel = panel
     self.root = self.panel.root
     self.mg = MoveGenerator()
     self.cp = ComputerPlayer()
     return
コード例 #4
0
ファイル: DraughtAnalyze.py プロジェクト: rhalbersma/horizon
    def __init__(self, main):
        self.cp = ComputerPlayer()
        self.main = main
        self.analpan = None
        self.CurrentMoveDepth = 0
        self.ActiveBoard = None
        self.ActiveEvalPar = None
        self.ActiveEvalGame = None
        self.SearchDepth = 0

        return
コード例 #5
0
ファイル: DraughtPlay.py プロジェクト: rhalbersma/horizon
 def __init__(self, main, panel):
     self.play_process_state=StringVar()                         # proces-state to share information between the various events
     self.main = main
     self.panel = panel
     self.root = self.panel.root
     self.mg = MoveGenerator()
     self.cp = ComputerPlayer()
     self.get_move_from_book = False
     self.EvalReceivedProc = None
     self.EvalReceivedContinueProc = None
     self.ContinuationMessage = ''
     self.ProcesFixedDepth = None
     return
コード例 #6
0
def rungame():
    """
    Random AF
    :return:
    """
    maxturns = 300

    playme = g.Game(4)
    playme.loadtiles()
    plyrz = []
    for plnum in range(4):
        plyrz.append(cp.ComputerPlayer(playme, playme.playerboard[plnum]))
    playme.show()
    cont = True
    firstplayer = 0
    turnz = 0
    retval = 0
    # while cont:
    while cont and turnz < maxturns:  # real games rarely go past 5
        for idxnum in range(4):
            plnum = (firstplayer + idxnum) % 4
            if playme.turnover(): #   dispnum == 9:
                # cont = False
                for plnum in range(4):
                    playme.playerboard[plnum].movescore(playme.box)
                    if playme.playerboard[plnum].firstplayer:
                        firstplayer = plnum
                        playme.playerboard[plnum].firstplayer = False
                    if playme.playerboard[plnum].finalboard.horizrowcomplete():
                        cont = False
                if cont:
                    print("    next turn")
                    if not playme.loadtiles():
                        cont = False
                        retval = 1
                        break
                    playme.show()
                break
            print("Player " + str(plnum+1) + " turn:")
            plyrz[plnum].taketurn()
            playme.show()
            turnz += 1
    print("Final scoring here")
    for idxnum in range(4):
        playme.playerboard[idxnum].finalscore()
    playme.show()
    if turnz == maxturns:
        retval = 1
    return (retval)
コード例 #7
0
    def display(self):
        """ """
        screen, background, clock = self._facade.initialise_screen("battleships", "BATTLESHIPS.png", self._screen_size)

        board = Board.Board(screen, self._dal)

        p1_allocation = Allocation.Allocation(1)
        p2_allocation = Allocation.Allocation(2)

        Tracker = StopWatch.TrackTime()
        

        player1 = Player.Player(board, p2_allocation, self._dal, screen)
        if self._dal.is_player2_cpu() == False:
            player2 = Player.Player(board, p1_allocation, self._dal, screen)
        else: 
            player2 = CPU.ComputerPlayer(board, p1_allocation, self._dal, screen)


        current_player = player1

        Tracker.start_timer_1()   ## Start tracking the time taken by player 

        ################################################
        # This is the main gaming loop for this screen
        ################################################
        while True:

            #cap the framerate to 30 frames per second
            clock.tick(30)

            # this loop will walk through a list of captured events
            # and react according to the specific ones we are interested in.
            events = pygame.event.get()

            for event in events:
                if event.type == QUIT or (event.type == KEYDOWN and event.key == K_ESCAPE):
                    return Navigate.SPLASHSCREEN
                
                ## Get the current mouse positional information
                pos = pygame.mouse.get_pos()
            
            screen.blit(background, (0, 0))


            if p1_allocation.are_all_ships_destroyed() == False and p2_allocation.are_all_ships_destroyed() == False and self.checked_out == False:
                current_player.take_turn(pos, event)
                if current_player.swap_player == True:
                    current_player.swap_player = False
                    current_player.reset_shot_taken()
                    if current_player.is_player_1 == True:
                        Tracker.stop_timer_1()
                        Tracker.start_timer_2()
                        current_player = player2
                    else:
                        Tracker.stop_timer_2()
                        Tracker.start_timer_1()
                        current_player = player1
            else:
                self.checked_out == True
                t1 = Tracker.get_overall_time_for_timer_1()
                t2 = Tracker.get_overall_time_for_timer_2()
                shots1 = p1_allocation.get_number_of_shots_taken
                shots2 = p2_allocation.get_number_of_shots_taken

                if p1_allocation.are_all_ships_destroyed() == True:  ### then player 2 won
                    self._facade.DrawStringArchivoNarrow(screen,"GAME OVER PLAYER 2 WINS", 400, 438,self.GREEN, False, 77 )
                    self._dal.add_stat_to_player(2,t2, str(shots2), "true")
                    self._dal.add_stat_to_player(1,t1, str(shots1), "false")
                else: ## player 1 won
                    self._facade.DrawStringArchivoNarrow(screen,"GAME OVER PLAYER 1 WINS", 400, 438,self.GREEN, False, 77 )
                    self._dal.add_stat_to_player(1,t1, str(shots1), "true")
                    self._dal.add_stat_to_player(2,t2, str(shots2), "false")

         

            
            # the next statement is important otherwise carriage returns will remain and continue to be processed in the processForm           

            pygame.display.update()
         
            
            pygame.display.flip()
コード例 #8
0
                 bord: Board):
        self.game_logic = game_logic
        self.players = players
        self.bord = bord
        # itertools has a nice way to implement next player:
        # import itertools
        # self.players = itertools.cycle(players)

    def next_player(self) -> PlayerBase:
        # return next(self.players)
        the_game.step_counter += 1
        return self.players[the_game.step_counter % 2]

    def start_game(self):
        while not self.game_logic.is_win():
            current_player = self.next_player()
            print(f"{current_player.name} playing ... ")
            self.bord.print_board()
            step = current_player.next_step()
            self.bord.set_step(current_player.symbol, step)


game_logic = GameLogic()
board = Board(3)
hp = HumanPlayer("Amiel", 'X', board)
cp = ComputerPlayer("My Computer", '0', board)
players = [hp, cp]

the_game = TheGame(game_logic, players, board)
the_game.start_game()