Ejemplo n.º 1
0
def game_ai():
    del list1[:]
    del list2[:]
    del list3[:]
    del list_all[:]
    for i in range(COLUMN):
        for j in range(ROW):
            list_all.append((i, j))

    gobang = GoBang()
    render = GameRender(gobang)
    ai = GobangAI(gobang, ChessboardState.WHITE, search_depth)
    result = ChessboardState.EMPTY
    enable_ai = True
    keepGoing = True

    while keepGoing:
        # pygame event handle
        for event in pygame.event.get():
            # quit
            if event.type == QUIT:
                keepGoing = False
            elif event.type == KEYDOWN:
                if event.key == pygame.K_ESCAPE:
                    keepGoing = False
            elif event.type == MOUSEBUTTONDOWN:
                # human move
                if render.one_step():
                    # success
                    result = gobang.get_chess_result()
                else:
                    continue
                if result != ChessboardState.EMPTY:
                    break
                if enable_ai:
                    # AI move
                    ai.one_step()
                    result = gobang.get_chess_result()
                else:
                    render.change_state()

        # render
        render.draw_chess()
        render.draw_mouse()

        if result != ChessboardState.EMPTY:
            # render.draw_result(result)
            gameOver(result, True)
            keepGoing = False

        # update
        pygame.display.update()
Ejemplo n.º 2
0
def game_ai_ai(displayResult, selfGame):
    del list1[:]
    del list2[:]
    del list3[:]
    del list_all[:]
    for i in range(COLUMN):
        for j in range(ROW):
            list_all.append((i, j))

    gobang = GoBang()
    render = GameRender(gobang)
    ai = GobangAI(gobang, ChessboardState.WHITE, search_depth)
    if selfGame:
        ai2 = GobangAI2(gobang, ChessboardState.BLACK, search_depth)
    else:
        ai2 = gomokuAI(gobang, ChessboardState.BLACK, search_depth)
    result = ChessboardState.EMPTY
    keepGoing = True

    while keepGoing:
        ai2.one_step()
        result = gobang.get_chess_result()
        ai.one_step()
        result = gobang.get_chess_result()
        render.change_state()
        # pygame event handle
        for event in pygame.event.get():
            # quit
            if event.type == QUIT:
                keepGoing = False
            elif event.type == KEYDOWN:
                if event.key == pygame.K_ESCAPE:
                    keepGoing = False

        # render
        render.draw_chess()
        render.draw_mouse()

        if result != ChessboardState.EMPTY:
            # render.draw_result(result)
            gameOver(result, displayResult)
            keepGoing = False

        # update
        pygame.display.update()
Ejemplo n.º 3
0
def game():
    gobang = GoBang()
    render = GameRender(gobang)
    result = ChessboardState.EMPTY
    enable_ai = False
    keepGoing = True

    while keepGoing:
        for event in pygame.event.get():
            if event.type == QUIT:
                keepGoing = False
            elif event.type == KEYDOWN:
                if event.key == pygame.K_ESCAPE:
                    keepGoing = False
            elif event.type == MOUSEBUTTONDOWN:
                if render.one_step():
                    result = gobang.get_chess_result()
                else:
                    continue
                if result != ChessboardState.EMPTY:
                    break
                if enable_ai:
                    result = gobang.get_chess_result()
                else:
                    render.change_state()

        # render
        render.draw_chess()
        render.draw_mouse()

        if result != ChessboardState.EMPTY:
            # render.draw_result(result)
            gameOver(result, True)
            keepGoing = False

        # update
        pygame.display.update()
Ejemplo n.º 4
0
import pygame
from pygame.locals import *
from sys import exit
from consts import *
from gobang import GoBang
from render import GameRender
#from gobang_ai import GobangAI

if __name__ == '__main__': 
    gobang = GoBang()
    render = GameRender(gobang)
    #先給AI留個接口
    #ai = GobangAI(gobang, ChessboardState.WHITE)
    result = ChessboardState.EMPTY
    enable_ai = False

    while True:
        # 捕捉pygame事件
        for event in pygame.event.get():
            # 退出進程
            if event.type == QUIT:
                exit()
            elif event.type ==  MOUSEBUTTONDOWN:
                # 成功下棋
                if render.one_step():
                    result = gobang.get_chess_result()
                else:
                    continue
                if result != ChessboardState.EMPTY:
                    break
                if enable_ai:
Ejemplo n.º 5
0
from sys import exit
from consts import *
from gobang import GoBang
from render import GameRender
from agent import GobangAI

if __name__ == '__main__':
    gobang = GoBang()
    flag = input(
        'Do you want to play first/black? Input y for yes, other characters for no: '
    )
    ai_color = ChessboardState.BLACK
    if flag == 'y':
        ai_color = ChessboardState.WHITE
    render = GameRender(gobang, ai_color)
    while not render.if_end():
        render.play_chess()
        render.switch_palyer()
    render.switch_palyer()
    render.show_result()
Ejemplo n.º 6
0
def play(hparams):
    gomoku = Gomoku(hparams)
    render = GameRender(gomoku, hparams)

    # change the AI here, bigger the depth stronger the AI
    ai = RLAgent(gomoku, BoardState.BLACK)

    result = BoardState.EMPTY

    # AI plays first
    ai.first_step()
    result = gomoku.get_chess_result()
    render.change_state()

    while True:
        if hparams['enable_second_ai']:
            result = gomoku.get_chess_result()
            if result != BoardState.EMPTY:
                print(result, "wins")
                break
            if hparams['enable_ai']:
                ai.one_step()
                result = gomoku.get_chess_result()
                if result != BoardState.EMPTY:
                    print(result, "wins")
                    break
            else:
                render.change_state()
        # pygame event, player vs. ai section
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                exit()
            elif event.type == pygame.MOUSEBUTTONDOWN:
                if render.one_step():
                    result = gomoku.get_chess_result()
                else:
                    continue
                if result != BoardState.EMPTY:
                    break
                if hparams['enable_ai']:
                    ai.one_step()
                    result = gomoku.get_chess_result()
                else:
                    render.change_state()
            else:
                continue
        render.draw_chess()
        render.draw_mouse()

        if result != BoardState.EMPTY:
            render.draw_result(result)

        pygame.display.update()