/
sound.py
153 lines (126 loc) · 4.6 KB
/
sound.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
150
151
152
153
import pygame as pg
from time import sleep
from loader import get_resource_path
class Sound:
def __init__(self):
self.state = "starting"
pg.mixer.init()
self.idle_sound = pg.mixer.Sound(get_resource_path("sounds/idle.mp3"))
self.brake_sound = pg.mixer.Sound(get_resource_path("sounds/brake.mp3"))
self.top_sound = pg.mixer.Sound(get_resource_path("sounds/top_speed.mp3"))
self.crash_sound = pg.mixer.Sound(get_resource_path("sounds/crash.mp3"))
self.scratch_sound = pg.mixer.Sound(get_resource_path("sounds/scratch.wav"))
self.finish_sound = pg.mixer.Sound(get_resource_path("sounds/finish.wav"))
def stop_sound(self):
try:
if self.state == "idle":
self.idle_sound.stop()
elif self.state == "accelerate" or self.state == "decelerate":
pg.mixer.music.stop()
elif self.state == "top":
self.top_sound.stop()
elif self.state == "brake":
self.brake_sound.stop()
elif self.state == "crash":
self.crash_sound.stop()
pg.mixer.pause()
except:
pass
def play_idle(self):
state_changed = False
if self.state == "starting":
state_changed = True
elif self.state == "accelerate" or self.state == "decelerate":
pg.mixer.music.stop()
state_changed = True
elif self.state == "brake":
self.brake_sound.stop()
state_changed = True
elif self.state == "crash":
self.state_change = True
if state_changed:
self.state = "idle"
self.idle_sound.play(100000)
def play_accelerate(self, position):
state_changed = False
if self.state == "idle":
self.idle_sound.stop()
state_changed = True
elif self.state == "decelerate":
pg.mixer.music.stop()
state_changed = True
elif self.state == "brake":
self.brake_sound.stop()
state_changed = True
elif self.state == "crash":
state_changed = True
if state_changed:
self.state = "accelerate"
pg.mixer.music.load(get_resource_path("sounds/accelerate.mp3"))
pg.mixer.music.play(0, position * 10)
def stop_accelerate(self):
if self.state == "accelerate":
pg.mixer.music.stop()
def play_decelerate(self, position):
state_changed = False
if self.state == "accelerate":
pg.mixer.music.stop()
state_changed = True
elif self.state == "brake":
self.brake_sound.stop()
state_changed = True
elif self.state == "top":
self.top_sound.stop()
state_changed = True
if state_changed:
self.state = "decelerate"
pg.mixer.music.load(get_resource_path("sounds/decelerate.mp3"))
pg.mixer.music.play(0, position * 10)
def play_brake(self):
state_changed = False
if self.state == "accelerate" or self.state == "decelerate":
pg.mixer.music.stop()
state_changed = True
if self.state == "top":
self.top_sound.stop()
state_changed = True
if state_changed:
self.state = "brake"
self.brake_sound.play()
def play_top(self):
state_changed = False
if self.state == "accelerate":
pg.mixer.music.stop()
state_changed = True
if state_changed:
self.state = "top"
self.top_sound.play(100000)
def play_crash(self):
state_changed = False
if self.state == "idle":
self.idle_sound.stop()
state_changed = True
elif self.state == "brake":
self.brake_sound.stop()
state_changed = True
elif self.state == "top":
self.top_sound.stop()
state_changed = True
elif self.state == "accelerate" or self.state == "decelerate":
pg.mixer.music.stop()
state_changed = True
if state_changed:
self.state = "crash"
self.crash_sound.play()
def play_scratch(self):
pass
def play_finish(self):
pg.mixer.music.stop()
if self.state == "idle":
self.idle_sound.stop()
elif self.state == "brake":
self.brake_sound.stop()
elif self.state == "top":
self.top_sound.stop()
self.finish_sound.play()
sleep(1)