I made sure my circles are falling continously and as the player doges the score increases.

I'm proud of making the circles fall from the top one at a time.
I was stuck on making the circle fall.
This commit is contained in:
juddin2
2025-12-04 21:14:43 -05:00
parent ed8f4d7126
commit 8769519960
7 changed files with 66 additions and 8 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

26
circle.py Normal file
View File

@@ -0,0 +1,26 @@
from random import randint
class Circle:
name= "circle"
character = 'O'
def __init__(self, position):
self.position = position
def play_turn(self, game):
width, height = game.board_size
fall_speed = game.state.get("fall_speed", 1)
x, y = self.position
player = game.get_agent_by_name('player')
new_position = (x, y + 1)
if new_position == player.position:
game.end()
return
if y >= height - 1:
game.state["score"] += 1
if game.state["fall_speed"] < 5:
game.state["fall_speed"] += 1
self.position = (randint(0, width - 1), 0)
else:
self.position = new_position

18
circle_spawner.py Normal file
View File

@@ -0,0 +1,18 @@
from random import randint
from circle import Circle
class CircleSpawner:
display = False
def play_turn(self, game):
width, height = game.board_size
game.state['score'] += 1
if self.should_spawn_circle(game.turn_number):
x= randint(0, width - 1)
new_circle= Circle((x,0))
game.add_agent(new_circle)
def should_spawn_circle(self, turn_number):
return randint(0, 200) < turn_number

View File

@@ -1,7 +1,16 @@
from retro.game import Game
from player import Player
from circle import Circle
board_size = (100, 25)
player = Player(board_size)
game = Game([player], {"score": 0}, board_size=board_size)
circle= Circle ((board_size[0] // 2, 0))
def during_turn(game):
pass
game = Game([player, circle], {"score": 0, "fall_speed": 1}, board_size=board_size)
game.during_turn = during_turn
game.play()

View File

@@ -1,6 +1,6 @@
class Player:
name = "player"
character = 'O'
character = '^'
def __init__(self, board_size):
board_width, board_height = board_size
@@ -8,12 +8,17 @@ class Player:
def handle_keystroke(self, keystroke, game):
x, y = self.position
if keystroke.name in ("KEY_LEFT", "KEY_RIGHT"):
if keystroke.name == "KEY_LEFT":
new_position = (x - 1, y)
else:
new_position = (x + 1, y)
if game.on_board(new_position):
if keystroke.name == "KEY_LEFT":
new_position = (x - 1, y)
elif keystroke.name == "KEY_RIGHT":
new_position = (x + 1, y)
elif keystroke.name == "KEY_UP":
new_position = (x, y - 1)
elif keystroke.name == "KEY_DOWN":
new_position = (x, y + 1)
else:
return
if game.on_board(new_position):
if game.is_empty(new_position):
self.position = new_position
else: