generated from mwc/project_game
I added the retro lab code, made 4 python files, and gave the player the ability to move left, right, up, and down.
A recent success that I am proud of is that I was able to give the player the ability to move up, down, left, and right. When implementing the ability to move up and down it seemed that the code was opposite of what I expected it to be. I was able to figure out how to implement it the correct way.
This commit is contained in:
BIN
__pycache__/path.cpython-312.pyc
Normal file
BIN
__pycache__/path.cpython-312.pyc
Normal file
Binary file not shown.
BIN
__pycache__/person.cpython-312.pyc
Normal file
BIN
__pycache__/person.cpython-312.pyc
Normal file
Binary file not shown.
BIN
__pycache__/spawner.cpython-312.pyc
Normal file
BIN
__pycache__/spawner.cpython-312.pyc
Normal file
Binary file not shown.
9
new.py
Normal file
9
new.py
Normal file
@@ -0,0 +1,9 @@
|
||||
from retro.game import Game
|
||||
from person import Spaceship
|
||||
from spawner import AsteroidSpawner
|
||||
|
||||
board_size = (25, 25)
|
||||
ship = Spaceship(board_size)
|
||||
spawner = AsteroidSpawner()
|
||||
game = Game([ship, spawner], {"score": 0,"lives":5}, board_size=board_size)
|
||||
game.play()
|
||||
41
path.py
Normal file
41
path.py
Normal file
@@ -0,0 +1,41 @@
|
||||
class Asteroid:
|
||||
character = 'O'
|
||||
|
||||
def __init__(self, position):
|
||||
self.position = position
|
||||
|
||||
#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):
|
||||
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
|
||||
24
person.py
Normal file
24
person.py
Normal file
@@ -0,0 +1,24 @@
|
||||
class Spaceship:
|
||||
name = "ship"
|
||||
character = '^'
|
||||
|
||||
def __init__(self, board_size):
|
||||
board_width, board_height = board_size
|
||||
self.position = (board_width // 2, board_height - 1)
|
||||
|
||||
def handle_keystroke(self, keystroke, game):
|
||||
x, y = self.position
|
||||
if keystroke.name in ("KEY_LEFT", "KEY_RIGHT","KEY_UP", "KEY_DOWN"):
|
||||
if keystroke.name == "KEY_LEFT":
|
||||
new_position = (x - 1, y)
|
||||
if keystroke.name == "KEY_RIGHT":
|
||||
new_position = (x + 1, y)
|
||||
if keystroke.name == "KEY_UP":
|
||||
new_position = (x, y - 1)
|
||||
if keystroke.name == "KEY_DOWN":
|
||||
new_position = (x, y + 1)
|
||||
if game.on_board(new_position):
|
||||
if game.is_empty(new_position):
|
||||
self.position = new_position
|
||||
else:
|
||||
game.end()
|
||||
15
spawner.py
Normal file
15
spawner.py
Normal file
@@ -0,0 +1,15 @@
|
||||
from random import randint
|
||||
from path import Asteroid
|
||||
|
||||
class AsteroidSpawner:
|
||||
display = False
|
||||
|
||||
def play_turn(self, game):
|
||||
width, height = game.board_size
|
||||
game.state['score'] += 1
|
||||
if self.should_spawn_asteroid(game.turn_number):
|
||||
asteroid = Asteroid((randint(0, width - 1), 0))
|
||||
game.add_agent(asteroid)
|
||||
|
||||
def should_spawn_asteroid(self, turn_number):
|
||||
return randint(0, 1000) < turn_number
|
||||
Reference in New Issue
Block a user