コード例 #1
0
def test_play():
    from cop_thug import state_ct

    s = state_ct()
    level = 4
    player, opponent = "C", "T"

    print('start!')

    step = 1
    while not (s.is_win(player) or s.is_win(opponent)):
        move, _, _ = bestmove(s, level, player, opponent)
        if move == None:
            print('finish... draw')
            break
        print(f'Step {step}: {move}')

        s.do_move(move)

        if s.is_win(opponent):
            print(f'Player {opponent} win!')
            break

        step += 1
        player, opponent = opponent, player

    print('the end')
コード例 #2
0
ファイル: negmax_test.py プロジェクト: jakobiannn/python_exes
def test_bestmove():
    from cop_thug import state_ct

    # начальное состояние (пустое)
    s = state_ct()
    # на два хода (на четыре полухода) вперед
    level = 4
    # первым ходит "X", вторым - "0"
    player, opponent = 'C', 'T'

    # получаем лучший ход
    move, _, nodes = bestmove(s, level, player, opponent)

    print(f"Best move is: {move}")
    print(f"Node count {nodes}")
コード例 #3
0
def test_plot():
	from cop_thug import state_ct
	import numpy as np
	import matplotlib.pyplot as plt
	s = state_ct()
	player, opponent = 'C', 'T'

	# правая граница для графика
	depth = 6
	x = np.arange(1, depth, 1)
	y = np.array([calc_nodes(s, level, player, opponent) for level in x])
	_ = plt.figure()
	plt.plot(x, y)
	plt.title('Count of nodes')
	plt.ylabel('nodes')
	plt.xlabel('minimax')
	plt.grid(True)
	plt.show()
コード例 #4
0
def test_time(level):
	''' Тестирование времени расчета
		level - количество полуходов, максимальная
				глубина дерева
	'''

	from cop_thug import state_ct
	from timeit import Timer

	s = state_ct()
	player, opponent = 'C', 'T'

	# lambda-функция расчета количества узлов
	f = lambda: calc_nodes(s, level, player, opponent)

	# расчет времени выполнения
	t = Timer(f)
	print("Time = ", t.timeit(number=1))
コード例 #5
0
from cop_thug import state_ct
from minimax import bestmove

s = state_ct()

level = 5
player, opponent = 'C', 'T'
move, _, nodes = bestmove(s, level, player, opponent)
print(f"Best move is: ", move)

def calc_nodes(state, level, player, opponent):
    ''' Расчет количества сгенерированных узлов
        - state - начальное состояние
        - level - максимальная глубина рекрсии (количество полуходов)
        - player - игрок
        - opponent - оппонент
    '''
    _, _, nodes = bestmove(state, level, player, opponent)
    return nodes

def test_time(level):
	''' Тестирование времени расчета
		level - количество полуходов, максимальная
				глубина дерева
	'''

	from cop_thug import state_ct
	from timeit import Timer

	s = state_ct()
	player, opponent = 'C', 'T'