예제 #1
0
def regenerate_map(player, map_width, map_height, max_rooms, min_room_size, max_room_size, min_npcs,
                   max_npcs, colors, entities, floor_number, message_x, message_width, message_height,
                   preserve_messages=False):
    """ Fully resets the game map without closing the window. """
    # Reinitialize the tile map
    game_map = GameMap(map_width, map_height)

    # Remove all entities except the player
    entities.clear()
    entities.append(player)

    # Generate a new game map
    generate_all(game_map, map_width, map_height, max_rooms, min_room_size, max_room_size, min_npcs, max_npcs,
                 colors, entities, floor_number)

    # Reset the message log
    if not preserve_messages:
        message_log = MessageLog(message_x, message_width, message_height)
    else:
        message_log = None

    # Set up the fov_map for the new game map and recalculate it
    fov_recalculate = True
    fov_map = initialize_fov(game_map)

    return game_map, fov_recalculate, fov_map, message_log
예제 #2
0
	def test_reconstr(self):
		testdir = '.test/'
		datadir = gen.generate_all('repeatCopy', testdir, 7,
			15, 3, 5,
			11, 6, 9,
			23,
            train_nrepeat_low=2, train_nrepeat_high=10,
            valid_nrepeat_low=11, valid_nrepeat_high=20)
		traintensor, validtensor = gen.reconstruct_tensor(datadir)
		f = h5py.File(P.join(datadir, 'tensor.hdf5'), 'r')
		truetrain, truevalid = f['train'], f['valid']
		self.assertTrue((traintensor==truetrain).all())
		self.assertTrue((validtensor==truevalid).all())
예제 #3
0
def main(args):

    # Device Configuration for Multi-GPU Environment #
    device = torch.device(
        f'cuda:{args.gpu_num}' if torch.cuda.is_available() else 'cpu')

    # Fix Seed for Reproducibility #
    random.seed(args.seed)
    np.random.seed(args.seed)
    torch.manual_seed(args.seed)
    torch.cuda.manual_seed(args.seed)

    # Samples and Weights Path #
    paths = [args.samples_path, args.weights_path]
    for path in paths:
        make_dirs(path)

    # Prepare Data Loader #
    train_div2k_loader = get_div2k_loader(sort='train',
                                          batch_size=args.batch_size,
                                          image_size=args.image_size,
                                          upscale_factor=args.upscale_factor,
                                          crop_size=args.crop_size,
                                          patch_size=args.patch_size,
                                          patch=args.patch,
                                          flip=args.flip,
                                          rotate=args.rotate)

    val_div2k_loader = get_div2k_loader(sort='val',
                                        batch_size=args.val_batch_size,
                                        image_size=args.image_size,
                                        upscale_factor=args.upscale_factor,
                                        crop_size=args.crop_size)
    print("val_div2k ", val_div2k_loader)

    # Prepare Networks #
    if args.model == 'edsr':

        edsr = EDSR(channels=args.channels,
                    features=args.dim,
                    num_residuals=args.num_residuals,
                    scale_factor=args.upscale_factor).to(device)

    else:
        raise NotImplementedError

    D = Discriminator(in_channels=args.channels,
                      ndf=args.dim,
                      linear_dim=args.linear_dim,
                      out_dim=args.out_dim,
                      disc_type=args.disc_type).to(device)

    if args.phase == 'train':
        if args.model == 'edsr':
            train_srcnns(train_div2k_loader, val_div2k_loader, edsr, device,
                         args)

    elif args.phase == 'inference':

        if args.model == 'edsr':
            edsr_weight_path = os.path.join(
                args.weights_path,
                '{}_Epoch_{}.pkl'.format(edsr.__class__.__name__,
                                         args.num_epochs))
            edsr.load_state_dict(torch.load(edsr_weight_path))
            inference(val_div2k_loader,
                      edsr,
                      args.upscale_factor,
                      args.num_epochs,
                      args.inference_path,
                      device,
                      save_combined=False)

    elif args.phase == 'generate':
        generate_all(val_div2k_loader, device, args)

    else:
        raise NotImplementedError
