Exemple #1
0
 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)
Exemple #2
0
 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)
Exemple #3
0
 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()
Exemple #4
0
 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
Exemple #5
0
 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)