generated from mwc/project_game
This round, i was able to add the food and set up the collisions but after i edited some parts, the game just started crashing everytime.
It worked up until I got to test to take away the food and add it.
This commit is contained in:
Binary file not shown.
BIN
__pycache__/food.cpython-313.pyc
Normal file
BIN
__pycache__/food.cpython-313.pyc
Normal file
Binary file not shown.
18
food.py
Normal file
18
food.py
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
|
||||||
|
import random
|
||||||
|
|
||||||
|
class Food:
|
||||||
|
name = "food"
|
||||||
|
character = "*"
|
||||||
|
|
||||||
|
def __init__(self, board_size):
|
||||||
|
self.board_width, self.board_height = board_size
|
||||||
|
self.position = self._random_position()
|
||||||
|
|
||||||
|
def _random_position(self):
|
||||||
|
x = random.randint(0, self.board_width - 1)
|
||||||
|
y = random.randint(0, self.board_height - 1)
|
||||||
|
return (x, y)
|
||||||
|
|
||||||
|
def respawn(self):
|
||||||
|
self.position = self._random_position()
|
||||||
@@ -1,9 +1,10 @@
|
|||||||
from retro.game import Game
|
from retro.game import Game
|
||||||
from player import Player
|
from player import Player
|
||||||
|
from food import Food
|
||||||
|
|
||||||
board_size = (100, 25)
|
board_size = (100, 25)
|
||||||
player = Player(board_size)
|
food = Food(board_size)
|
||||||
game = Game([player],{"score": 0}, board_size=board_size, color="pink", debug=True,)
|
|
||||||
|
|
||||||
game.play()
|
player = Player(board_size)
|
||||||
|
game = Game([player, food],{"score": 0}, board_size=board_size, color="pink", debug=True,)
|
||||||
|
game.play()
|
||||||
60
player.py
60
player.py
@@ -10,33 +10,47 @@ class Player:
|
|||||||
self.position = (start_x, start_y)
|
self.position = (start_x, start_y)
|
||||||
self.body = [self.position]
|
self.body = [self.position]
|
||||||
self.direction = (1, 0)
|
self.direction = (1, 0)
|
||||||
|
|
||||||
|
def handle_keystroke(self, keystroke, game):
|
||||||
|
x, y = self.body[0]
|
||||||
|
|
||||||
def handle_keystroke(self, keystroke, game):
|
if keystroke.name in ("KEY_LEFT", "KEY_RIGHT", "KEY_UP", "KEY_DOWN"):
|
||||||
x, y = self.body[0]
|
if keystroke.name == "KEY_LEFT":
|
||||||
|
self.direction = (-1, 0)
|
||||||
|
elif keystroke.name == "KEY_RIGHT":
|
||||||
|
self.direction = (1, 0)
|
||||||
|
elif keystroke.name == "KEY_UP":
|
||||||
|
self.direction = (0, -1)
|
||||||
|
elif keystroke.name == "KEY_DOWN":
|
||||||
|
self.direction = (0, 1)
|
||||||
|
|
||||||
if keystroke.name in ("KEY_LEFT", "KEY_RIGHT", "KEY_UP", "KEY_DOWN"):
|
dx, dy = self.direction
|
||||||
|
new_head = (x + dx, y + dy)
|
||||||
|
|
||||||
if keystroke.name == "KEY_LEFT":
|
if not game.on_board(new_head):
|
||||||
self.direction = (-1, 0)
|
game.end()
|
||||||
elif keystroke.name == "KEY_RIGHT":
|
return
|
||||||
self.direction = (1, 0)
|
|
||||||
elif keystroke.name == "KEY_UP":
|
|
||||||
self.direction = (0, -1)
|
|
||||||
elif keystroke.name == "KEY_DOWN":
|
|
||||||
self.direction = (0, 1)
|
|
||||||
|
|
||||||
dx, dy = self.direction
|
if new_head in self.body:
|
||||||
new_head = (x + dx, y + dy)
|
game.end()
|
||||||
|
return
|
||||||
|
|
||||||
if not game.on_board(new_head):
|
food = None
|
||||||
game.end()
|
for actor in game.actors:
|
||||||
return
|
if getattr(actor, "name", None) == "food":
|
||||||
|
food = actor
|
||||||
|
break
|
||||||
|
|
||||||
if new_head in self.body:
|
if food is not None and new_head == food.position:
|
||||||
game.end()
|
|
||||||
return
|
self.body.insert(0, new_head)
|
||||||
|
|
||||||
|
if hasattr(food, "respawn"):
|
||||||
|
food.respawn()
|
||||||
|
else:
|
||||||
|
|
||||||
|
self.body.insert(0, new_head)
|
||||||
|
self.body.pop()
|
||||||
|
|
||||||
self.body.insert(0, new_head)
|
|
||||||
self.body.pop()
|
self.position = self.body[0]
|
||||||
|
|
||||||
self.position = self.body[0]
|
|
||||||
|
|||||||
Reference in New Issue
Block a user