예제 #4
0
import asyncio
from aiogram import Bot, types
from aiogram.dispatcher import Dispatcher
from aiogram.utils import executor
from config import tg_token
from query import query
from generate import generate_all
from timer import event
from objects import Tasks, UnusualTasks
import database
import time
import keyboard

generate = generate_all()
timers = []
constants = database.table("constants").select_all()
constants = {field: value for field, value in constants}
tasks = Tasks()
unusual_tasks = UnusualTasks()

DELAY = 30

bot = Bot(token=tg_token)
dp = Dispatcher(bot)


### --- ### --- ### ---- TASK ---- ### --- ### --- ###

@dp.message_handler(commands=['orf'])
async def new_orf(message: types.Message):
    msg, kb = unusual_tasks.orthoepy(message.chat.id).new()
예제 #5
0
def main():
    # Limit the FPS
    tcod.sys_set_fps(max_fps)

    # Set the font to be used
    tcod.console_set_custom_font('terminal8x8_gs_as.png', tcod.FONT_TYPE_GREYSCALE | tcod.FONT_LAYOUT_ASCII_INCOL)

    # Create the screen
    tcod.console_init_root(screen_width, screen_height, 'Rogue', False)

    con = tcod.console_new(screen_width, screen_height)
    panel = tcod.console_new(screen_width, screen_height)

    # Generate the tile map
    game_map = GameMap(map_width, map_height)

    # Initialize the player and the entities list
    player = Player(player_stats[0], player_stats[1], player_stats[2], player_stats[3], player_stats[4], game_map.tiles,
                    screen_width // 2, screen_height // 2, '@', colors.get("player"), "player", True)
    entities.append(player)

    # Represents the current dungeon floor
    floor_number = 1

    # Generate the rest of the game map
    generate_all(game_map, map_width, map_height, max_rooms, min_room_size, max_room_size, min_npcs, max_npcs, colors,
                 entities, floor_number)

    # Initialize user input
    key = tcod.Key()
    mouse = tcod.Mouse()

    # Initialize the game state
    game_state = GameStates.PLAYER_TURN

    # Initialize the message log
    message_log = MessageLog(message_x, message_width, message_height)

    # Determine whether or not the FOV needs to be recalculated
    fov_recalculate = True
    fov_map = initialize_fov(game_map)

    # Game loop
    while not tcod.console_is_window_closed():
        # Update key and mouse with the user inputs
        tcod.sys_check_for_event(tcod.EVENT_KEY_PRESS, key, mouse)

        if fov_recalculate:
            calculate_fov(fov_map, player.x, player.y, fov_radius, fov_light_walls, fov_algorithm)

        # Render everything
        render_all(con, panel, message_log, entities, game_map, fov_map, fov_recalculate, screen_width, screen_height,
                   bar_width,
                   panel_height, panel_y, debug)
        fov_recalculate = False

        # Apply the updates on screen
        tcod.console_flush()

        # Clear the entities in preparation for updates
        clear_all(con, entities)

        # Handle key presses
        action = handle_keys(key)

        move = action.get("move")
        use = action.get("use")
        exit = action.get("exit")
        fullscreen = action.get("fullscreen")
        reset = action.get("reset")
        regenerate = action.get("regenerate")

        player_turn_results = []

        if move and game_state == GameStates.PLAYER_TURN:
            dx, dy = move
            if not game_map.is_blocked(player.x + dx, player.y + dy):
                player.move(game_map.tiles, dx, dy)
                fov_recalculate = True

            target = enty.get_entity_at_location(player.x + dx, player.y + dy, entities)

            if target != -1:
                player_turn_results.extend(player.attack(target))

            game_state = GameStates.ENEMY_TURN

        if use and game_state == GameStates.PLAYER_TURN:
            if player.inventory[use - 1] is not None:
                player_turn_results.extend(player.inventory[use - 1].use(entities))

        if exit:
            return True

        if fullscreen:
            tcod.console_set_fullscreen(not tcod.console_is_fullscreen())

        if reset:  # Reset the game
            player, game_state, regen_values = reset_map(game_map, map_width, map_height, max_rooms, min_room_size,
                                                         max_room_size, min_npcs, max_npcs, colors, entities, message_x,
                                                         message_width, message_height)
            game_map, fov_recalculate, fov_map, message_log = regen_values

        if regenerate and debug:  # Properly generate a new game map
            game_map, fov_recalculate, fov_map, message_log = regenerate_map(player, map_width, map_height, max_rooms,
                                                                             min_room_size, max_room_size, min_npcs,
                                                                             max_npcs, colors, entities, floor_number,
                                                                             message_x, message_width, message_height)

        # Handle the player turn results
        for result in player_turn_results:
            dead_attacker = result.get("dead")

            if dead_attacker:
                message_log.add_message(Message("You have killed the {0}".format(dead_attacker.name)))
                dead_attacker.kill(game_map.tiles)

                message_log.add_message(Message("{0} XP granted".format(dead_attacker.xp)))
                level_up = player.add_xp(dead_attacker.xp).get("level up")

                if level_up:
                    message_log.add_message(Message("You reached level {0}".format(level_up[0])))
                    message_log.add_message(Message(level_up[1]))
                entities.remove(dead_attacker)

            damaged_entity = result.get("damaged")

            if damaged_entity:
                message_log.add_message(
                    Message("You attacked the {0} for {1} damage".format(damaged_entity[0], damaged_entity[1])))

            pickup_used = result.get("pickup_used")

            if pickup_used:
                message_log.add_message(Message(pickup_used[0]))
                if pickup_used[1].deletes:
                    pickup_used[1].delete(player)

            next_floor = result.get("next_floor")

            if next_floor:
                message_log.add_message(Message("You have advanced to floor {0}".format(next_floor + 1)))
                floor_number += 1
                game_map, fov_recalculate, fov_map, null = regenerate_map(player, map_width, map_height,
                                                                          max_rooms, min_room_size,
                                                                          max_room_size, min_npcs, max_npcs,
                                                                          colors, entities, floor_number,
                                                                          message_x, message_width,
                                                                          message_height, preserve_messages=True)

        # Enemy turn (really every entity that is not the player)
        if game_state == GameStates.ENEMY_TURN:
            enemy_turn_results = enty.entity_turn(entities, fov_map, game_map)
            game_state = GameStates.PLAYER_TURN

            # Handle the entity turn results
            for result in enemy_turn_results:
                dead = result.get("dead")

                if dead:
                    game_state = player.kill(game_map.tiles)
                    message_log.add_message(Message("You have died"))
                    message_log.add_message(Message("GAME OVER"))
                    break

                damaged_entity = result.get("damaged")

                if damaged_entity:
                    message_log.add_message(
                        Message("The {0} attacked you for {1} damage".format(damaged_entity[0], damaged_entity[1])))

                pickup_failed = result.get("pickup_failed")

                if pickup_failed:
                    message_log.add_message(
                        Message("You cannot pick up the {0} since your inventory is full".format(pickup_failed[0])))

                pickup_success = result.get("pickup_success")

                if pickup_success:
                    message_log.add_message(Message("You picked up the {0}".format(pickup_success[0])))
                    pickup_success[1].kill(game_map.tiles)
                    entities.remove(pickup_success[1])

                upgrade_used = result.get("upgrade_used")

                if upgrade_used:
                    message_log.add_message(Message(upgrade_used[0]))
                    message_log.add_message(Message(upgrade_used[1]))
                    upgrade_used[2].kill(game_map.tiles)
                    entities.remove(upgrade_used[2])