Exemplo n.º 1
0
def getPlayer(nn):
    if nn.endswith(".json"):
        return NNPlayer(json_tricks.loads(open(nn).read())['player'])
    elif nn=='mm':
        return MMPlayer()
    elif nn[:4]=='mcts':
        return MCTSPlayer(nPlay=int(nn[4:]), maxPlies=9999, bNegamax=True)
    elif nn[:2]=='mc':
        return MCPlayer(nPlay=int(nn[2:]))
    elif nn=='rp':
        return RandomPlayer()
    elif nn=='hu':
        return HumanPlayer()
    elif nn[:2]=='oa':
        return OmniscientAdversary(nPlay=int(nn[2:]))
    else:
        raise Exception("Unsupported player [%s]" % nn)
Exemplo n.º 2
0
def init(screen):
    if not pygame.get_init():
        pygame.init()

    # 将变量设为初始值
    global WIN, background, pieceRecord, player, CUR_PIECE_COLOR, fontCount
    WIN = False  # 设置获胜标志为否
    CUR_PIECE_COLOR = BLACK_PIECE  # 设置当前玩家为黑棋

    fontCount = pygame.font.Font(FONT_FILE, 20)  # 读取字体

    # 初始化两个玩家
    # todo: 待AI玩家开发完毕,在这里将执白玩家设置成AI玩家
    player1 = HumanPlayer(BLACK_PIECE)
    player2 = AlgorithmPlayer(WHITE_PIECE)

    player = (player1, player2)  # 初始化玩家信息

    # 初始化棋局数组
    pieceRecord = np.full((LINES, LINES), -1)

    # 绘制背景
    global background
    background = pygame.image.load(new_img_filename)
    background = pygame.transform.scale(background, SCREEN)
    screen.blit(background, (0, 0))

    # 初始化棋子图层

    global sufPiece, sufOthers, sufPieceOrder, pieceColor
    pieceBlack = pygame.image.load("go_piece_black.png").convert_alpha()
    pieceWhite = pygame.image.load("go_piece_white.png").convert_alpha()
    pieceBlack = pygame.transform.scale(pieceBlack,
                                        (PIECE_WIDTH, PIECE_HEIGHT))
    pieceWhite = pygame.transform.scale(pieceWhite,
                                        (PIECE_WIDTH, PIECE_HEIGHT))

    pieceColor = (pieceBlack, pieceWhite)  # 将棋子图层放在数组中,用于在展示时切换

    sufPiece = screen.convert_alpha()  # 创建棋子透明图层
    sufPieceOrder = screen.convert_alpha()  # 创建展示棋子顺序的透明图层
    sufOthers = screen.convert_alpha()  # 创展示其他信息的透明图层

    # 显示棋盘
    pygame.display.update()
Exemplo n.º 3
0
from vector2 import Vector2
from humanPlayer import HumanPlayer
from board import Board
from game import Game

players = [HumanPlayer(i) for i in range(2)]
numShipsOfSize = {2: 1, 3: 2, 4: 1, 5: 1}
boardSize = Vector2(10, 10)

board = Board(boardSize, numShipsOfSize, players)
game = Game(board)
game.Play()
Exemplo n.º 4
0
    # Experience ReplayというDQNで用いる学習手法で使うバッファ
    replay_buffer = chainerrl.replay_buffer.ReplayBuffer(capacity=10**6)

    # Agentの生成(replay_bufferなどを共有する2つ)
    agent = chainerrl.agents.DoubleDQN(q_func,
                                       optimizer,
                                       replay_buffer,
                                       gamma,
                                       explorer,
                                       replay_start_size=500,
                                       update_interval=1,
                                       target_update_interval=100)
    agent.load("result_100000")

    humanPlayer = HumanPlayer()
    board = Board()

    for i in range(1):
        board.reset()
        dqn_first = np.random.choice([True, False])
        while not board.done:
            # DQN
            if dqn_first or np.count_nonzero(board.board) > 0:
                board.show()
                action = agent.act(board.board.copy())
                board.move(action, 1)

                if board.done:
                    board.show()
                    if board.winner == 1:
Exemplo n.º 5
0
from randomComputerPlayer import RandomComputerPlayer
from ticTacToe import TicTacToe
from humanPlayer import HumanPlayer
from gameController import GameController

if __name__ == "__main__":
    x_player = RandomComputerPlayer("X")
    o_player = HumanPlayer("O")
    tic = TicTacToe()
    GameController.play(tic, x_player, o_player, print_game=True)
from state import State
from player import Player
from humanPlayer import HumanPlayer

if __name__ == "__main__":
    # training
    training = str(input("Do you want to retrain the computer? Y/N?"))
    if training == 'Y' or training == 'y':
        p1 = Player("p1")
        p2 = Player("p2")

        st = State(p1, p2)
        print("training...")
        st.play(20000)
        #st.play()
        p1.savePolicy()

    # play with human
    p1 = Player("computer", exp_rate=0)
    p1.loadPolicy("policy_p1")

    p2 = HumanPlayer("Coco")

    st = State(p1, p2)
    st.play2()
Exemplo n.º 7
0

def updateBoard(iboard, point, icon):
    global board
    x = int(point.split(',')[0])
    y = int(point.split(',')[1])
    if board[x][y] == '.':
        board[x][y] = icon
    else:
        print("this cell is taken, nothing happened")


print("hello")
board_utils = BoardUtils()
score_keeper = Score()
h = HumanPlayer(score_keeper)
a = AIPlayer(score_keeper)
players = [h, a]
current_player = 0
board = [['.', '.', '.'], ['.', '.', '.'], ['.', '.', '.']]

while not board_utils.game_over(board):
    print(f"now is the turn of {players[current_player].name}")
    print("this is the board before the move")
    point = players[current_player].next_move(board)
    updateBoard(board, point, players[current_player].icon)
    current_player = (current_player + 1) % len(players)
    #     print(current_player)
    #     point = players[current_player].next_move(board)
    #     print(point)
    #     board_utils.updateBoard(board, point, players[current_player])