本文实例为大家分享了pygame五子棋游戏的具体代码,供大家参考,具体内容如下
1.设置棋盘
五子棋标准棋盘是15x15的,如果我们每个格子的大小是40x40的话,棋盘应该是40x(15-1)=560的宽度,我们在四面各保留60的边距,那么窗口的长宽各是40x(15-1)+60x2
# -*- coding=utf-8 -*-
import random
import pygame
pygame.init()
space = 60 # 四周留下的边距
cell_size = 40 # 每个格子大小
cell_num = 15
grid_size = cell_size * (cell_num - 1) + space * 2 # 棋盘的大小
screencaption = pygame.display.set_caption('FIR')
screen = pygame.display.set_mode((grid_size,grid_size)) #设置窗口长宽
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
exit()
screen.fill((0,0,150)) # 将界面设置为蓝色
for x in range(0,cell_size*cell_num,cell_size):
pygame.draw.line(screen,(200,200,200),(x+space,0+space),(x+space,cell_size*(cell_num-1)+space),1)
for y in range(0,cell_size*cell_num,cell_size):
pygame.draw.line(screen,(200,200,200),(0+space,y+space),(cell_size*(cell_num-1)+space,y+space),1)
pygame.display.update() # 必须调用update才能看到绘图显示
2.落子
首先我们定义一个chess_arr数组用于存储落到棋盘上的棋子
chess_arr = []
然后在游戏主循环监听下鼠标弹起事件,然后在捕捉到鼠标弹起事件时获取鼠标位置并把位置添加进chess_arr
for event in pygame.event.get():
……
if event.type == pygame.MOUSEBUTTONUP: # 鼠标弹起
x, y = pygame.mouse.get_pos() # 获取鼠标位置
chess_arr.append((x,y))
最后我们在pygame.display.update()前将棋子绘制出来看看效果
可以看到,现在已经能点出棋子了,但是棋子的位置不是纵横线的交叉点,所以我们必须对鼠标位置进行取整,不能把x,y这个位置加的这么随意,处理下x,y位置的代码如下
for event in pygame.event.get():
……
if event.type == pygame.MOUSEBUTTONUP: # 鼠标弹起
x, y = pygame.mouse.get_pos() # 获取鼠标位置
xi = int(round((x - space)*1.0/cell_size)) # 获取到x方向上取整的序号
yi = int(round((y - space)*1.0/cell_size)) # 获取到y方向上取整的序号
if xi>=0 and xi=0 and yi
chess_arr.append((xi*cell_size+space,yi*cell_size+space))
现在发现落子