def create_room(self): """Creates room and returns it's id""" new_room = Room() new_room.id = self.room_id_manager.get_id() self.rooms[new_room.id] = new_room new_room.subscribe(self) return new_room.id
def create_simulation(self, user_input, input_kwargs): Room.create_room() new_holo = Holodeck(self, scenarios['test']['room_count'], scenarios['test']['room_list']) holodecks[new_holo.uuid_id] = new_holo
def enter_holo(self, user_input, input_kwargs): holo_template = "6942edc5-1f21-4164-86e7-b10f7a3d0b6a" new_holo = Room( **{ "uuid_id": uuid.uuid4(), # uuid "entity_type": rooms[holo_template].entity_type, # base_type "ship_id": rooms[holo_template].ship_id, # ship_id "coordinates": rooms[holo_template].coordinates, # coordinates "name": rooms[holo_template].name, # name "description": rooms[holo_template].description, # description "exits": { "out": self.location }, # exits "region": rooms[holo_template].region, # region "zone": rooms[holo_template].zone, # zone "elevation": rooms[holo_template].elevation, # elevation "effects": rooms[holo_template].effects, # effects "player_inv": rooms[holo_template].player_inv, # player_inv "item_inv": rooms[holo_template].item_inv, # item_inv "npc_inv": rooms[holo_template].npc_inv, # npc_inv "mob_inv": rooms[holo_template].mob_inv, # mob_inv "owner": rooms[holo_template].owner }) # owner rooms[new_holo.uuid_id] = new_holo rooms[self.location].player_inv.remove(self) print("before holo:", self.location) self.location = new_holo.uuid_id print("after holo:", self.location) rooms[self.location].player_inv.append(self) Room.display_room(self) Lex.pub_print(self=self, target=None, send_kwargs={ 'type': 'text', 'spacing': 1 }, first_person="", target_person="", third_person="{} just arrived.".format(self.name))
def create_room(self): # choose random room from appropriate region template, # create a room, and add it to the instance list template = self.region for i in room_regions: if template == room_regions[i]['name']: template = room_regions[i]['template'] else: template = None print( "PROCGEN | Create Room | Error: Can't find the template.") if template != None: choice = random.choice(template) # room_uuid_id = uuid.uuid4() # print("create_room test:", room_uuid_id) created_room = Room(uuid_id=str(uuid.uuid4()), entity_type=choice['entity_type'], ship_id=choice['ship_id'], coordinates={ 'x': None, 'y': None }, name=choice['name'], description=choice['description'], exits={}, region=self.region, zone=self.zone, elevation=choice['elevation'], effects=choice['effects'], player_inv=[], item_inv=[], npc_inv=[], mob_inv=[], owner=choice['owner']) # add the room to the global room list rooms[created_room.uuid_id] = created_room return created_room
def game_state1(window, control): # NORMAL joy_ctrl = read_all_controls() can_move = True score_font = pygame.font.SysFont("calibri", 35, True) score = 0 snake = objects.Snake() food = objects.Food(randint(0, 39) * GRID, randint(0, 29) * GRID) MOVE = pygame.USEREVENT + 1 pygame.time.set_timer(MOVE, 42) game = Room() while game.run: for event in pygame.event.get(): if event.type == pygame.QUIT: control["state"] = switch_state(game, states.QUIT) elif event.type == pygame.KEYDOWN: if event.key == pygame.K_RIGHT and not snake.dirs[ "left"] and can_move: snake.dir = Vector(snake.vel, 0, 0) snake.change_direction("right") can_move = False elif event.key == pygame.K_LEFT and not snake.dirs[ "right"] and can_move: snake.dir = Vector(-snake.vel, 0, 0) snake.change_direction("left") can_move = False elif event.key == pygame.K_DOWN and not snake.dirs[ "up"] and can_move: snake.dir = Vector(0, snake.vel, 0) snake.change_direction("down") can_move = False elif event.key == pygame.K_UP and not snake.dirs[ "down"] and can_move: snake.dir = Vector(0, -snake.vel, 0) snake.change_direction("up") can_move = False elif event.key == pygame.K_ESCAPE: switch_state(game, pause_st.pause_state, window, control) elif event.key == pygame.K_b: snake.grow() elif event.type == MOVE: snake.move1() can_move = True if snake.collide(): control["state"] = switch_state(game, states.GAME_OVER) if not no_joystick: if joy.get_button(joy_ctrl["pause"]): switch_state(game, pause_st.pause_state, window, control) if str( joy.get_hat(0) ) == joy_ctrl["left"] and not snake.dirs["right"] and can_move: snake.dir = Vector(-snake.vel, 0, 0) snake.change_direction("left") can_move = False elif str( joy.get_hat(0) ) == joy_ctrl["right"] and not snake.dirs["left"] and can_move: snake.dir = Vector(snake.vel, 0, 0) snake.change_direction("right") can_move = False elif str( joy.get_hat(0) ) == joy_ctrl["up"] and not snake.dirs["down"] and can_move: snake.dir = Vector(0, -snake.vel, 0) snake.change_direction("up") can_move = False elif str( joy.get_hat(0) ) == joy_ctrl["down"] and not snake.dirs["up"] and can_move: snake.dir = Vector(0, snake.vel, 0) snake.change_direction("down") can_move = False window.fill((16, 16, 16)) if snake.eat(food): snake.grow() score += 1 food = food.respawn(39, 29, snake) snake.show(window) food.show(window) window.blit( score_font.render("SCORE: " + str(score), True, (255, 255, 255)), (WIDTH // 2 - 72, 38)) show_fps(window) pygame.display.flip() clock.tick(60) save_best_score(score) if score >= 40: unlock_game(2)
def game_over_state(window, control): flag = True joy_ctrl = read_all_controls() background = pygame.Surface((WIDTH // 2, HEIGHT // 2)) button_font = pygame.font.SysFont("calibri", 45, True) title_text = pygame.font.SysFont("calibri", 60, True).render("Game Over", True, (240, 240, 240)) colors = ((0, 0, 0), (255, 255, 255)) button1 = Button(WIDTH // 2, HEIGHT // 2 - 20, (16, 16, 255), button_font, "RESTART", colors, True).set_offset_pos().set_selected() button2 = Button(WIDTH // 2, HEIGHT // 2 + 35, (16, 16, 255), button_font, "EXIT", colors, True).set_offset_pos() button3 = Button(WIDTH // 2, HEIGHT // 2 + 90, (16, 16, 255), button_font, "QUIT", colors, True).set_offset_pos() buttons = (button1, button2, button3) game_over = Room(buttons, button_sound) if control["game_mode"] == "easy": game_mode = states.GAME_2 elif control["game_mode"] == "hard": game_mode = states.GAME_3 else: game_mode = states.GAME_1 while game_over.run: for event in pygame.event.get(): if event.type == pygame.QUIT: control["state"] = switch_state(game_over, states.QUIT) elif event.type == pygame.KEYDOWN: if event.key == pygame.K_UP: game_over.update_button("up") elif event.key == pygame.K_DOWN: game_over.update_button("down") if game_over.button_pressed() == 0: control["state"] = switch_state(game_over, game_mode) elif game_over.button_pressed() == 1: control["state"] = switch_state(game_over, states.MENU) elif game_over.button_pressed() == 2: control["state"] = switch_state(game_over, states.QUIT) if not no_joystick: if str(joy.get_hat(0)) == joy_ctrl["up"] and flag: game_over.update_button("up") flag = False elif str(joy.get_hat(0)) == joy_ctrl["down"] and flag: game_over.update_button("down") flag = False elif joy.get_hat(0) == (0, 0): flag = True if joy.get_button(joy_ctrl["accept"]): if game_over.button_pressed(True) == 0: control["state"] = switch_state(game_over, game_mode) elif game_over.button_pressed(True) == 1: control["state"] = switch_state(game_over, states.MENU) elif game_over.button_pressed(True) == 2: control["state"] = switch_state(game_over, states.QUIT) window.blit(background, (WIDTH // 4, HEIGHT // 4)) background.fill((16, 16, 216)) window.blit(title_text, (WIDTH // 2 - 140, HEIGHT // 2 - 110)) game_over.show(window, 0, 0) pygame.display.flip() clock.tick(48)
def pause_state(window, control) -> int: flag = True joy_ctrl = read_all_controls() background = pygame.Surface((WIDTH // 2, HEIGHT // 2)) button_font = pygame.font.SysFont("calibri", 50, True) colors = ((0, 0, 0), (255, 255, 255)) button1 = Button(WIDTH // 2, HEIGHT // 2 - 110, (16, 16, 255), button_font, "RESUME", colors, True).set_offset_pos().set_selected() button2 = Button(WIDTH // 2, HEIGHT // 2 - 50, (16, 16, 255), button_font, "RESTART", colors, True).set_offset_pos() button3 = Button(WIDTH // 2, HEIGHT // 2 + 10, (16, 16, 255), button_font, "EXIT", colors, True).set_offset_pos() button4 = Button(WIDTH // 2, HEIGHT // 2 + 70, (16, 16, 255), button_font, "QUIT", colors, True).set_offset_pos() buttons = (button1, button2, button3, button4) pause = Room(buttons, button_sound) q = 0 if control["game_mode"] == "easy": game_mode = states.GAME_2 elif control["game_mode"] == "hard": game_mode = states.GAME_3 else: game_mode = states.GAME_1 while pause.run: for event in pygame.event.get(): if event.type == pygame.QUIT: control["state"] = switch_state(pause, states.QUIT) q = 1 elif event.type == pygame.KEYDOWN: if event.key == pygame.K_UP: pause.update_button("up") elif event.key == pygame.K_DOWN: pause.update_button("down") if pause.button_pressed() == 0: pause.exit() elif pause.button_pressed() == 1: control["state"] = switch_state(pause, game_mode) q = 1 elif pause.button_pressed() == 2: control["state"] = switch_state(pause, states.MENU) q = 1 elif pause.button_pressed() == 3: control["state"] = switch_state(pause, states.QUIT) q = 1 if not no_joystick: if str(joy.get_hat(0)) == joy_ctrl["up"] and flag: pause.update_button("up") flag = False elif str(joy.get_hat(0)) == joy_ctrl["down"] and flag: pause.update_button("down") flag = False if joy.get_hat(0) == (0, 0): flag = True if joy.get_button(joy_ctrl["accept"]): if pause.button_pressed(True) == 0: pause.exit() elif pause.button_pressed(True) == 1: control["state"] = switch_state(pause, game_mode) q = 1 elif pause.button_pressed(True) == 2: control["state"] = switch_state(pause, states.MENU) q = 1 elif pause.button_pressed(True) == 3: control["state"] = switch_state(pause, states.QUIT) q = 1 window.blit(background, (WIDTH // 4, HEIGHT // 4)) background.fill((16, 16, 216)) pause.show(window, 0, 0) pygame.display.flip() clock.tick(48) return q
def setUp(self): self.room = Room() self.room.id = 0 self.id_manager = IdManager()
class GeneralTestCase(unittest.TestCase): def setUp(self): self.room = Room() self.room.id = 0 self.id_manager = IdManager() def test_remove_from_empty_room(self): self.assertFalse(self.room.remove_user(3)) def test_add_user(self): user_a = User() user_a.id = self.id_manager.get_id() user_a.name = 'user_a' self.assertTrue(self.room.add_user(user_a)) self.assertEqual(user_a, self.room.users[0]) def test_add_too_much_users(self): user_a = User() user_b = User() user_c = User() user_d = User() user_e = User() should_be = [user_a, user_b, user_c, user_d] self.assertTrue(self.room.add_user(user_a)) self.assertTrue(self.room.add_user(user_b)) self.assertTrue(self.room.add_user(user_c)) self.assertTrue(self.room.add_user(user_d)) self.assertFalse(self.room.add_user(user_e)) self.assertNotIn(user_e, self.room.users) self.assertEqual(self.room.users, should_be) def test_serialization(self): user_a = User() user_a.id = self.id_manager.get_id() user_a.name = 'user_a' user_b = User() user_b.id = self.id_manager.get_id() user_b.name = 'user_b' user_names = ['user_a', 'user_b'] self.assertTrue(self.room.add_user(user_a)) self.assertTrue(self.room.add_user(user_b)) serialized = self.room.serialize(only_usernames=True) self.assertEqual(serialized['users'], user_names) self.assertEqual(serialized['id'], 0) self.assertFalse(serialized['inGame']) serialized = self.room.serialize(only_usernames=False) self.assertEqual('user_a', serialized['users'][0]['name']) self.assertEqual(0, serialized['users'][0]['id']) self.assertEqual('user_b', serialized['users'][1]['name']) self.assertEqual(1, serialized['users'][1]['id'])
def start(): # load global command list load_global_command_list() # print(global_command_list) #load players print("Loading players...") load_all_players(players) print("Converting players to objects...") for player in players: players[player] = Player(**players[player]) # for i in players: # print(i, pprint(vars(players[i]))) # load rooms print("") print("Loading rooms...") load_all_rooms(rooms) print("Converting rooms to objects...") for room in rooms: rooms[room] = Room(**rooms[room]) # for i in rooms: # pprint(vars(rooms[i])) # load items print("") print("Loading items...") load_all_items(items) print("Converting items to objects...") class_dict = { "Item": Item, "TacSuit": TacSuit, "Ship": Ship, "Gun": Gun, "Pistol": Pistol, "Pistol_9mm": Pistol_9mm, "Assault_Rifle": Assault_Rifle, "Assault_Rifle_Energy": Assault_Rifle_Energy } for i in items: instance_class = class_dict[items[i]['join_table']['class']] items[i] = instance_class(**items[i]) # load npcs print("") print("Loading npcs...") load_all_npcs(npcs) # print("items before:", items) print("Converting npcs to objects...") for npc in npcs: npcs[npc] = Npc(**npcs[npc]) print("") print("Putting items in rooms and other items...") if items: print("Items...") for i in items: # pprint(items[i]) for x in items: # pprint(vars(items[x])) if items[i].location == items[x].uuid_id: print(" Putting item:", items[i].name, "in item:", items[items[i].location].name) items[items[i].location].item_inv.append(items[i]) print("Rooms...") for i in items: # pprint(vars(items[i])) for y in rooms: if items[i].location == rooms[y].uuid_id: print(" Putting item:", items[i].name, "in room:", rooms[items[i].location].name) rooms[items[i].location].item_inv.append(items[i]) print("Players...") for i in items: for z in players: if items[i].location == players[z].uuid_id: print(" Putting item:", items[i].name, "in player:", players[items[i].location].name) # print(players[z]) # print(items[i]) players[z].inventory[items[i].location_body['location']][ 'contents'] = items[i] print("NPCs...") for i in items: for a in npcs: if items[i].location == npcs[a].uuid_id: print(" Putting item:", items[i].name, "in npc:", npcs[items[i].location].name) npcs[a].inventory['r_hand']['contents'] = items[i] if npcs: print("Adding NPCs to rooms...") for i in npcs: # pprint(vars(npcs[i])) for a in rooms: if npcs[i].location == rooms[a].uuid_id: print(" Putting npc:", npcs[i].name, "in room:", rooms[npcs[i].location].name) rooms[a].npc_inv.append(npcs[i]) print("Done.") MainLoop.main_loop_all()
def ask_clear_state(window, control) -> int: flag = True flag2 = False joy_ctrl = read_all_controls() dark = pygame.Surface((WIDTH, HEIGHT), pygame.SRCALPHA) dark.fill((0, 0, 0, 96)) window.blit(dark, (0, 0)) background = pygame.Surface((WIDTH // 2 - 150, HEIGHT // 2 - 150)) button_font = pygame.font.SysFont("calibri", 41, True) colors = ((0, 0, 0), (255, 255, 255)) button1 = Button(WIDTH // 2, HEIGHT // 2 - 40, (16, 16, 255), button_font, "COMMIT", colors, True).set_offset_pos().set_selected() button2 = Button(WIDTH // 2, HEIGHT // 2 + 10, (16, 16, 255), button_font, "CANCEL", colors, True).set_offset_pos() buttons = (button1, button2) ask_clear = Room(buttons, button_sound) q = 0 while ask_clear.run: for event in pygame.event.get(): if event.type == pygame.QUIT: control["state"] = switch_state(ask_clear, states.QUIT) q = 1 elif event.type == pygame.KEYDOWN: if event.key == pygame.K_UP: ask_clear.update_button("up") elif event.key == pygame.K_DOWN: ask_clear.update_button("down") if ask_clear.button_pressed() == 0: clear_data() ask_clear.exit() elif ask_clear.button_pressed() == 1: ask_clear.exit() if not no_joystick: if str(joy.get_hat(0)) == joy_ctrl["up"] and flag: ask_clear.update_button("up") flag = False elif str(joy.get_hat(0)) == joy_ctrl["down"] and flag: ask_clear.update_button("down") flag = False if joy.get_hat(0) == (0, 0): flag = True if joy.get_button(joy_ctrl["accept"]) and flag2: flag2 = False if ask_clear.button_pressed(True) == 0: clear_data() ask_clear.exit() elif ask_clear.button_pressed(True) == 1: ask_clear.exit() elif not joy.get_button(joy_ctrl["accept"]): flag2 = True window.blit(background, (WIDTH // 4 + 75, HEIGHT // 4 + 75)) background.fill((16, 16, 216)) ask_clear.show(window, 0, 0) pygame.display.flip() clock.tick(48) return q
import logging import random from engine import dice from engine.event import Event as _Event from engine.globals import G from engine.room import Room as _Room from engine import say # TODO: Devise a way to load rooms (and maybe events?) from a config file. # TODO: Create "locations" within each room to find items in, for enemies to # hang out in, etc. _CathedralPews = _Room.create_room_type( "CathedralPews", "You are in the pews of a maddening cathedral. The benches stretch on " "all sides and seem to creep up the walls. A murmuring sound suggests " "either wind or the prayers of an unseen petitioner.", themes=["cathedral"], ) _CathedralCatacombs = _Room.create_room_type( "CathedralCatacombs", "You descend slick stairs into catacombs. Time-smooth placards adorn " "niches. The thick air smells of stone and moisture.", themes=["cathedral"], ) _CathedralLibrary = _Room.create_room_type( "CathedralLibrary", "A crumbling library. Tomes of thick vellum stand open on tables. The " "chairs are askew. Distant laughter can be heard.", themes=["cathedral"], )