summaryrefslogtreecommitdiff
path: root/Game.py
diff options
context:
space:
mode:
Diffstat (limited to 'Game.py')
-rw-r--r--Game.py42
1 files changed, 32 insertions, 10 deletions
diff --git a/Game.py b/Game.py
index 07150e0..6f6a063 100644
--- a/Game.py
+++ b/Game.py
@@ -1,6 +1,7 @@
from Snake import Snake
from Vec import Vec2
+from Box import Box
class Walls:
"""Contains the walls of a game.
@@ -40,21 +41,29 @@ class Walls:
class Game:
"""Class responsible for the main logic of a game.
For a game, this will probably be a singleton."""
+
+ snake = None
+ boxes = []
+ walls = None
- snake = Snake([Vec2(6, 6), Vec2(6, 7), Vec2(6,8), Vec2(7,8)])
- walls = Walls.fromString("""###############
-# #
-# #
-# #
-# #
-# #
-# #
+ def __init__(self):
+ self.snake = Snake([Vec2(6, 6), Vec2(6, 7), Vec2(6,8), Vec2(7,8)], self)
+ _box1 = Box(Vec2(11, 4))
+ _box2 = Box(Vec2(3, 10))
+ self.boxes = [_box1, _box2]
+ self.walls = Walls.fromString("""###############
# #
+# f #
# #
+# b #
# #
+# h #
+# t #
+# tt #
# #
+# b #
# ### #
-# #
+# f #
###############""")
def width(self): return self.walls.width()
@@ -64,5 +73,18 @@ class Game:
self.snake.move()
def isLost(self):
- return self.snake.headInTail() or self.walls.wallAt(self.snake.head())
+ return self.snake.hasCollided
+
+ def enter(self, pos: Vec2, inDir: Vec2) -> bool:
+ boxAt = next(filter(lambda box: box.pos == pos, self.boxes), None)
+ if self.walls.wallAt(pos):
+ return False
+ elif boxAt != None:
+ if self.enter(pos + inDir, inDir):
+ boxAt.pos = pos + inDir
+ return True
+ else:
+ return False
+ else:
+ return True