This is my fourth commit. I fixed the issue I was having with the cars breaking apart.

I am very happy that I was able to fix this problem.  I had to email you about this problem and you showed me how this could be completed by creating another class.  This makes so much sense now as you could spawn one part of the car right behind the other to give the illusion that it is one car.
I learned the new skill of using 2 different classes together when making the car 2 wide.
This commit is contained in:
jwberent
2025-12-06 22:54:28 -05:00
parent abca9dbd4f
commit 4ff9dbd231
6 changed files with 14 additions and 40 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

5
car_back.py Normal file
View File

@@ -0,0 +1,5 @@
class CarBack:
character = 'O'
def __init__(self, position):
self.position = position

36
path.py
View File

@@ -3,51 +3,25 @@ class Car:
def __init__(self, position): def __init__(self, position):
self.position = position self.position = position
self.next = None
#def play_turn(self, game):
# lives = 5
# width, height = game.board_size
# if game.turn_number % 2 == 0:
# x, y = self.position
# if y == height - 1:
# game.remove_agent(self)
# else:
# ship = game.get_agent_by_name('ship')
# new_position = (x, y + 1)
# if new_position == ship.position:
# lives = lives-1
# game.state["lives"] -=1
# if game.state["lives"] == 0:
# game.end()
#else:
# self.position = new_position
def play_turn(self, game): def play_turn(self, game):
lives = 3 lives = 3
width, height = game.board_size width, height = game.board_size
if game.turn_number: #% 3 == 0: if game.turn_number % 3 == 0:
x, y = self.position x, y = self.position
if x == width - 1: if x == width - 1:
game.remove_agent(self) game.remove_agent(self)
game.remove_agent(self.next)
else: else:
person = game.get_agent_by_name('person') person = game.get_agent_by_name('person')
new_position = (x+1, y) new_position = (x+1, y)
# if game.turn_number % 2 == 1:
# x, y = self.position
#if x == width - 1:
# game.remove_agent(self)
# else:
# person = game.get_agent_by_name('person')
# new_position = (x-1, y)
if new_position == person.position: if new_position == person.position:
lives = lives-1 lives = lives-1
game.state["lives"] -=1 game.state["lives"] -=1
if game.state["lives"] == 0: if game.state["lives"] == 0:
game.end() game.end()
else: else:
self.next.position = self.position
self.position = new_position self.position = new_position

View File

@@ -1,5 +1,6 @@
from random import randint from random import randint
from path import Car from path import Car
from car_back import CarBack
class CarSpawner: class CarSpawner:
display = False display = False
@@ -8,17 +9,11 @@ class CarSpawner:
width, height = game.board_size width, height = game.board_size
game.state['score'] += 1 game.state['score'] += 1
if self.should_spawn_car(game.turn_number): if self.should_spawn_car(game.turn_number):
#car = Car((randint(0, width - 1), 0)) y = randint(1, height-1)
#car = Car((0, randint(0, height - 1)))
#car2 = Car((30,randint(0, height - 1)))
#game.add_agent(car)
#game.add_agent(car2)
y = randint(0, height - 1)
car3 = Car((0, y)) car3 = Car((0, y))
car4 = Car((1,y)) car3.next = CarBack((1,y))
game.add_agent(car3) game.add_agent(car3)
game.add_agent(car4) game.add_agent(car3.next)
def should_spawn_car(self, turn_number): def should_spawn_car(self, turn_number):
return randint(0, 1000) < turn_number return randint(0, 1000) < turn_number