三张照片和程序放在同一文件下,否则的话需要使用绝对路径引用。
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,并与代码文件放在同一目录中。
希望这个示例对您有帮助!如果您有任何问题,请随时提问。