|
import random |
|
|
|
class FoodManager: |
|
def __init__(self): |
|
self.amount = 5 |
|
|
|
class BodyPart: |
|
position = [-1, -1] |
|
|
|
class Head: |
|
_position = 0 |
|
_velocity = [1, 1] |
|
|
|
class Tail: |
|
_position = 3 |
|
_velocity = [0, 0] |
|
|
|
def check_collision(): |
|
global head, tail, body, food_manager |
|
collision = False |
|
tail_x, body_items, food_size = len(tail._position)-1, len(body), body_item_width() + body_margin() |
|
if abs(head._position) < food_size / 2: |
|
body_items += 1 |
|
for _ in range(body_items+1): |
|
if min(_ == head._position - 1, len(head._position) - 1) > max(body._position, food._position): |
|
collision = True |
|
break |
|
if food_manager.amount > 0: |
|
for _ in range(4): |
|
if abs(_ == head._position % food_size or _ == tail._position % food_size) <= food_size / 4: |
|
collision = True |
|
break |
|
else: |
|
collision |= abs(head._position) >= food_size / 2 |
|
return collision |
|
|
|
def set_score_label_text(): |
|
label_str = "Score: {}".format(game.points) |
|
global score_label |
|
score_label.setText(label_str) |
|
|
|
def main(): |
|
game.setWindowSize((len(header)+min(game_field_width(), body_height())+178, len(footer))) |
|
global header, footer |
|
header.pushLabels(["Settings", "FPS"]) |
|
footer.pushButtonLabels(["New Game", "Quit Game"]) |
|
score_label.setText("Score: 0") |
|
player.addKeyboardControlledActor(main_actor) |
|
play_loop = game.repeat(game.timePerFrame/60, 1, update) |
|
|
|
def update(deltaTime): |
|
global game |
|
|
|
|
|
food_manager = FoodManager() |
|
|
|
while True: |
|
|
|
initGameComponents() |
|
|
|
|
|
playLoop() |
|
|
|
def checkCollision(): |
|
|
|
pass |
|
|
|
def setScoreText(): |
|
|
|
pass |
|
|
|
def addBodyParts(): |
|
|
|
pass |
|
|
|
def removeTailSegments(): |
|
|
|
pass |
|
|
|
def addHeadAndTailSegmentToBoard(): |
|
|
|
pass |
|
|
|
def growWithoutEating(): |
|
|
|
pass |
|
|
|
def stopPlaying(): |
|
|
|
pass |
|
|
|
def changeDirectionAfterCrash(): |
|
|
|
pass |
|
|
|
initGameComponents() |
|
playLoop() |