-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsprite_utilities.py
149 lines (131 loc) · 5.66 KB
/
sprite_utilities.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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
from enum import IntEnum
from math import pow
import pygame as pg
import constants as const
class Sprite_features():
def __init__(self, sprite_features, screen_width=const.WIDTH,
screen_height=const.HEIGHT, is_player=False):
self.forward \
= pg.image.load(sprite_features['forward']).convert_alpha()
new_mob_size = (tuple(i*j for i, j in \
zip(self.forward.get_size(),
(screen_width/const.WIDTH,
screen_height/const.HEIGHT))))
self.forward = pg.transform.scale(self.forward, new_mob_size)
self.right = pg.transform.rotate(self.forward, -20)
self.left = pg.transform.rotate(self.forward, 20)
self.back \
= pg.transform.scale( \
pg.image.load(sprite_features['back']).convert_alpha(),
new_mob_size)
self.bullet \
= pg.image.load(sprite_features['bullet']).convert_alpha()
self.bullet \
= pg.transform.scale(self.bullet,
tuple(i*j for i,j in \
zip(self.bullet.get_size(),
(screen_width/const.WIDTH,
screen_height/const.HEIGHT))))
self.shoot_sound = pg.mixer.Sound(sprite_features['shoot_sound'])
self.dead_sound = pg.mixer.Sound(sprite_features['dead_sound'])
self.hurt_sound = pg.mixer.Sound(sprite_features['hurt_sound'])
self.mov_speed \
= sprite_features['speed'] \
*pow((screen_height*screen_width)/(const.WIDTH*const.HEIGHT),
0.5)
self.bullet_speed \
= sprite_features['bullet_speed'] \
*pow((screen_height*screen_width)/(const.WIDTH*const.HEIGHT),
0.5)
self.health = sprite_features['health']
if is_player:
self.disappear = pg.transform.scale( \
pg.image.load(sprite_features['disappear']).convert_alpha(),
new_mob_size)
self.forward_button = sprite_features['forward_button']
self.right_button = sprite_features['right_button']
self.left_button = sprite_features['left_button']
self.back_button = sprite_features['back_button']
self.shoot_button = sprite_features['shoot_button']
else:
self.bullet = pg.transform.rotate(self.bullet, 180)
class ShootModes(IntEnum):
DEFAULT = 1
TRIPLE_SHOT = 2
PENTA_SHOT = 3
SEVEN_SHOT = 4
def play_sound(sound, volume=100):
sound.set_volume(volume/100)
pg.mixer.find_channel(True).play(sound)
cursor_features = {
'cursor_inactive':'./images/cursor_inactive.png',
'cursor_active':'./images/cursor_active.png',
'cursor_click_sound':'./sounds/cursor_click.ogg'
}
mob_features = {
'forward':'./images/mob_forward.png',
'back':'./images/mob_back.png',
'bullet':'./images/rocket.png',
'shoot_sound':'./sounds/mob_shoot_sound.wav',
'dead_sound':'./sounds/mob_dead_sound.wav',
'hurt_sound':'./sounds/mob_hurt_sound.wav',
'health':const.DEFAULT_MOB_HEALTH,
'speed':const.DEFAULT_MOB_MOV_SPEED,
'bullet_speed':const.DEFAULT_MOB_BULLET_MOV_SPEED
}
player_one_features = {
'forward':'./images/player_one_forward.png',
'back':'./images/player_one_back.png',
'bullet':'./images/rocket.png',
'disappear':'./images/disappear.png',
'shoot_sound':'./sounds/player_shoot_sound.wav',
'dead_sound':'./sounds/player_dead_sound.wav',
'hurt_sound':'./sounds/player_hurt_sound.wav',
'health':const.DEFAULT_PLAYER_HEALTH,
'speed':const.DEFAULT_PLAYER_MOV_SPEED,
'bullet_speed':const.DEFAULT_PLAYER_BULLET_MOV_SPEED,
'forward_button':const.DEFAULT_PLAYER_ONE_UP_BUTTON,
'right_button':const.DEFAULT_PLAYER_ONE_RIGHT_BUTTON,
'left_button':const.DEFAULT_PLAYER_ONE_LEFT_BUTTON,
'back_button':const.DEFAULT_PLAYER_ONE_DOWN_BUTTON,
'shoot_button':const.DEFAULT_PLAYER_ONE_SHOOT_BUTTON
}
player_two_features = {
'forward':'./images/player_two_forward.png',
'back':'./images/player_two_back.png',
'bullet':'./images/rocket.png',
'disappear':'./images/disappear.png',
'shoot_sound':'./sounds/player_shoot_sound.wav',
'dead_sound':'./sounds/player_dead_sound.wav',
'hurt_sound':'./sounds/player_hurt_sound.wav',
'health':const.DEFAULT_PLAYER_HEALTH,
'speed':const.DEFAULT_PLAYER_MOV_SPEED,
'bullet_speed':const.DEFAULT_PLAYER_BULLET_MOV_SPEED,
'forward_button':const.DEFAULT_PLAYER_TWO_UP_BUTTON,
'right_button':const.DEFAULT_PLAYER_TWO_RIGHT_BUTTON,
'left_button':const.DEFAULT_PLAYER_TWO_LEFT_BUTTON,
'back_button':const.DEFAULT_PLAYER_TWO_DOWN_BUTTON,
'shoot_button':const.DEFAULT_PLAYER_TWO_SHOOT_BUTTON
}
bonus_textures = {
'heal_bonus':['./images/heal_bonus.png'],
'bullet_bonus':['./images/power_up/1.png',
'./images/power_up/2.png'],
'delay_bonus':['./images/power_up/3.png',
'./images/power_up/4.png']
}
bonus_sound = './sounds/bonus_sound.mp3'
bullet_angles = {
'left_1':30,
'left_2':20,
'left_3':10,
'right_1':-30,
'right_2':-20,
'right_3':-10,
'forward':0
}
explosion_animation = ['./images/explosion/1.png',
'./images/explosion/2.png',
'./images/explosion/3.png',
'./images/explosion/4.png',
'./images/explosion/5.png']