show orig_highscore on screen and separate border/no border highscores
authorGeoffrey Allott <geoffrey@allott.email>
Tue, 27 Dec 2022 08:57:55 +0000 (08:57 +0000)
committerGeoffrey Allott <geoffrey@allott.email>
Tue, 27 Dec 2022 08:57:55 +0000 (08:57 +0000)
snake.py

index 001f5752a075fa9ea1b1989a051a374d8b90641c..2add65025cc0a51a11e35956788e428d0b1a772b 100644 (file)
--- a/snake.py
+++ b/snake.py
@@ -227,7 +227,7 @@ class GameArea:
         for i, row in enumerate(self.tiles):
             for j, tile in enumerate(row):
                 self.win.addch(i, j, tile.char(), tile.color())
-        self.win.addstr(i + 1, 2, f'{self.highscore:04}')
+        self.win.addstr(i + 1, 2, f'{self.orig_highscore:04}')
         for s, snake in enumerate(self.snakes):
             self.win.addstr(i + 1, j - 6 - 5 * s, f'{snake.len() - 1:04}', snake.color)
         self.win.refresh()
@@ -368,12 +368,14 @@ class GameArea:
                     self.game_over()
             if snake.turbo:
                 snake.turbo -= 1
-        if any(snake.turbo for snake in self.snakes):
+        if self.score() > self.highscore:
+            self.highscore = self.score()
+            self.write_highscore()
+        if self.frame % 2 == 1 and not all(snake.turbo for snake in self.snakes):
             self.decay_fruit()
-        elif self.frame % 2 == 0:
-            return
-        if self.random.uniform(0, 1) < 0.05:
-            self.add_fruit()
+        if self.frame % 2 == 1 or any(snake.turbo for snake in self.snakes):
+            if self.random.uniform(0, 1) < 0.05:
+                self.add_fruit()
 
     def __str__(self) -> str:
         return '\n'.join(''.join(str(tile) for tile in row) for row in self.tiles)
@@ -409,7 +411,11 @@ if __name__ == '__main__':
 
     while True:
         win = setup(args.players)
-        gamearea = GameArea(win=win, highscore_file=os.path.expanduser('~/.local/snake/highscore'), players=args.players, border=args.border)
+        if args.border:
+            highscore_file = os.path.expanduser('~/.local/snake/highscore')
+        else:
+            highscore_file = os.path.expanduser('~/.local/snake/highscore.noborder')
+        gamearea = GameArea(win=win, highscore_file=highscore_file, players=args.players, border=args.border)
         try:
             while True:
                 gamearea.paint()