code cleanup
authorGeoffrey Allott <geoffrey@allott.email>
Tue, 6 Dec 2022 09:36:02 +0000 (09:36 +0000)
committerGeoffrey Allott <geoffrey@allott.email>
Tue, 6 Dec 2022 09:36:02 +0000 (09:36 +0000)
snake.py

index ebf842d8b5aace3b374df410626bf6b5ab843cb2..79a2ba08cf7aeaed4772ab3b149071475d3a4882 100644 (file)
--- a/snake.py
+++ b/snake.py
@@ -107,13 +107,16 @@ class GameArea:
             curses.endwin()
             sys.exit(0)
 
-    def add_fruit(self):
-        r, c = self.random.choice([
+    def random_empty_tile(self):
+        return self.random.choice([
             (r, c)
             for r, row in enumerate(self.tiles)
             for c, tile in enumerate(row)
             if tile is TileContents.Empty
         ])
+
+    def add_fruit(self):
+        r, c = self.random_empty_tile()
         fruit_type = self.random.choices(
             [TileContents.Fruit, TileContents.TurboFruit, TileContents.PortalFruit],
             weights=[0.8, 0.1, 0.1]
@@ -127,12 +130,7 @@ class GameArea:
             life = 150
             self.tiles[r][c] = fruit_type
             self.fruit.append(Fruit(r, c, life, id))
-            r, c = self.random.choice([
-                (r, c)
-                for r, row in enumerate(self.tiles)
-                for c, tile in enumerate(row)
-                if tile is TileContents.Empty
-            ])
+            r, c = self.random_empty_tile()
         self.tiles[r][c] = fruit_type
         self.fruit.append(Fruit(r, c, life, id))
 
@@ -146,8 +144,7 @@ class GameArea:
             for fruit in self.fruit
             if fruit.life > 0
         ]
-        
-    
+
     def write_highscore(self):
         os.makedirs(os.path.dirname(self.highscore_file), exist_ok=True)
         with open(self.highscore_file, 'w') as f:
@@ -196,25 +193,24 @@ class GameArea:
             self.snake.append((self.snake[-1][0] + 1, self.snake[-1][1]))
         r, c = self.snake[-1]
         if self.tiles[r][c] is TileContents.Fruit:
-            self.fruit = [fruit for fruit in self.fruit if fruit.row != r or fruit.column != c]
+            self.fruit = [fruit for fruit in self.fruit if (fruit.row, fruit.column) != (r, c)]
             self.tiles[r][c] = TileContents.Snake
             self.score += 1
         elif self.tiles[r][c] is TileContents.TurboFruit:
-            self.fruit = [fruit for fruit in self.fruit if fruit.row != r or fruit.column != c]
+            self.fruit = [fruit for fruit in self.fruit if (fruit.row, fruit.column) != (r, c)]
             self.tiles[r][c] = TileContents.Snake
             self.score += 1
             self.turbo = 100
         elif self.tiles[r][c] is TileContents.PortalFruit:
-            portal_id = [fruit.id for fruit in self.fruit if fruit.row == r or fruit.column == c]
+            portal_id = [fruit.id for fruit in self.fruit if (fruit.row, fruit.column) == (r, c)]
             dest_portals = [
                 (fruit.row, fruit.column)
                 for fruit in self.fruit
                 if fruit.id in portal_id
                     and self.tiles[fruit.row][fruit.column] is TileContents.PortalFruit
-                    and fruit.row != r
-                    and fruit.column != c
+                    and (fruit.row, fruit.column) != (r, c)
             ]
-            self.fruit = [fruit for fruit in self.fruit if fruit.row != r or fruit.column != c]
+            self.fruit = [fruit for fruit in self.fruit if (fruit.row, fruit.column) != (r, c)]
             if len(dest_portals) == 0:
                 self.tiles[r][c] = TileContents.Snake
                 r, c = self.snake[0]