用python写一个五子棋的获取鼠标事件
时间: 2023-05-25 11:01:09 浏览: 48
好的,作为 CSDN 开发的 C知道 AI,我来帮您解答问题。
首先,我们需要导入 Pygame 包,因为它是 Python 中一个用于制作 2D 游戏的库。然后,我们需要定义好棋盘,并根据鼠标事件来更新棋子。
下面是一个简单的实现,供您参考:
```python
import pygame
# 初始化 Pygame
pygame.init()
# 设定棋盘尺寸和每个格子的大小
width, height = 640, 640
grid_size = width // 15
# 设定显示屏和标题
screen = pygame.display.set_mode((width, height))
pygame.display.set_caption("五子棋")
# 定义棋盘,二维列表,0表示空格,1表示黑子,2表示白子
board = [[0 for _ in range(15)] for _ in range(15)]
# 初始化黑子先下
current_player = 1
# 绘制棋盘
def draw_board():
for i in range(15):
pygame.draw.line(screen, (0, 0, 0), (grid_size, (i + 1) * grid_size), (width - grid_size, (i + 1) * grid_size), 2)
pygame.draw.line(screen, (0, 0, 0), ((i + 1) * grid_size, grid_size), ((i + 1) * grid_size, height - grid_size), 2)
# 绘制棋子
def draw_pieces():
for x in range(15):
for y in range(15):
if board[x][y] == 1:
pygame.draw.circle(screen, (0, 0, 0), ((x + 1) * grid_size, (y + 1) * grid_size), 15)
elif board[x][y] == 2:
pygame.draw.circle(screen, (255, 255, 255), ((x + 1) * grid_size, (y + 1) * grid_size), 15)
# 判断胜利条件
def check_win(player):
# 横向检测
for i in range(11):
for j in range(15):
if board[i][j] == player and board[i + 1][j] == player and board[i + 2][j] == player and board[i + 3][j] == player and board[i + 4][j] == player:
return True
# 纵向检测
for i in range(15):
for j in range(11):
if board[i][j] == player and board[i][j + 1] == player and board[i][j + 2] == player and board[i][j + 3] == player and board[i][j + 4] == player:
return True
# 对角线检测
for i in range(11):
for j in range(11):
if board[i][j] == player and board[i + 1][j + 1] == player and board[i + 2][j + 2] == player and board[i + 3][j + 3] == player and board[i + 4][j + 4] == player:
return True
for i in range(11):
for j in range(4, 15):
if board[i][j] == player and board[i + 1][j - 1] == player and board[i + 2][j - 2] == player and board[i + 3][j - 3] == player and board[i + 4][j - 4] == player:
return True
return False
# 游戏循环
while True:
# 处理事件
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
exit()
if event.type == pygame.MOUSEBUTTONDOWN:
if pygame.mouse.get_pressed() == (1, 0, 0):
x, y = pygame.mouse.get_pos()
i, j = x // grid_size - 1, y // grid_size - 1
if board[i][j] == 0:
board[i][j] = current_player
if check_win(current_player):
print("胜利!")
current_player = 3 - current_player
# 绘制背景色并绘制棋盘和棋子
screen.fill((230, 230, 230))
draw_board()
draw_pieces()
# 刷新画面
pygame.display.update()
```
这段代码可以在 Pygame 当中创建一个简单的五子棋游戏,并且可以在响应鼠标事件时判断落子的合法性,并进行胜负判断。
希望这个回答能够帮到您,如果您有任何问题,请随时向我提问。