Skip to content

Commit 949435e

Browse files
committed
4/6 boosters work, only turning left
1 parent 8fc2737 commit 949435e

File tree

7 files changed

+87
-33
lines changed

7 files changed

+87
-33
lines changed

booster.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ def __init__(self, position: Vector2D, change: int, type: BoosterType, dt): #cha
1717

1818
self.type = type
1919
self.int_booster_value = change
20-
self.duration = 3
20+
self.duration = 80
2121

2222
self.dt = dt #refresh rate -> to use in car
2323

@@ -26,23 +26,23 @@ def __init__(self, position: Vector2D, change: int, type: BoosterType, dt): #cha
2626

2727
def activate(self, car: Car, stopwatch: Stopwatch):
2828
if self.type == BoosterType.SPEED:
29-
pass
30-
#car.speed += self.int_booster_value
31-
#car.speed -= self.int_booster_value -> idea for implementing duration is needed!
29+
car.boosters["speed"] = [self.int_booster_value, pg.time.get_ticks() * self.duration]
30+
print("SP activated ->", car.boosters)
3231

3332
elif self.type == BoosterType.TURNING: #turning is smoother/faster or slower
3433
pass
3534

3635
elif self.type == BoosterType.NO_COLLISIONS: #the car is "transparent"
37-
#car.transparent = True
38-
pass
36+
car.boosters["transparent"] = [True, pg.time.get_ticks() * self.duration]
37+
print("NW activated ->", car.boosters)
3938

4039
elif self.type == BoosterType.DECREASE_TIMER: #the time of the lap is decreased
4140
stopwatch.decrease_timer(4000)
4241

4342
elif self.type == BoosterType.FREEZE:
44-
#car.speed = 0
45-
pass
43+
car.boosters["freeze"] = [True, pg.time.get_ticks() * self.duration]
44+
print("FR activated ->", car.boosters)
45+
4646

4747
else: #BoosterType.NO_TURNING -> self descriptive
4848
pass

car.py

