当前位置: 首页 > news >正文

五子棋游戏

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秒退出游戏

相关文章:

  • leetcode:用栈实现队列(先进先出)
  • 【深度学习】参数优化和训练技巧
  • pycharm编译报错处理
  • OpenGL的学习之路 -5
  • 基于SpringBoot房产销售系统
  • 指数退避和抖动
  • 网工内推 | 云计算运维,云相关认证优先,最高30K,带薪年假
  • 视频号小店需要多少资金?都需要准备什么东西?一篇详解!
  • Python与设计模式--门面模式
  • 03_MySQL基本SQL语句讲解
  • ClickHouse:真正的OLAP列式DBMS
  • 【迅搜04】索引配置(一)加载配置文件以及服务端配置
  • 【开源】基于Vue和SpringBoot的个人健康管理系统
  • sql24(Leetcode1141查询近30天活跃用户数)
  • 市场调研:2023年SLG游戏行业需求及发展前景预测
  • uniapp IOS从打包到上架流程(详细简单)
  • linux下Qt使用LinuxDeployqt打包
  • rocky8.9配置K8S集群kubernetes,centos同理
  • 汽车功能安全ISO26262
  • python监控显卡显存
  • 沧州低空经济起飞:飞行汽车开启千亿赛道,通用机场布局文旅体验
  • 李家超:明日起香港特区护照持有人可免签入境阿联酋
  • 公元1058年:柳永词为什么时好时坏?
  • 科技部等七部门:优先支持取得关键核心技术突破的科技型企业上市融资
  • 西北大学副校长成陕西首富?旗下巨子生物去年净利超20亿,到底持股多少
  • 中国创面修复学科发起者之一陆树良教授病逝,享年64岁