Example #1
0
 def update_state(self, gs, pos):
     self.gameState = gs
     self.position = pos
     if pos is not None:
         exit = self.gameState.get_exit()
         exitPosn = ("exit", exit.get_position())
         output = {
             "type":
             "player-update",
             "layout":
             JLevel.player_layout(self.gameState.get_current_floor().grid,
                                  pos),
             "position":
             JLevel.translate_to_xy(pos),
             "objects":
             list(
                 map(
                     lambda x: {
                         "type": x[0],
                         "position": JLevel.translate_to_xy(x[1])
                     }, (self.gameState.get_items() + [exitPosn]))),
             "actors":
             list(
                 map(
                     lambda x: {
                         "type":
                         x.ctype.value,
                         "name":
                         x.get_name(),
                         "position":
                         JLevel.translate_to_xy(x.get_char_position())
                     },
                     list(
                         filter(
                             lambda y: y.is_alive() and not y.exited,
                             self.gameState.get_players() +
                             self.gameState.get_adversaries())))),
             "message":
             self.message
         }
         self.message = ""
         self.server.write_to_id(json.dumps(output), self.ID)
Example #2
0
    server = ServerRemoteAd(args.address, args.port, args.clients, args.wait,
                            args.levels)
    path_to_levels = args.levels

    levels = open(path_to_levels)
    levels_raw = levels.read()
    levels.close()
    parsed_levels = levels_raw.split("\n")
    print(len(parsed_levels))
    floors = []
    if len(parsed_levels) == 1 or int(parsed_levels[0]) != len(
            parsed_levels[1:]):
        raise ValueError("invalid levels file format")
    for i in range(1, len(parsed_levels)):
        level = parsed_levels[i]
        floors.append(JLevel.floorMaker(json.loads(level)))
    if args.start > len(floors) or args.start < 1:
        raise ValueError("invalid floor index")

    start_level_index = args.start - 1
    init_gamestate = GameState(floors)
    init_gamemanager = GameManager(init_gamestate, server, parsed_levels)
    identifier = 0
    for name, ctype, conn in server.joined_heros:
        init_gamemanager.register_player_user(
            RemotePlayer(name, ctype, identifier, server))
        server.id_to_conn[identifier] = conn
        identifier += 1
    for name, ctype, conn in server.joined_advers:
        init_gamemanager.register_player_user(
            RemoteAdversary(name, ctype, identifier, server))
Example #3
0
 def test3(self):
     example = [[WallTile((i, j)) for i in range(10)] for j in range(10)]
     new = JLevel.player_layout(example, (5, 5))
     old = self.player_layout(example, (5, 5))