Spaces:
Sleeping
Sleeping
from PIL import Image | |
from grip_env.environment import GridWorldEnv | |
import os | |
import json | |
import numpy as np | |
class GenerateBoard(): | |
def __init__(self, level: str, board_size: int): | |
self.level = level | |
self.board_size = board_size | |
metadata_path = os.path.join('src', f'test_{level}.json') | |
with open(metadata_path, 'r') as f: | |
metadata = json.load(f) | |
num_boards = len(metadata) | |
random_board_num = np.random.randint(0, num_boards) | |
self.board_data = metadata[random_board_num] | |
def setup_initial_board(self): | |
metadata_obj = self.board_data[-1] | |
default_start_pos = np.array(metadata_obj['agent_start_pos']) | |
default_target_pos = np.array(metadata_obj['target_pos']) | |
info = metadata_obj['info'] | |
target_options = [] | |
for piece in info: | |
target = f"{piece['piece_colour']} {piece['piece_shape']} at {piece['piece_region']}" | |
target_options.append(target) | |
env = GridWorldEnv(render_mode="rgb_array", size=self.board_size, grid_info=info, agent_pos=default_start_pos, target_pos=default_target_pos) | |
env.reset() | |
image = env.render() | |
image = Image.fromarray(image) | |
return image, target_options, info | |