用python写个三子棋游戏

发布时间:2024年01月06日

下面是一个简单的三子棋游戏的Python代码示例。在这个游戏中,玩家需要使用鼠标点击来放置棋子,并尽可能地使自己的三个棋子连成一线(横、竖或斜)。

python
复制代码
import pygame ?
import random ?
??
# 初始化pygame ?
pygame.init() ?
??
# 设置屏幕大小和标题 ?
screen_width = 800 ?
screen_height = 600 ?
screen = pygame.display.set_mode((screen_width, screen_height)) ?
pygame.display.set_caption("三子棋游戏") ?
??
# 设置颜色 ?
WHITE = (255, 255, 255) ?
BLACK = (0, 0, 0) ?
RED = (255, 0, 0) ?
GREEN = (0, 255, 0) ?
??
# 设置棋盘大小和棋子大小 ?
board_width = 16 ?
board_height = 16 ?
tile_size = 30 ?
margin = 10 ?
??
# 创建棋盘和棋子列表 ?
board = [[0 for _ in range(board_width)] for _ in range(board_height)] ?
tiles = [] ?
for row in range(board_height): ?
? ? for col in range(board_width): ?
? ? ? ? x = margin + col * tile_size + tile_size // 2 ?
? ? ? ? y = margin + row * tile_size + tile_size // 2 ?
? ? ? ? tiles.append((x, y)) ?
??
# 游戏主循环 ?
running = True ?
while running: ?
? ? for event in pygame.event.get(): ?
? ? ? ? if event.type == pygame.QUIT: ?
? ? ? ? ? ? running = False ?
? ? ? ? elif event.type == pygame.MOUSEBUTTONDOWN: ?# 如果点击了鼠标左键,则放置棋子并检查是否获胜 ?
? ? ? ? ? ? mouse_x, mouse_y = pygame.mouse.get_pos() ?
? ? ? ? ? ? row = (mouse_y - margin) // tile_size + 1 ?
? ? ? ? ? ? col = (mouse_x - margin) // tile_size + 1 ?
? ? ? ? ? ? if board[row][col] == 0: ?# 如果该位置没有棋子,则放置棋子并检查是否获胜 ?
? ? ? ? ? ? ? ? board[row][col] = 1 ?# 放置白棋子(玩家1) ?
? ? ? ? ? ? ? ? if check_win(board, row, col, 1): ?# 检查是否获胜(玩家1)胜出 ?
? ? ? ? ? ? ? ? ? ? pygame.font.init() ?# 初始化字体模块(如果之前没有初始化) ?
? ? ? ? ? ? ? ? ? ? font = pygame.font.SysFont("Arial", 36) ?# 创建字体对象(36号字体) ?
? ? ? ? ? ? ? ? ? ? text = font.render("玩家1胜出!", True, GREEN) ?# 创建获胜提示文本对象(绿色字体) ?
? ? ? ? ? ? ? ? ? ? screen.blit(text, (20, 20)) ?# 在屏幕上显示获胜提示文本(左上角位置) ?
? ? ? ? ? ? ? ? ? ? pygame.display.flip() ?# 更新屏幕显示内容 ?
? ? ? ? ? ? ? ? ? ? running = False ?# 结束游戏循环(获胜) ?
? ? ? ? ? ? ? ? else: ?# 如果玩家1没有获胜,则轮到玩家2下棋(交替下棋) ?
? ? ? ? ? ? ? ? ? ? pygame.time.wait(1000) ?# 等待1秒钟(等待时间可调整) ?
? ? ? ? ? ? ? ? ? ? board[row][col] = -1 ?# 放置黑棋子(玩家2) ?
? ? ? ? ? ? ? ? ? ? if check_win(board, row, col, -1): ?# 检查是否获胜(玩家2)胜出 ?
? ? ? ? ? ? ? ? ? ? ? ? pygame.font.init() ?# 初始化字体模块(如果之前没有初始化) ?
? ? ? ? ? ? ? ? ? ? ? ? font = pygame.font.SysFont("Arial", 36) ?# 创建字体对象(36号字体) ?
? ? ? ? ? ? ? ? ? ? ? ? text = font.render("玩家2胜出!", True, RED) ?# 创建获胜提示文本对象(红色字体) ?
? ? ? ? ? ? ? ? ? ? ? ? screen.blit(text, (20, 20)) ?# 在屏幕上显示获胜提示文本(左上角位置) ?
? ? ? ? ? ? ? ? ? ? ? ? pygame.display.flip() ?# 更新屏幕显示内容 ?
? ? ? ? ? ? ? ? ? ? ? ? running = False ?# 结束游戏循环(获胜) ?
? ? ? ? ? ? else: ?# 如果该位置已经有棋子,则不放置棋子(无法重复下棋) ?
? ? ? ? ? ? ? ? pygame.font.init() ?# 初始化字体模块(如果之前没有初始化) ?
? ? ? ? ? ? ? ? font = pygame.font.SysFont("Arial", 24) ?# 创建字体对象(24号字体) ?
? ? ? ? ? ? ? ? text

文章来源:https://blog.csdn.net/ducanwang/article/details/135431444
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。