def test_integration_generate_save_check_file_count(self): if os.name == 'nt': path = 'mazes\\' else: path = 'mazes/' filenames = ["maze1_5x5.json", "maze2_5x5.json", "maze3_5x5.json"] write_test_file(path, filenames) new_maze = MazeFactory.generate(5, 5) file_management.save(new_maze, "json") files = file_management.get_files_in_dir("json") self.assertCountEqual( files, [ "maze1_5x5.json", "maze2_5x5.json", "maze3_5x5.json", "maze4_5x5.json" ], 'Should be ["maze1_5x5.json", "maze2_5x5.json", "maze3_5x5.json", "maze4_5x5.json"]' ) # cleanup test files filenames.append('maze4_5x5.json') del_test_file(path, filenames)
async def part1_forest(cmd, modifiers, message, data, main_channel): if cmd == "light": await theFire.stoke_fire(message, data, main_channel) file_management.save(data) return True return False
def save_mazes(mazes: list): for idx, maze in enumerate(mazes): print( "Saving Maze {} of size {}x{}..".format(idx + 1, (maze.width - 1) // 2, (maze.height - 1) // 2), end=" ", ) save(maze, 'json') print("Done!")
def create_maze(s, pool, size, solve_times, resolvers, lock): name = threading.currentThread().getName() logging.debug("Waiting to join the pool") with s: pool.makeActive(name) logging.info("Generating Maze of size {x}x{y}..".format(x=size, y=size)) maze = MazeFactory.generate(size, size) logging.info("Solving Maze of size {x}x{y}..".format(x=size, y=size)) for solver in resolvers: resolve_maze(maze, solve_times, solver=solver) # locking to acquire unique filename number lock.acquire() save(maze, "json") # releasing again to allow other threads lock.release() pool.makeInactive(name)
async def set_timer(data, name, duration, channel, sleep_segments=5): # add timer result to cooldowns if not name in data.cooldown.keys(): data.cooldown[name] = -1 data.progress_msg_id[name] = -1 if data.cooldown[name] == -1: data.cooldown[name] = 0 progress_bar = list('`' + '-' * sleep_segments + '`') # 10 * '-' message = await channel.send(''.join(progress_bar)) data.progress_msg_id[name] = message.id # count down in segments with length of segment_duration data.cooldown[name] = 0 segment_duration = duration / sleep_segments while sleep_segments > 0: await asyncio.sleep(segment_duration) sleep_segments -= 1 progress_bar[len(progress_bar) - sleep_segments - 2] = '=' await message.edit(content=''.join(progress_bar)) data.cooldown[name] = 1 file_management.save(data) else: await channel.send("ERROR timer not reset")
def save_maze(filetype): save(get_current_maze(), filetype)
async def process_command(message): input_split = message.content[len(botprefix):].split() # /// General Commands /// # no commands if len(input_split) == 0: await message.channel.send("Don't know this command!") return cmd = input_split[0] modifiers = input_split[1:] if cmd.lower() == 'hello': await message.channel.send("Hello!") return elif cmd == 'reset': bot.data = file_management.reset() await message.channel.send("Reset!") return elif cmd == 'setmain': bot.data.main_channel_id = message.channel.id bot.main_channel = message.channel await message.channel.send("Set this channel as main channel!") return else: # /// Game Setup Commands /// if bot.data.state == 0: if cmd == "trytimer": if bot.main_channel == None: await message.channel.send("ERROR: main channel not set. Please use !setmain to set current channel" + \ " as main channel.") else: #timer_thread = Thread(target=await set_timer(bot.data, "temp", 5)) task = asyncio.create_task( theFire.set_timer(bot.data, "temp", 10, bot.main_channel)) #timer_thread.start() # timer_thread = Thread(target=await set_timer(bot.data, "temp2", 10)) # timer_thread.start() # task = asyncio.create_task(set_timer(bot.data, "temp2", 10)) return elif cmd == "resettimer": if "temp" in bot.data.cooldown.keys(): bot.data.cooldown["temp"] = -1 await message.channel.send("Timer reset.") else: await message.channel.send("Timer not started.") return elif cmd == "start": if bot.main_channel == None: await message.channel.send("Main channel not set.") return bot.data.state = 1 bot.data.cooldown["stoke"] = 1 bot.data.progress_msg_id["stoke"] = -1 await theFire.stoke_fire(message, bot.data, bot.main_channel) asyncio.create_task( theFire.darkness(bot.data, bot.main_channel)) file_management.save(bot.data) return # /// Game Phase 1: The Fire /// elif bot.data.state == 1: if await part1_forest.part1_forest(cmd, modifiers, message, bot.data, bot.main_channel) == True: return await message.channel.send("Don't know this command!")