Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions blokus_gym/__init__.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
from gym.envs.registration import register

register(
id='blokus-custom-v0',
entry_point='blokus_gym.envs:BlokusCustomEnv',
)

register(
id='blokus-hard-v0',
entry_point='blokus_gym.envs:BlokusEnv',
Expand Down
2 changes: 1 addition & 1 deletion blokus_gym/envs/__init__.py
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
from blokus_gym.envs.blokus_env import BlokusEnv
from blokus_gym.envs.blokus_envs import BlokusSimpleEnv, BlokusSimpleGreedyEnv, BlokusDuoEnv, BlokusDuoGreedyEnv, BlokusGreedyEnv, BlokusSimpleMinimaxEnv
from blokus_gym.envs.blokus_envs import BlokusSimpleEnv, BlokusSimpleGreedyEnv, BlokusDuoEnv, BlokusDuoGreedyEnv, BlokusGreedyEnv, BlokusSimpleMinimaxEnv, BlokusCustomEnv
10 changes: 9 additions & 1 deletion blokus_gym/envs/blokus_envs.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,15 @@
from blokus_gym.envs.shapes.shapes import get_all_shapes
from blokus_gym.envs.players.greedy_player import GreedyPlayer
from blokus_gym.envs.players.minimax_player import MinimaxPlayer

from blokus_gym.envs.players.random_player import RandomPlayer

class BlokusCustomEnv(BlokusEnv):
NUMBER_OF_PLAYERS = 3
BOARD_SIZE = 10 # This will result in a 10x10 board
STATES_FILE = "states.json" # This needs to be set, if not it will take the base class states
all_shapes = [shape for shape in get_all_shapes()
if shape.size == 4] # This will take only the 4 tiles pieces
bot_type = RandomPlayer # Defaults to RandomPlayer if not passed

class BlokusGreedyEnv(BlokusEnv):
bot_type = GreedyPlayer
Expand Down
35 changes: 35 additions & 0 deletions play_custom.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
import blokus_gym
from blokus_gym.envs.blokus_env import BlokusEnv
import gym
import random

if __name__ == "__main__":
# env = BlokusEnv()
env = gym.make("blokus_gym:blokus-custom-v0") # Make sure to do: pip install -e . in root
print(f"number of possible moves {env.action_space}")
count = 0
nb_rounds = 0
for _ in range(100):
while True:
# input()
action = env.action_space.sample()
count += len(env.ai_possible_indexes())
nb_rounds += 1
# action = random.randint(0, 918)
observation, reward, done, info = env.step(action)
env.render("human")
# print(env.ai.all_ids_to_move.keys())
# print(reward)

if done:
# print(env.ai.all_ids_to_move.keys())
# input()
print(f"{'won' if reward == 1 else ('tie-won' if reward == 0 else 'lost')}")
# print(env.ai.all_ids_to_move.keys())
observation = env.reset()
# input()
break

print(f"Average number of moves per turn: {count / nb_rounds:.2f}")
print(f"Starter won {env.starter_won / env.games_played * 100:.2f}%")
env.close()
13 changes: 9 additions & 4 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
numpy>=1.17.4
gym>=0.17.1
torch>=1.4.0
cython>=0.29.16
gym==0.15.7
matplotlib>=3.1.2
cython>=0.29.16
numpy>=1.17.4
opencv-python==4.5.3.56
pandas>=1.1.5
setuptools>=58.0.4
stable_baselines>=2.10.2
tensorflow==1.15.2
torch>=1.4.0