def __init__(self, monster_id, x, y, type): self.id = monster_id self.type = type self.width = 40 self.height = 40 self.speed = 50 self.next_bullet_id = 0 self.sprites = [] self.load_sprite() self.collider = physics.PhysObject(Vec2(x, y), Polygon.square(x, y, self.width, self.height), self, collision_type=physics.collision_types.dynamic)
def __init__(self, dir, nextX, nextY, pastX, pastY): self.toX = nextX self.toY = nextY self.fromX = pastX self.fromY = pastY self.dir = dir leftX = 32 midX = graphics.view.GAME_WIDTH / 2 rightX = graphics.view.GAME_WIDTH - 32 topY = 32 midY = graphics.view.WINDOW_SIZE[1] / 2 botY = graphics.view.WINDOW_SIZE[1] - 32 if dir == 0: self.collider = physics.PhysObject( Vec2(midX, topY), Polygon.square(midX, topY, 64, 64), self, collision_type=physics.collision_types.trigger) elif dir == 1: self.collider = physics.PhysObject( Vec2(rightX, midY), Polygon.square(rightX, midY, 64, 64), self, collision_type=physics.collision_types.trigger) elif dir == 2: self.collider = physics.PhysObject( Vec2(midX, botY), Polygon.square(midX, botY, 64, 64), self, collision_type=physics.collision_types.trigger) elif dir == 3: self.collider = physics.PhysObject( Vec2(leftX, midY), Polygon.square(leftX, midY, 64, 64), self, collision_type=physics.collision_types.trigger) self.speed = 0 self.width = 64 self.height = 64 self.sprite = None self.loadSprite(dir)
def __init__(self): self.collider = physics.PhysObject( Vec2(300, 300), Polygon.square(300, 300, 16, 16), self, collision_type=physics.collision_types.trigger) self.width = 64 self.height = 64 self.speed = 0 self.collider.add_callback(self.onCollide) self.collider.vel.x = 0 self.collider.vel.y = 0 self.sprite = None self.loadSprite()
def __init__(self, bullet_id, x, y, direction_x, direction_y): print("shooting") self.direction_x = direction_x self.direction_y = direction_y self.id = bullet_id self.speed = 80 self.collider = physics.PhysObject( Vec2(x + direction_x * 5, y + direction_y * 5), Polygon.square(x + direction_x * 5, y + direction_y * 5, 10, 10), self, collision_type=physics.collision_types.player) self.collider.add_callback(self.onCollide) self.collider.vel.x = direction_x * self.speed self.collider.vel.y = direction_y * self.speed self.load_sprite() self.alive = True
def __init__(self, player_id, x, y): self.collider = physics.PhysObject( Vec2(x, y), Polygon.square(x, y, 30, 45), self, collision_type=physics.collision_types.player) self.collider.add_callback(self.onDoor) self.collider.add_callback(self.onEnemy) self.maxHealth = 500 self.currHealth = 500 self.lastMeleeHit = 0 self.width = 66 self.height = 93 self.speed = 200 self.id = player_id self.next_bullet_id = 0 self.sprite = None self.roomX = -1 self.roomY = -1 self.load_sprite()
def main(): if len(sys.argv) < 3: print("Please provide player file name and player id") sys.exit(1) my_player_id = None players_str = None with open(sys.argv[1], "r") as player_file: my_player_id = int(sys.argv[2]) players_str = player_file.read() player_adds = players_str.split() num_players = len(player_adds) messaging = MessagingHandler() messaging.connect(player_adds, num_players, my_player_id) graphics.view.initView() running = True col = Color(123, 123, 123) players = [] for i in range(num_players): players.append(Player(i, 50 * i, 50)) sim = physics.Simulation() dg = graphics.view.sprite_factory.from_file("./assets/dungeon.png") r = dg.rect wall = physics.PhysObject(physics.Vec2(300, 300), physics.Polygon.square(300, 300, 200, 200)) player = players[0] sim.add_object(player.collider) player.collider.collision_type = physics.collision_types.dynamic sim.add_object(wall) while running == True: input_events = sdl2.ext.get_events() game_events = [] for event in input_events: if event.type == sdl2.SDL_QUIT: running = False break else: if not ControlsState.should_process_input_event(event): continue ControlsState.update_state(event) player_event = players[my_player_id].processInputEvent(event) if player_event.params["code"] == "NONE": continue game_events.append(player_event) messaging.broadcast(player_event.serialize().encode("utf-8")) messages = messaging.get_messages() while messages.qsize() > 0: msg = messages.get() game_events.append(GameEvent.deserialize(msg.decode("utf-8"))) for event in game_events: if (event.params["type"] == "PLAYER"): players[event.params["player_id"]].processPlayerEvent(event) #for player in players: # player.update() sim.step(16 / 1000) graphics.view.raw_renderer.clear(col) #graphics.view.sprite_renderer.draw_sprite(dg, wall.pos.x, wall.pos.y) for player in players: player.render(graphics.view.sprite_renderer) graphics.view.sprite_renderer.draw_collision_boxes(sim) graphics.view.raw_renderer.present() graphics.view.window.refresh() sdl2.SDL_Delay(16)