コード例 #1
0
    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)
コード例 #2
0
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
コード例 #3
0
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!")
コード例 #4
0
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)
コード例 #5
0
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")
コード例 #6
0
def save_maze(filetype):
    save(get_current_maze(), filetype)
コード例 #7
0
ファイル: botMain.py プロジェクト: zhonglin-h/unnamedbot
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!")