From: Geoffrey Allott Date: Tue, 6 Dec 2022 09:36:02 +0000 (+0000) Subject: code cleanup X-Git-Url: https://git.pointlesshacks.com/?a=commitdiff_plain;h=ef79cae751460c27f52f2b6a547ae9a17ffe7ef7;p=snake.git code cleanup --- diff --git a/snake.py b/snake.py index ebf842d..79a2ba0 100644 --- 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]