| 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() |