Lines changed: 22 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -25,25 +25,31 @@ def __init__(self, id, position, speed, direction, rotation, engine, name, curr_
2525
self.map = curr_map
2626

2727
#dict of all boosters instead of this
28-
self.transparent = False
28+
self.boosters = {"transparent": [False, 0], "speed": [0, 0], "noTurning": [False, 0],
29+
"turning": [0, 0], "freeze": [False, 0]}
2930

3031
self.mask = pg.mask.from_surface(self.image)
3132

3233
def update(self, dt):
33-
collision_test_result = self.map.handle_collision_with_walls(self)
34+
self.map.handle_boosters(self)
3435

35-
if not collision_test_result:
36-
self.position.add(self.speed * cos(radians(self.direction)), self.speed * sin(radians(self.direction)))
36+
if self.boosters["freeze"][0]:
37+
self.speed = 0
3738
else:
38-
if self.speed > 0:
39-
self.position.subtract((self.speed + 4) * cos(radians(self.direction)), (self.speed + 4) * sin(radians(self.direction)))
39+
collision_test_result = self.map.handle_collision_with_walls(self)
40+
41+
if not collision_test_result:
42+
self.position.add(self.speed * cos(radians(self.direction)), self.speed * sin(radians(self.direction)))
4043
else:
41-
self.position.add((self.speed + 2) * cos(radians(self.direction)), (self.speed + 2) * sin(radians(self.direction)))
44+
if self.speed + self.boosters["speed"][0] > 0:
45+
self.position.subtract((self.speed + self.boosters["speed"][0] + 4) * cos(radians(self.direction)), (self.speed + self.boosters["speed"][0] + 4) * sin(radians(self.direction)))
46+
else:
47+
self.position.add((self.speed + self.boosters["speed"][0] + 2) * cos(radians(self.direction)), (self.speed + self.boosters["speed"][0] + 2) * sin(radians(self.direction)))
4248

43-
self.speed = -self.speed * 0.15
49+
self.speed = -(self.speed + self.boosters["speed"][0]) * 0.15
4450

45-
new_traction = self.map.handle_collision_with_sufraces(self)
46-
self.map.handle_collision_with_boosters(self)
51+
new_traction = self.map.handle_collision_with_sufraces(self)
52+
self.map.handle_collision_with_boosters(self)
4753

4854
self.rect = self.image.get_rect()
4955
self.rect.x, self.rect.y = self.position.x, self.position.y
@@ -65,17 +71,13 @@ def move(self, dt):
6571

6672
if self.speed > 0:
6773
#print(self.speed, self.speed * (0.1 + self.speed * 0.01))
68-
self.speed -= self.speed * (0.1 + self.speed * 0.01) # v drogi i v*v powietrza //static variables -NEEDED!
74+
self.speed -= (self.speed + self.boosters["speed"][0]) * (0.1 + (self.speed + self.boosters["speed"][0]) * 0.01) # v drogi i v*v powietrza //static variables -NEEDED!
6975
elif self.speed < 0:
70-
self.speed += self.speed * (0.03 + self.speed * 0.05) # v drogi i v*v powietrza
71-
72-
73-
# def collision(self, wall):
74-
# self.direction += 180 - abs(self.direction - wall.get_facing)
76+
self.speed += (self.speed + self.boosters["speed"][0]) * (0.03 + (self.speed + self.boosters["speed"][0]) * 0.05) # v drogi i v*v powietrza
7577

7678
def rotate_left(self, dt):
7779
if self.speed != 0:
78-
self.direction = (self.direction - 6 * self.speed * self.rotation / (dt ** 2)) % 360
80+
self.direction = (self.direction - 6 * (self.speed + self.boosters["speed"][0]) * self.rotation / (dt ** 2)) % 360
7981

8082
if self.direction < 0:
8183
self.direction += 360
@@ -87,7 +89,7 @@ def rotate_left(self, dt):
8789

8890
def rotate_right(self, dt):
8991
if self.speed != 0:
90-
self.direction = (self.direction + 6 * self.speed * self.rotation / (dt ** 2)) % 360
92+
self.direction = (self.direction + 6 * (self.speed + self.boosters["speed"][0]) * self.rotation / (dt ** 2)) % 360
9193
if self.direction > 360:
9294
self.direction -= 360
9395

@@ -105,3 +107,5 @@ def decelerate(self, dt):
105107
self.speed -= self.engine / (2 * dt)
106108

107109

110+
111+

data/Records.csv

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -919,4 +919,41 @@ supra_new,map1,10728,Player 1
919919
supra_new,map1,9680,Player 1
920920
supra_new,map1,26280,Player 1
921921
supra_new,map1,4151,Player 1
922-
supra_new,map1,9661,Player 1
922+
supra_new,map1,9661,Player 1
923+
ferrari458,map1,14930,Player 1
924+
ferrari458,map1,16020,Player 1
925+
ferrari458,map1,8048,Player 1
926+
formula1,map1,8808,Player 1
927+
formula1,map1,13420,Player 1
928+
formula1,map1,8355,Player 1
929+
formula1,map1,4140,Player 1
930+
formula1,map1,8119,Player 1
931+
formula1,map1,8133,Player 1
932+
supra_new,map1,11514,Player 1
933+
supra_new,map1,10022,Player 1
934+
supra_new,map1,17739,Player 1
935+
supra_new,map1,34358,Player 1
936+
supra_new,map1,10549,Player 1
937+
supra_new,map1,30385,Player 1
938+
supra_new,map1,18033,Player 1
939+
supra_new,map1,15733,Player 1
940+
supra_new,map1,3814,Player 1
941+
supra_new,map1,4049,Player 1
942+
supra_new,map1,8017,Player 1
943+
supra_new,map1,4298,Player 1
944+
supra_new,map1,7755,Player 1
945+
supra_new,map1,17865,Player 1
946+
supra_new,map1,12920,Player 1
947+
supra_new,map1,11506,Player 1
948+
supra_new,map1,17874,Player 1
949+
supra_new,map1,10721,Player 1
950+
supra_new,map1,8107,Player 1
951+
supra_new,map1,15132,Player 1
952+
supra_new,map1,8093,Player 1
953+
supra_new,map1,8292,Player 1
954+
supra_new,map1,8265,Player 1
955+
supra_new,map1,17401,Player 1
956+
supra_new,map1,8031,Player 1
957+
supra_new,map1,60459,Player 1
958+
supra_new,map1,8078,Player 1
959+
supra_new,map1,13450,Player 1

engine.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ def spawn_booster(self, map: Map, dt):
3838
y_coordinate = random.randrange(map.places_for_boosters[place][1], map.places_for_boosters[place][3])
3939

4040

41-
what_booster = random.randrange(0,5)
41+
what_booster = random.randrange(0,6)
4242
new_booster_type = None
4343
change = None
4444

@@ -52,7 +52,7 @@ def spawn_booster(self, map: Map, dt):
5252

5353
if what_booster == 0:
5454
new_booster_type = BoosterType.SPEED
55-
change = random.randrange(-100, 100)
55+
change = random.randrange(-12, 12)
5656

5757
elif what_booster == 1:
5858
new_booster_type = BoosterType.TURNING
@@ -75,7 +75,7 @@ def spawn_booster(self, map: Map, dt):
7575
change = 1
7676

7777
map.all_boosters.add(Booster(Vector2D(x_coordinate, y_coordinate), change, new_booster_type, dt))
78-
print("Booster spawned!\n")
78+
#print("Booster spawned!\n")
7979

8080

8181
def start_timer(self):
@@ -130,6 +130,8 @@ def run(self):
130130

131131
#pg.draw.rect(self.screen, (0,0,0), car, 3)
132132

133+
print(car.boosters)
134+
print("------------")
133135

134136

135137
#print(traction) no we have to include different surfaces in the movement of the car

map.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ def place_objects(self):
130130
# return Vector2D(best_x, best_y),best_spot
131131

132132
def handle_collision_with_walls(self, car):
133-
if car.transparent:
133+
if car.boosters["transparent"][0]:
134134
return False
135135

136136
collisions = pg.sprite.spritecollide(car, self.all_walls, False, pg.sprite.collide_mask)
@@ -178,3 +178,14 @@ def handle_collision_with_boosters(self, car):
178178
if pick_ups:
179179
for boost in pick_ups:
180180
boost.activate(car, self.stopwatch)
181+
182+
def handle_boosters(self, car):
183+
for t in car.boosters.values():
184+
t[1] -= pg.time.get_ticks()
185+
if t[1] <= 0:
186+
if t[0] == True:
187+
t[0] = False
188+
else:
189+
t[0] = 0
190+
191+
t[1] = 0

menu.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ def run(self):
5555
for event in pg.event.get():
5656
if event.type == pg.MOUSEBUTTONDOWN:
5757
if pos == 0: #play button
58-
name, map, car = self.settings.get_settings()
58+
name, car, map = self.settings.get_settings()
5959
engine = Engine(60, name, car, map)
6060
engine.run()
6161
run = False

settings.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ def run(self):
104104
self.car = car_selected_option
105105
map_selected_option = self.maps_options.update(event)
106106
if map_selected_option >= 0:
107-
self.car = map_selected_option
107+
self.map = map_selected_option
108108
if event.type == pg.MOUSEBUTTONDOWN:
109109
active = self.text_input.collidepoint(event.pos)
110110
if event.type == pg.KEYDOWN:

0 commit comments

Comments
 (0)