Python消消乐小游戏(全代码分享)

Python消消乐小游戏(全代码分享)

  • 一、编程准备
  • 二、代码分享
  • 三、效果展示
  • 四、玩法

一、编程准备

准备三张图片,分别命名为

三张照片和程序放在同一文件下,否则的话需要使用绝对路径引用。


我这里三张图片的样子为:

二、代码分享

import pygame
import random

# 游戏参数
WIDTH = 800
HEIGHT = 600
ROWS = 8
COLS = 8
TILE_SIZE = 64
FPS = 60

# 颜色
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
RED = (255, 0, 0)
GREEN = (0, 255, 0)
BLUE = (0, 0, 255)

# 初始化Pygame
pygame.init()
screen = pygame.display.set_mode((WIDTH, HEIGHT))
clock = pygame.time.Clock()

# 加载图像
tile_images = {
    "red": pygame.image.load("red_tile.png").convert_alpha(),
    "green": pygame.image.load("green_tile.png").convert_alpha(),
    "blue": pygame.image.load("blue_tile.png").convert_alpha(),
}

# 游戏逻辑
def initialize_grid():
    grid = []
    for row in range(ROWS):
        row_tiles = []
        for col in range(COLS):
            color = random.choice(["red", "green", "blue"])
            tile = {
                "color": color,
                "rect": pygame.Rect(col * TILE_SIZE, row * TILE_SIZE, TILE_SIZE, TILE_SIZE),
            }
            row_tiles.append(tile)
        grid.append(row_tiles)
    return grid

def draw_grid(grid):
    for row in range(ROWS):
        for col in range(COLS):
            tile = grid[row][col]
            screen.blit(tile_images[tile["color"]], tile["rect"])

def swap_tiles(grid, row1, col1, row2, col2):
    grid[row1][col1], grid[row2][col2] = grid[row2][col2], grid[row1][col1]

def remove_matches(grid):
    matches = []
    for row in range(ROWS):
        for col in range(COLS):
            color = grid[row][col]["color"]
            if (
                col < COLS - 2
                and grid[row][col + 1]["color"] == color
                and grid[row][col + 2]["color"] == color
            ):
                matches.append((row, col))
            if (
                row < ROWS - 2
                and grid[row + 1][col]["color"] == color
                and grid[row + 2][col]["color"] == color
            ):
                matches.append((row, col))
    for row, col in matches:
        grid[row][col]["color"] = None

def fill_empty_tiles(grid):
    for col in range(COLS):
        empty_tiles = [row for row in range(ROWS) if grid[row][col]["color"] is None]
        for row in empty_tiles:
            color = random.choice(["red", "green", "blue"])
            grid[row][col]["color"] = color

# 游戏循环
def game_loop():
    grid = initialize_grid()
    selected_tile = None

    running = True
    while running:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                running = False
            elif event.type == pygame.MOUSEBUTTONDOWN:
                if not selected_tile:
                    mouse_pos = pygame.mouse.get_pos()
                    row = mouse_pos[1] // TILE_SIZE
                    col = mouse_pos[0] // TILE_SIZE
                    selected_tile = (row, col)
                else:
                    mouse_pos = pygame.mouse.get_pos()
                    row = mouse_pos[1] // TILE_SIZE
                    col = mouse_pos[0] // TILE_SIZE
                    swap_tiles(grid, selected_tile[0], selected_tile[1], row, col)
                    selected_tile = None

        remove_matches(grid)
        fill_empty_tiles(grid)

        screen.fill(BLACK)
        draw_grid(grid)
        pygame.display.update()
        clock.tick(FPS)

    pygame.quit()

# 启动游戏
game_loop()

三、效果展示

四、玩法

这个消消乐游戏的玩法很简单。游戏界面上会有一些方块,你需要通过交换相邻方块的位置,使得三个或三个以上相同颜色的方块连在一起。

请注意,这只是一个简单的示例,可能需要根据您的需求进行修改和扩展。您还需要准备消消乐方块的图像,并将其命名为red_tile.png、green_tile.png和blue_tile.png,并与代码文件放在同一目录中。

希望这个示例对您有帮助!如果您有任何问题,请随时提问。

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
青葱年少的头像青葱年少普通用户
上一篇 2023年12月5日
下一篇 2023年12月5日

相关推荐