-
Notifications
You must be signed in to change notification settings - Fork 0
/
asteroid.py
56 lines (50 loc) · 1.4 KB
/
asteroid.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import pygame
import random
from game_object import GameObject
class Asteroid(GameObject):
def __init__(self, size):
self.size = size
if size == 3:
image = "asteroid_big.png"
elif size == 2:
image = "asteroid_small.png"
else:
image = "asteroid_tiny.png"
side = random.randrange(4)
if side == 0:
y = 0
x =random.randrange(600)
vx = random.uniform(-1.0, 1.0)
vy = random.uniform(0.1, 1.0)
elif side == 1:
x = 600
y = random.randrange(600)
vx = random.uniform(-1.0, -0.1)
vy = random.uniform(-1.0, 1.0)
elif side == 2:
x = random.randrange(600)
y = 600
vx = random.uniform(-1.0, 1.0)
vy = random.uniform(-1.0, -0.1)
else:
x = 0
y = random.randrange(600)
vx = random.uniform(0.1, 1.0)
vy = random.uniform(-1.0, 1.0)
super().__init__(image, x, y, vx, vy)
self.unrotated_surface = self.surface
self.rotation_speed = random.randint(-1, 1)
self.angle = random.randint(0, 359)
def update(self, delta_time):
self.angle = self.clamp_angle(self.angle + self.rotation_speed)
self.surface = pygame.transform.rotate(self.unrotated_surface, self.angle)
new_rect = self.surface.get_rect()
new_rect.center = self.rect.center
self.rect = new_rect
super().update(delta_time)
def clamp_angle(self, angle):
while angle >= 360:
angle -= 360
while angle < 0:
angle += 360
return angle