五子棋游戏
import pygame #导入pygame模块
pygame.init()#初始化
screen = pygame.display.set_mode((750,750))#设置游戏屏幕大小
running = True#建立一个事件
while running:#事件运行
for event in pygame.event.get():
if event.type == pygame.QUIT:#当点击事件后退出
running = False #事件关闭
screen.fill([125,95,24])#给屏幕画上颜色
for x in range(15):#画出15条竖线
pygame.draw.line(screen, (255, 0, 0),[25+50*x,25],[25+50*x,725],2)
for y in range(15):#画出15条横线
pygame.draw.line(screen, (255, 0, 0),[25,25+50*y],[725,25+50*y],2)
pygame.draw.circle(screen, (255, 0, 0),[25+50*7,25+50*7],8)#棋盘中间画出一个中心点
pygame.display.update()#刷新,变色用的
pygame.quit()#退出游戏
一。画出棋盘x和y 横和竖个15条线,画出中央的小点
二,创建列表,计算出x和y的当前坐标的位置,且存储二维列表的值,画出圆形白色棋子
import pygame #导入pygame模块
pygame.init()#初始化
screen = pygame.display.set_mode((750,750))#设置游戏屏幕大小
map = [0]*15#创建一个列表
for i in range(15):#列表循环来存储数据
map[i] = [0]*15#二维列表来存储数据
running = True#建立一个事件
while running:#事件运行
for event in pygame.event.get():
if event.type == pygame.QUIT:#当点击事件后退出
running = False #事件关闭
elif event.type == pygame.MOUSEBUTTONDOWN:#鼠标相应点击事件
x,y = pygame.mouse.get_pos()#获取x,y的位置
col = round((x - 25)/50)#计算出x的位置
row = round((y - 25)/50)#计算出y的位置
print(row+1,col+1)#打印出x与y的位置
map[row][col] = 1#等于1表示把它的数值存储起来
screen.fill([125,95,24])#给屏幕画上颜色
for x in range(15):#画出15条竖线
pygame.draw.line(screen, (255, 0, 0),[25+50*x,25],[25+50*x,725],2)
for y in range(15):#画出15条横线
pygame.draw.line(screen, (255, 0, 0),[25,25+50*y],[725,25+50*y],2)
x,y = pygame.mouse.get_pos()#获取鼠标所在位置
x = round((x - 25)/50)*50 + 25#找到x和y的交叉点
y = round((y - 25)/50)*50 + 25#找到x和y的交叉点
pygame.draw.rect(screen,(255, 0, 0),[x-25,y-25,50,50],2)#画一个正方形框框,表示可以落子
pygame.draw.circle(screen, (255, 0, 0),[25+50*7,25+50*7],8)#棋盘中间画出一个中心点
for row in range(15):#棋盘上画出白色棋子
for col in range(15):#棋盘上画出白色棋
if map[row][col] == 1:#点击后在棋盘上画出白色棋
pygame.draw.circle(screen,(255, 255, 255),[col*50+25,row*50+25],25)#棋盘上画出白色棋的位置和大小半径
pygame.display.update()#刷新,变色用的
pygame.quit()#退出游戏
三.黑白棋子交替出现
import pygame #导入pygame模块
pygame.init()#初始化
screen = pygame.display.set_mode((750,750))#设置游戏屏幕大小
map = [0]*15#创建一个列表
for i in range(15):#列表循环来存储数据
map[i] = [0]*15#二维列表来存储数据
player = 1#创建玩家1
running = True#建立一个事件
while running:#事件运行
for event in pygame.event.get():
if event.type == pygame.QUIT:#当点击事件后退出
running = False #事件关闭
elif event.type == pygame.MOUSEBUTTONDOWN:#鼠标相应点击事件
x,y = pygame.mouse.get_pos()#获取x,y的位置
col = round((x - 25)/50)#计算出x的位置
row = round((y - 25)/50)#计算出y的位置
print(row+1,col+1)#打印出x与y的位置
# map[row][col] = 1#等于1表示把它的数值存储起来
map[row][col] = player#
if player == 1:#当点击事件后
player = 2 #2是黑子
else:
player = 1#下一次是白子
screen.fill([125,95,24])#给屏幕画上颜色
for x in range(15):#画出15条竖线
pygame.draw.line(screen, (255, 0, 0),[25+50*x,25],[25+50*x,725],2)
for y in range(15):#画出15条横线
pygame.draw.line(screen, (255, 0, 0),[25,25+50*y],[725,25+50*y],2)
x,y = pygame.mouse.get_pos()#获取鼠标所在位置
x = round((x - 25)/50)*50 + 25#找到x和y的交叉点
y = round((y - 25)/50)*50 + 25#找到x和y的交叉点
pygame.draw.rect(screen,(255, 0, 0),[x-25,y-25,50,50],2)#画一个正方形框框,表示可以落子
pygame.draw.circle(screen, (255, 0, 0),[25+50*7,25+50*7],8)#棋盘中间画出一个中心点
for row in range(15):#棋盘上画出白色棋子
for col in range(15):#棋盘上画出白色棋
if map[row][col] == 1:#点击后在棋盘上画出白色棋
pygame.draw.circle(screen,(255, 255, 255),[col*50+25,row*50+25],25)#棋盘上画出白色棋的位置和大小半径
if map[row][col] == 2: # 点击后在棋盘上画出白色棋
pygame.draw.circle(screen, (000, 000, 000), [col * 50 + 25, row * 50 + 25], 25) #当时玩家2时棋盘上画出黑色棋子
pygame.display.update()#刷新,变色用的
pygame.quit()#退出游戏
四,提示已经被其他棋子占领了,不能重复占领
五。创建检测五子相连的函数 def check
六.,实现水平向左和向右方向的五子连线的判断胜负
import pygame #导入pygame模块
pygame.init()#初始化
screen = pygame.display.set_mode((750,750))#设置游戏屏幕大小
map = [0]*15#创建一个列表
for i in range(15):#列表循环来存储数据
map[i] = [0]*15#二维列表来存储数据
player = 1#创建玩家1
running = True
def check(row,col):#创建check函数检测五子连线
#判断左右方向是否五子连线
score = 1
for i in range(4):
if map[row][col+i] == map[row][col+i+1]:
score = score + 1
else:
break
for i in range(4):
if map[row][col-i] == map[row][col-i-1]:
score = score + 1
else:
break
if score == 5:
return True
while running:#事件运行
for event in pygame.event.get():
if event.type == pygame.QUIT:#当点击事件后退出
running = False #事件关闭
elif event.type == pygame.MOUSEBUTTONDOWN:#鼠标相应点击事件
x,y = pygame.mouse.get_pos()#获取x,y的位置
col = round((x - 25)/50)#计算出x的位置
row = round((y - 25)/50)#计算出y的位置
if map[row][col]== 0:
print(row+1,col+1)#打印出x与y的位置
# map[row][col] = 1#等于1表示把它的数值存储起来
map[row][col] = player#
if(check(row,col)):#如果检测到五子连线了那么打印赢了
print("有人赢了")
else:
if player == 1:#当点击事件后
player = 2 #2是黑子
else:
player = 1#下一次是白子
else:
print("当前位置已经被占领了")
screen.fill([125,95,24])#给屏幕画上颜色
for x in range(15):#画出15条竖线
pygame.draw.line(screen, (255, 0, 0),[25+50*x,25],[25+50*x,725],2)
for y in range(15):#画出15条横线
pygame.draw.line(screen, (255, 0, 0),[25,25+50*y],[725,25+50*y],2)
x,y = pygame.mouse.get_pos()#获取鼠标所在位置
x = round((x - 25)/50)*50 + 25#找到x和y的交叉点
y = round((y - 25)/50)*50 + 25#找到x和y的交叉点
pygame.draw.rect(screen,(255, 0, 0),[x-25,y-25,50,50],2)#画一个正方形框框,表示可以落子
pygame.draw.circle(screen, (255, 0, 0),[25+50*7,25+50*7],8)#棋盘中间画出一个中心点
for row in range(15):#棋盘上画出白色棋子
for col in range(15):#棋盘上画出白色棋
if map[row][col] == 1:#点击后在棋盘上画出白色棋
pygame.draw.circle(screen,(255, 255, 255),[col*50+25,row*50+25],25)#棋盘上画出白色棋的位置和大小半径
if map[row][col] == 2: # 点击后在棋盘上画出白色棋
pygame.draw.circle(screen, (000, 000, 000), [col * 50 + 25, row * 50 + 25], 25) #当时玩家2时棋盘上画出黑色棋子
pygame.display.update()#刷新,变色用的
pygame.quit()#退出游戏
检查左右方向的水平方向五子棋连接的五个
检测上下方向五子相连
检测左下 右上方向五子相连
检测左上右下的五子相连
import pygame #导入pygame模块
pygame.init()#初始化
screen = pygame.display.set_mode((750,750))#设置游戏屏幕大小
map = [0]*15#创建一个列表
for i in range(15):#列表循环来存储数据
map[i] = [0]*15#二维列表来存储数据
player = 1#创建玩家1
running = True
def check(row,col):#创建check函数检测五子连线
#判断左右方向是否五子连线
score = 1
for i in range(4):
if map[row][col+i] == map[row][col+i+1]:
score = score + 1
else:
break
for i in range(4):
if map[row][col-i] == map[row][col-i-1]:
score = score + 1
else:
break
if score == 5:
return True
# 判断上下方向是否五子连线
score = 1
for i in range(4):
if map[row+i][col] == map[row+i+1][col]:
score = score + 1
else:
break
for i in range(4):
if map[row-i][col] == map[row-i-1][col]:
score = score + 1
else:
break
if score == 5:
return True
# 判断左下右上方向是否五子连线(左下行和列都减小,右上行和列都变大)
score = 1
for i in range(4):
if map[row+i][col+i] == map[row+i+1][col+i+1]:
score = score + 1
else:
break
for i in range(4):
if map[row-i][col-i] == map[row-i-1][col-i-1]:
score = score + 1
else:
break
if score == 5:
return True
# 判断左上右下方向是否五子连线(左上行增加列减小,右下行变大,列变小)
score = 1
for i in range(4):
if map[row - i][col + i] == map[row - i - 1][col + i + 1]:
score = score + 1
else:
break
for i in range(4):
if map[row + i][col - i] == map[row + i + 1][col - i - 1]:
score = score + 1
else:
break
if score == 5:
return True
while running:#事件运行
for event in pygame.event.get():
if event.type == pygame.QUIT:#当点击事件后退出
running = False #事件关闭
elif event.type == pygame.MOUSEBUTTONDOWN:#鼠标相应点击事件
x,y = pygame.mouse.get_pos()#获取x,y的位置
col = round((x - 25)/50)#计算出x的位置
row = round((y - 25)/50)#计算出y的位置
if map[row][col]== 0:
print(row+1,col+1)#打印出x与y的位置
# map[row][col] = 1#等于1表示把它的数值存储起来
map[row][col] = player#
if(check(row,col)):#如果检测到五子连线了那么打印赢了
print("有人赢了")
else:
if player == 1:#当点击事件后
player = 2 #2是黑子
else:
player = 1#下一次是白子
else:
print("当前位置已经被占领了")
screen.fill([125,95,24])#给屏幕画上颜色
for x in range(15):#画出15条竖线
pygame.draw.line(screen, (255, 0, 0),[25+50*x,25],[25+50*x,725],2)
for y in range(15):#画出15条横线
pygame.draw.line(screen, (255, 0, 0),[25,25+50*y],[725,25+50*y],2)
x,y = pygame.mouse.get_pos()#获取鼠标所在位置
x = round((x - 25)/50)*50 + 25#找到x和y的交叉点
y = round((y - 25)/50)*50 + 25#找到x和y的交叉点
pygame.draw.rect(screen,(255, 0, 0),[x-25,y-25,50,50],2)#画一个正方形框框,表示可以落子
pygame.draw.circle(screen, (255, 0, 0),[25+50*7,25+50*7],8)#棋盘中间画出一个中心点
for row in range(15):#棋盘上画出白色棋子
for col in range(15):#棋盘上画出白色棋
if map[row][col] == 1:#点击后在棋盘上画出白色棋
pygame.draw.circle(screen,(255, 255, 255),[col*50+25,row*50+25],25)#棋盘上画出白色棋的位置和大小半径
if map[row][col] == 2: # 点击后在棋盘上画出白色棋
pygame.draw.circle(screen, (000, 000, 000), [col * 50 + 25, row * 50 + 25], 25) #当时玩家2时棋盘上画出黑色棋子
pygame.display.update()#刷新,变色用的
pygame.quit()#退出游戏
添加变量winner赋值给player,提示谁赢了,且提示3秒退出游戏