“消灭星星”(PopStar)是一款非常受欢迎的益智游戏,游戏目标是在一个网格中消除相同颜色的星星,一次消除的星星数量越多,得分越高。以下是一个简化版的消灭星星游戏的Python代码示例,用于演示基本的游戏逻辑和界面。
import random
import os
# 游戏区域大小
ROW = 10
COL = 10
# 星星的种类数
STAR_TYPES = 5
# 游戏区域
grid = [[random.randint(1, STAR_TYPES) for _ in range(COL)] for _ in range(ROW)]
def print_grid():""" 打印游戏区域 """os.system('cls' if os.name == 'nt' else 'clear')for row in grid:print(' '.join(str(x) for x in row))
def is_valid(x, y):""" 检查坐标是否有效 """return 0 <= x < ROW and 0 <= y < COL
def find_star(x, y, star_type):""" 深度优先搜索找到所有相邻的同色星星 """if not is_valid(x, y) or grid[x][y] != star_type:return []stars = [(x, y)]grid[x][y] = 0 # 标记为已访问for dx, dy in [(-1, 0), (1, 0), (0, -1), (0, 1)]:stars.extend(find_star(x + dx, y + dy, star_type))return stars
def remove_stars():""" 移除所有被选择的星星 """global gridremoved = set()for x in range(ROW):for y in range(COL):if grid[x][y] > 0:stars = find_star(x, y, grid[x][y])if len(stars) > 1:removed.update(stars)# 移除星星并下落for x, y in removed:grid[x][y] = 0for y in range(COL):col = [grid[x][y] for x in range(ROW) if grid[x][y] > 0]for x in range(ROW - len(col), ROW):grid[x][y] = 0for x in range(ROW - len(col)):grid[x][y] = col[x]
def main():""" 主函数 """print("欢迎来到消灭星星游戏!")print("请输入要消除的星星的行和列(从0开始):")while True:print_grid()try:x, y = map(int, input("行 列: ").split())if not is_valid(x, y):raise ValueErrorstars = find_star(x, y, grid[x][y])if len(stars) > 1:for sx, sy in stars:grid[sx][sy] = 0remove_stars()else:print("没有可以消除的星星。")except ValueError:print("无效的坐标,请重新输入。")
if __name__ == "__main__":main()
这个代码只是一个非常基础的版本,用于演示游戏的核心逻辑。为了成为一个完整的游戏,你可能需要添加更多的功能,比如得分系统、不同级别的难度、更美观的界面等。希望这个示例能够帮助你入门!