Ejemplo n.º 1
0
    def movement_controls(self, pressed, tilemap):
        if pressed[A]:
            self.rotation += 2
            self.rotate_vehicle(358)
            collision_result = collision_check(self, tilemap, Vec2d(0,0))
            if collision_result.collisions:
                self.rotation -= 2
                self.rotate_vehicle(2)   
        if pressed[D]:
            self.rotation -= 2
            self.rotate_vehicle(2)
            collision_result = collision_check(self, tilemap, Vec2d(0,0))
            if collision_result.collisions:
                self.rotation += 2
                self.rotate_vehicle(358)

        if pressed[W] and abs(self.speed) < self.top_speed:
            self.speed += self.acceleration
        if pressed[S] and abs(self.speed) < self.top_speed:
            self.speed -= self.acceleration

        if not pressed[W] and not pressed[S] and self.speed != 0:
            if abs(self.speed) < abs(self.acceleration):
                self.speed = 0
            else:
                self.speed -= math.copysign(self.acceleration, self.speed)
        if pressed[A] or pressed[D]:
            self.image = transform.rotate(self.base_image, self.rotation)
            self.rect = self.image.get_rect()
Ejemplo n.º 2
0
 def update(self, pressed, time_delta, tilemap):
     direction = Vec2d(math.sin(math.radians(self.rotation)), 
                         math.cos(math.radians(self.rotation)))
     direction.length = self.speed
     predicted_collision_result = collision_check(self, tilemap, direction)
     collision_result = collision_check(self, tilemap, Vec2d(0,0))
     self.result = collision_result
     self.movement_controls(pressed, tilemap)
     if predicted_collision_result.collisions and not self.speed == 0:
         self.collision_points = collision_result.collisions
         if collision_result.collisions:
             self.speed = - self.speed * time_delta * 2
         else:
             self.collision_reactor(predicted_collision_result.collision_lines[0])
         self.update_position(time_delta)
     else:
         self.update_position(time_delta)
     self.items_layer.update(Vec2d(self.rect.center[0] - tilemap.viewport[0],
                                  self.rect.center[1] - tilemap.viewport[1]), self)
Ejemplo n.º 3
0
 def update(self, pressed, time_delta, tilemap):
     if self.kill_in_the_next_frame or not self.life:
         self.kill()
     self.direction.length = self.speed
     self.position += self.direction
     self.rect.center = self.position
     self.life -= 1
     predicted_collision_result = collision_check(self, tilemap, self.direction)
     bullet_collisions = predicted_collision_result
     if bullet_collisions.collisions:
         self.rect.center = predicted_collision_result.collisions[0]
         predicted_collision_result
         self.kill_in_the_next_frame = True
         if bullet_collisions.collided_objects[0].cell.health > 0:
             if bullet_collisions.collided_objects[0].cell.health > 2: 
                 bullet_collisions.collided_objects[0].cell.health -= 2
             else:
                 bullet_collisions.collided_objects[0].cell.health = 0