mirror of
https://github.com/EDeev/pixel_gamble.git
synced 2026-06-15 19:11:02 +03:00
44 lines
1.6 KiB
Python
44 lines
1.6 KiB
Python
import pygame
|
|
from math import sin
|
|
|
|
|
|
class Entity(pygame.sprite.Sprite):
|
|
def __init__(self, groups):
|
|
super().__init__(groups)
|
|
self.frame_index = 0
|
|
self.animation_speed = 0.15
|
|
self.direction = pygame.math.Vector2()
|
|
|
|
def move(self, speed):
|
|
if self.direction.magnitude() != 0:
|
|
self.direction = self.direction.normalize()
|
|
|
|
self.hitbox.x += self.direction.x * speed
|
|
self.collision('horizontal')
|
|
self.hitbox.y += self.direction.y * speed
|
|
self.collision('vertical')
|
|
self.rect.center = self.hitbox.center
|
|
|
|
def collision(self, direction):
|
|
if direction == 'horizontal':
|
|
for sprite in self.obstacle_sprites:
|
|
if sprite.hitbox.colliderect(self.hitbox):
|
|
if self.direction.x > 0: # moving right
|
|
self.hitbox.right = sprite.hitbox.left
|
|
if self.direction.x < 0: # moving left
|
|
self.hitbox.left = sprite.hitbox.right
|
|
|
|
if direction == 'vertical':
|
|
for sprite in self.obstacle_sprites:
|
|
if sprite.hitbox.colliderect(self.hitbox):
|
|
if self.direction.y > 0: # moving down
|
|
self.hitbox.bottom = sprite.hitbox.top
|
|
if self.direction.y < 0: # moving up
|
|
self.hitbox.top = sprite.hitbox.bottom
|
|
|
|
def wave_value(self):
|
|
value = sin(pygame.time.get_ticks())
|
|
if value >= 0:
|
|
return 255
|
|
else:
|
|
return 0
|