当然可以帮你写一个类似于《消灭星星》的游戏代码。下面是一个基本的代码框架,你可以在此基础上进行扩展和修改。

import random

class StarGame:
    def __init__(self, rows, cols):
        self.rows = rows
        self.cols = cols
        self.grid = [[random.randint(1, 5) for _ in range(cols)] for _ in range(rows)]
        self.score = 0

    def print_grid(self):
        for row in self.grid:
            print(' '.join(str(cell) for cell in row))
    
    def remove_star(self, row, col):
        target_star = self.grid[row][col]
        self._remove_connected_stars(row, col, target_star)
        self._shift_down()

    def _remove_connected_stars(self, row, col, target_star):
        if row < 0 or row >= self.rows or col < 0 or col >= self.cols:
            return
        if self.grid[row][col] == target_star:
            self.grid[row][col] = 0
            self.score += 1
            self._remove_connected_stars(row-1, col, target_star)
            self._remove_connected_stars(row+1, col, target_star)
            self._remove_connected_stars(row, col-1, target_star)
            self._remove_connected_stars(row, col+1, target_star)

    def _shift_down(self):
        for col in range(self.cols):
            empty_cells = [row for row in range(self.rows) if self.grid[row][col] == 0]
            non_empty_cells = [row for row in range(self.rows) if self.grid[row][col] != 0]
            for i in range(len(empty_cells)):
                self.grid[empty_cells[i]][col] = self.grid[non_empty_cells[i]][col]
                self.grid[non_empty_cells[i]][col] = 0

    def play(self):
        while True:
            print("Current Score:", self.score)
            self.print_grid()
            
            row = int(input("Enter row (0 - {}): ".format(self.rows-1)))
            col = int(input("Enter column (0 - {}): ".format(self.cols-1)))
            
            if row < 0 or row >= self.rows or col < 0 or col >= self.cols:
                print("Invalid position. Try again.")
                continue
            
            if self.grid[row][col] == 0:
                print("No star at this position. Try again.")
                continue

            self.remove_star(row, col)
            
            if self._is_game_over():
                print("Game Over! Final Score:", self.score)
                break
    
    def _is_game_over(self):
        for row in range(self.rows):
            for col in range(self.cols):
                if self.grid[row][col] != 0:
                    if self._has_connected_stars(row, col, self.grid[row][col]):
                        return False
        return True

    def _has_connected_stars(self, row, col, target_star):
        if row < 0 or row >= self.rows or col < 0 or col >= self.cols:
            return False
        if self.grid[row][col] == target_star:
            return True
        return self._has_connected_stars(row-1, col, target_star) or \
               self._has_connected_stars(row+1, col, target_star) or \
               self._has_connected_stars(row, col-1, target_star) or \
               self._has_connected_stars(row, col+1, target_star)


# 游戏入口
if __name__ == '__main__':
    rows = int(input("Enter number of rows: "))
    cols = int(input("Enter number of columns: "))
    game = StarGame(rows, cols)
    game.play()

这段代码创建了一个名为StarGame的游戏类,包含了游戏逻辑和交互功能。在游戏中,你可以根据提示输入行列坐标,选择要消除的星星,然后星星会消除,并根据消除的星星数量增加得分。游戏会判断是否还有可以连接的星星,如果没有则游戏结束,显示最终得分。

你可以根据需要自行扩展和修改这段代码,添加更多的游戏功能和特性。希望对你有帮助!

Python 消灭星星游戏代码实现

原文地址: https://www.cveoy.top/t/topic/oMN 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录