import random
import turtle
import pgzrun as pr
import datetime
import time
import copy

screen = turtle.Screen()

TILE_SIZE = 50
WIDTH = (10 * TILE_SIZE)
HEIGHT = (10 * TILE_SIZE)
TITLE = '消灭星星'

stars = []
for i in range(10):
    row = []
    for j in range(10):
        x = random.randint(1, 6)
        row.append(x)
    stars.append(row)

Tiles = []


def updateTiles():
    Tiles.clear()
    for i in range(10):
        for j in range(10):
            tile = Actor('star'+str(stars[i][j]))
            tile.left = j * TILE_SIZE
            tile.top = i * TILE_SIZE
            Tiles.append(tile)


updateTiles()


def draw():
    screen.clear()
    for tile in Tiles:
        tile.draw()
    for i in range(10):
        for j in range(10):
            screen.draw.text(
                str(stars[i][j]), (j*TILE_SIZE, i*TILE_SIZE), fontsize=35, color='white')


def on_mouse_down(pos, button):
    ic = int(pos[1]/TILE_SIZE)
    jc = int(pos[0]/TILE_SIZE)
    con = {(ic, jc)}
    for k in range(20):
        tempSet = copy.deepcopy(con)
        for each in tempSet:
            i = each[0]
            j = each[1]
            clid = stars[i][j]
            if i > 0 and stars[i-1][j] == clid:
                con.add((i-1, j))
            if i < 9 and stars[i+1][j] == clid:
                con.add((i+1, j))
            if j > 0 and stars[i][j-1] == clid:
                con.add((i, j-1))
            if j < 9 and stars[i][j+1] == clid:
                con.add((i, j+1))
            tempSet.clear()
            for each in con:
                stars[each[0]][each[1]] = 0

            updateTiles()

    draw()

pr.run()

代码说明:

  1. 导入必要的库:

    • random 用于生成随机数。
    • turtle 用于创建游戏窗口。
    • pgzrun 是 Pygame Zero 库,用于简化游戏开发。
    • datetime 用于获取当前时间。
    • time 用于控制游戏速度。
    • copy 用于复制数据结构。
  2. 设置游戏参数:

    • TILE_SIZE: 每个方块的大小。
    • WIDTH, HEIGHT: 游戏窗口的宽高。
    • TITLE: 游戏窗口的标题。
  3. 生成星星矩阵:

    • stars 数组用于存储游戏中的星星,每个元素表示一种颜色的星星。
    • 使用 random.randint(1, 6) 生成 1 到 6 之间的随机数,代表不同的星星颜色。
  4. 创建游戏界面:

    • updateTiles() 函数用于根据星星矩阵创建游戏界面中的方块。
    • draw() 函数用于绘制游戏界面,包括星星方块和星星的数字。
  5. 点击事件处理:

    • on_mouse_down() 函数用于处理鼠标点击事件。
    • 点击方块后,会查找与点击方块相连的同色方块,并将其消除。
    • con 集合用于存储需要消除的方块坐标。
    • tempSet 用于临时存储方块坐标,避免重复计算。

如何运行代码:

  1. 确保你已经安装了 pgzrun 库。
  2. 将代码保存为 .py 文件(例如 star_game.py)。
  3. 在命令行中运行 pgzrun star_game.py

游戏玩法:

  1. 点击一个星星,如果与它相连的星星是同色的,则它们会被消除。
  2. 消除的星星会消失,并可能导致其他星星组合消除。
  3. 游戏目标:消除尽可能多的星星。

改进方向:

  • 添加分数系统和游戏结束条件。
  • 增加游戏难度,例如增加星星的种类或改变星星消除的规则。
  • 添加背景音乐和音效。
  • 使用图形图像代替数字,使游戏界面更加美观。
Python 星星消除游戏:使用 Pygame Zero 实现简单的消除游戏

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

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