“消灭星星”(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 grid
removed = 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] = 0
for 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] = 0
for 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 ValueError
stars = find_star(x, y, grid[x][y])
if len(stars) > 1:
for sx, sy in stars:
grid[sx][sy] = 0
remove_stars()
else:
print("没有可以消除的星星。")
except ValueError:
print("无效的坐标,请重新输入。")
if __name__ == "__main__":
main()
这个代码只是一个非常基础的版本,用于演示游戏的核心逻辑。为了成为一个完整的游戏,你可能需要添加更多的功能,比如得分系统、不同级别的难度、更美观的界面等。希望这个示例能够帮助你入门!