|
import pytest |
|
from easydict import EasyDict |
|
from zoo.board_games.tictactoe.envs.tictactoe_env import TicTacToeEnv |
|
|
|
|
|
@pytest.mark.envtest |
|
class TestTicTacToeEnv: |
|
|
|
def test_self_play_mode(self): |
|
cfg = EasyDict( |
|
battle_mode='self_play_mode', |
|
channel_last=True, |
|
scale=True, |
|
agent_vs_human=False, |
|
prob_random_agent=0, |
|
prob_expert_agent=0, |
|
bot_action_type='v0' |
|
) |
|
env = TicTacToeEnv(cfg) |
|
env.reset() |
|
print('init board state: ') |
|
env.render() |
|
while True: |
|
"""player 1""" |
|
|
|
action = env.random_action() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
print('player 1: ' + env.action_to_string(action)) |
|
obs, reward, done, info = env.step(action) |
|
env.render() |
|
if done: |
|
if reward > 0: |
|
print('player 1 (human player) win') |
|
else: |
|
print('draw') |
|
break |
|
|
|
"""player 2""" |
|
action = env.bot_action() |
|
print('player 2 (computer player): ' + env.action_to_string(action)) |
|
obs, reward, done, info = env.step(action) |
|
env.render() |
|
if done: |
|
if reward > 0: |
|
print('player 2 (computer player) win') |
|
else: |
|
print('draw') |
|
break |
|
|
|
def test_play_with_bot_mode(self): |
|
cfg = EasyDict( |
|
battle_mode='play_with_bot_mode', |
|
channel_last=True, |
|
scale=True, |
|
|
|
|
|
agent_vs_human=False, |
|
prob_random_agent=0, |
|
prob_expert_agent=0, |
|
bot_action_type='v0' |
|
) |
|
env = TicTacToeEnv(cfg) |
|
env.reset() |
|
print('init board state: ') |
|
env.render() |
|
while True: |
|
"""player 1""" |
|
|
|
action = env.random_action() |
|
|
|
|
|
|
|
|
|
|
|
|
|
print('player 1: ' + env.action_to_string(action)) |
|
obs, reward, done, info = env.step(action) |
|
|
|
env.render() |
|
if done: |
|
if reward != 0 and info['next player to play'] == 2: |
|
print('player 1 (human player) win') |
|
elif reward != 0 and info['next player to play'] == 1: |
|
print('player 2 (computer player) win') |
|
else: |
|
print('draw') |
|
break |
|
|
|
|
|
test = TestTicTacToeEnv() |
|
test.test_self_play_mode() |
|
test.test_play_with_bot_mode() |
|
|