五子棋纯python手写,需要的拿去

news2024/11/20 20:23:18

 

import pygame,sys
from pygame import *
pygame.init()

game = pygame.display.set_mode((600,600))
gameover = False
circlebox = []
# 棋盘坐标点存储
box = []
def xy():
    for x in range(0,800//40): 
         for y in range(0,800//40): 
             box.append((x*40,y*40))
xy()
defaultColor = 'white'
def gameWrite(word,size,color,x,y):
    # 创建一个帮我们写字的对象
    writer = pygame.font.SysFont('kaiti',size)
    # 将内容书写到给定的位置即可
    text = writer.render(word, True, color)
    # 将书写好的text传送到画布上
    game.blit(text,(x,y))
tmpColor = (255,255,255)
def success(color):
    global gameover,tmpColor
    
    gameover = True
    tmpColor = color
    
# 左斜对角验证
def L(x,y,color):

    n = 0# 如果斜对角能凑足4个则即为成功
    x1 = x
    y1 = y
    while True:#往上走
        x1 = x1-40
        y1 = y1-40
        if x1>=0 and y1>=0:
            f = False
            for i in circlebox:
                if i[0] == x1 and i[1] == y1 and i[2] == color:
                    n = n+1
                    f = True
                    break
            if not f:
                break
        else:
            break
    print("左上斜对角值:",n)
    while True:#往下走
        x = x+40
        y = y+40
        if x<=800 and y<=800:
            f = False
            for i in circlebox:
                if i[0] == x and i[1] == y and i[2] == color:
                    n = n+1
                    f = True
                    break
            if not f:
                break
        else:
            break
    print("左下斜对角值:",n)
    if n>=4:
        success(color)
        
        
def R(x,y,color):
    n = 0# 如果斜对角能凑足4个则即为成功
    x1 = x
    y1 = y
    while True:#往上走
        x1 = x1+40
        y1 = y1-40
        if x1<=800 and y1>=0:
            f = False
            for i in circlebox:
                if i[0] == x1 and i[1] == y1 and i[2] == color:
                    n = n+1
                    f = True
                    break
            if not f:
                break
        else:
            break
        
    while True:#往下走
        x = x-40
        y = y+40
        if x>=0 and y<=800:
            f = False
            for i in circlebox:
                if i[0] == x and i[1] == y and i[2] == color:
                    n = n+1
                    f = True
                    break
            if not f:
                break
        else:
            break
    if n==4:
        success(color)
def S(x,y,color):
    n = 0# 如果斜对角能凑足4个则即为成功
    x1 = x
    y1 = y
    while True:#往上走
        y1 = y1-40
        if x1>=0 and y1>=0:
            f = False
            for i in circlebox:
                if i[0] == x1 and i[1] == y1 and i[2] == color:
                    n = n+1
                    f = True
                    break
            if not f:
                break
        else:
            break
        
    while True:#往下走
        y = y+40
        if x<=800 and y<=800:
            f = False
            for i in circlebox:
                if i[0] == x and i[1] == y and i[2] == color:
                    n = n+1
                    f = True
                    break
            if not f:
                break
        else:
            break
    if n==4:
        success(color)
def H(x,y,color):
    n = 0# 如果斜对角能凑足4个则即为成功
    x1 = x
    y1 = y
    while True:#往左走
        x1 = x1-40
        if x1>=0 and y1>=0:
            f = False
            for i in circlebox:
                if i[0] == x1 and i[1] == y1 and i[2] == color:
                    n = n+1
                    f = True
                    break
            if not f:
                break
        else:
            break
        
    while True:#往右走
        x = x+40
        if x<=800 and y<=800:
            f = False
            for i in circlebox:
                if i[0] == x and i[1] == y and i[2] == color:
                    n = n+1
                    f = True
                    break
            if not f:
                break
        else:
            break
    if n==4:
        success(color)
# 画棋盘
def chess():
    start = 0
    for i in range(800//40): 
        pygame.draw.polygon(game,(255,255,255),[(0,start), (800,start)],1)
        pygame.draw.polygon(game,(255,255,255),[(start,0), (start,800)],1)
        start = start+40

def E():
    global defaultColor
    for e in pygame.event.get():
        if e.type == QUIT:
            pygame.quit()
            sys.exit()
        if e.type == MOUSEBUTTONDOWN:
            x,y = e.pos
            print(e.button)
            if e.button == 1 and not gameover:# 
                for xy in box:
                    if abs(xy[0]-x)<20 and abs(xy[1]-y)<20 :
                        f = False
                        for mark in circlebox:
                            if xy[0]==mark[0] and xy[1]==mark[1]:
                                f = True
                        if not f:
                            if defaultColor=='white':
                                # 判断原来这个点是否已经存在
                                circlebox.append((xy[0],xy[1],(255,255,255)))
                                L(xy[0],xy[1],(255,255,255))
                                R(xy[0],xy[1],(255,255,255))
                                S(xy[0],xy[1],(255,255,255))
                                H(xy[0],xy[1],(255,255,255))
                                defaultColor = 'red'
                            else:
                                circlebox.append((xy[0],xy[1],(255,0,0)))
                                L(xy[0],xy[1],(255,0,0))
                                R(xy[0],xy[1],(255,0,0))
                                S(xy[0],xy[1],(255,0,0))
                                H(xy[0],xy[1],(255,0,0))
                                defaultColor = 'white'
           
def drawCircle():
    for i in circlebox:
        pygame.draw.circle(game,i[2],(i[0],i[1]),15)               
while True:
    chess()
    drawCircle()
    if gameover:
        if tmpColor == (255,255,255):
            gameWrite("恭喜白方获取胜利",60,(0,0,255),70,180)
        else:
            gameWrite("恭喜红方获取胜利",60,(0,0,255),70,180)
    E()
    pygame.display.update()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1866751.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

周转车配料拣货方案

根据周转车安装的电子标签&#xff0c;被悬挂的扫码器扫到墨水屏显示的二维码&#xff0c;投屏发送配料拣货的数据。 方便快捷分拣物料

未来出行新选择——加油宝APP,让您的每一次加油都充满智慧与便捷!

一、前言 随着科技的飞速发展&#xff0c;智能手机已经成为我们生活中不可或缺的一部分。为了满足广大车主对便捷、高效加油服务的需求&#xff0c;我们倾力打造了全新的加油宝APP。这款APP不仅为您提供一站式的加油服务&#xff0c;还融合了多项创新功能&#xff0c;让您的出…

低碳短视频:成都柏煜文化传媒有限公司

低碳短视频&#xff1a;绿色传播的新风尚 随着全球气候变化和环境问题日益严峻&#xff0c;低碳生活已经成为人们追求的新风尚。在这个背景下&#xff0c;低碳短视频应运而生&#xff0c;以其独特的方式传播绿色理念&#xff0c;推动低碳生活方式的普及。成都柏煜文化传媒有限…

nextjs-创建layouts共用UI和独立pages页面

原文链接&#xff1a;https://nextjs.org/learn/dashboard-app/creating-layouts-and-pages 01-nextjs起步02-css样式03-处理字体和图片05-页面之间的导航跳转更多 到目前为止&#xff0c;您的应用程序只有一个主页。让我们学习如何使用布局和页面创建更多路由。 本章目标 …

智慧芯片,点亮未来——免费可视化大屏模板

一、什么是智慧芯片可视化大屏&#xff1f; 智慧芯片可视化大屏&#xff0c;集成了先进芯片技术和可视化技术。它不仅能够实时处理海量数据&#xff0c;还能以直观、生动的图像形式展示给用户&#xff0c;让复杂的数据变得一目了然。如图&#xff1a; 山海鲸可视化智慧芯片大屏…

实战|记一次java协同办公OA系统源码审计

前言 因为笔者也是代码审计初学者&#xff0c;写得不好的地方请见谅。该文章是以项目实战角度出发&#xff0c;希望能给大家带来启发。 审计过程 审计思路 1、拿到一个项目首先要看它使用了什么技术框架&#xff0c;是使用了ssh框架&#xff0c;还是使用了ssm框架&#xff…

阿里提出MS-Diffusion:一键合成你喜爱的所有图像元素,个性化生成新思路!

文本到图像生成模型的最新进展极大地增强了从文本提示生成照片级逼真图像的能力&#xff0c;从而增加了人们对个性化文本到图像应用的兴趣&#xff0c;尤其是在多主题场景中。然而&#xff0c;这些进步受到两个主要挑战的阻碍&#xff1a; 需要根据文本描述准确维护每个参考主题…

黑马程序员Java基础学习,涉及精细知识点复习【持续更新】

文章目录 01java基础java基础面向对象1.类&#xff1a;2.成员变量&#xff1a;类中方法外的变量&#xff0c;不能赋值3.成员方法&#xff1a;4.java内存分配&#xff1a;5.成员变量有初始值&#xff0c;局部变量没有初始值。6.this关键字&#xff1a;7.封装&#xff1a;8.构造方…

软硬链接 以及 动静态链接

目录 1 软硬链接 2 动静态库 1 软硬链接 不知道大家也没有仔细看过我们的 windows 中的快捷方式的内容&#xff0c;我们右键点开一个快捷方式然后查看其属性&#xff0c;我们发现有一个 目标 的内容 这个目标是一串路径&#xff0c;这也就是我们的程序的安装路径中的一个.exe…

AWS在国内的持续受欢迎:探究背后的原因

亚马逊云&#xff08;AWS&#xff09;作为全球领先的云计算服务提供商&#xff0c;在国内市场仍然保持着强劲的竞争力和广泛的用户群。尽管国内也有一些本土云计算服务提供商的崛起&#xff0c;但AWS在国内仍然有大量的用户在使用。我们九河云&#xff0c;一直致力AWS云相关服务…

mapstruct实现各个实体间的类型转换(DTO转BO、BO转Entity)的实践

一、引入 在没有遇见mapstruct的时候&#xff0c;实现各个实体之间的转换&#xff0c;都是手动转换实现的&#xff0c;属性少一带你还好&#xff0c;当属性一多&#xff0c;代码就会变得很冗余&#xff0c;没必要的非逻辑的代码就会加多。。。。 比如&#xff1a; public cl…

对https://registry.npm.taobao.org/tyarn的请求失败,原因:证书过期

今天安装yarn时&#xff0c;报错如下&#xff1a; request to https://registry.npm.taobao.org/yarn failed, reason: certificate has expired 原来淘宝镜像过期了&#xff0c;需要重新搞一下 记录一下解决过程&#xff1a; 1.查看当前npm配置 npm config list 2.清…

Vite: 集成Lint工具规范代码

概述 在前端开发中&#xff0c;尤其是在大型项目中&#xff0c;代码的规范性和一致性对于项目的可维护性、可读性以及团队协作效率至关重要。为了保障代码质量&#xff0c;前端社区涌现出了许多Lint工具&#xff0c;如ESLint、Prettier、Stylelint等&#xff0c;它们能帮助我们…

高考成绩加分,西藏学生推荐使用的《藏文翻译词典》APP,藏文作文高考大纲,初中高中学习内容与考试同步更新!

2024年高考成绩出炉啦&#xff01;在这个特别的时刻&#xff0c;我想向大家表达最真挚的祝贺。高考不仅是一场考试&#xff0c;更是你多年学习旅程的一次总结。当你的成绩揭晓&#xff0c;无论结果如何&#xff0c;你都应该为自己感到骄傲。 在高原&#xff0c;藏语如同雪山上…

切线与切平面的可视化

切线与切平面的可视化 flyfish 切线的可视化 import numpy as np import matplotlib.pyplot as plt from matplotlib.animation import FuncAnimation, PillowWriter# 定义一个简单的一元函数&#xff0c;例如 f(x) x^2 def func(x):return x**2# 计算函数的导数 def deriva…

鸿蒙开发Ability Kit(程序框架服务):【FA模型切换Stage模型指导】 app和deviceConfig的切换

app和deviceConfig的切换 为了便于开发者维护应用级别的属性配置&#xff0c;Stage模型将config.json中的app和deviceConfig标签提取到了app.json5中进行配置&#xff0c;并对部分标签名称进行了修改&#xff0c;具体差异见下表。 表1 配置文件app标签差异对比 配置项FA模型…

MindSpore中NumPy变量转换为Tensor张量使用的Tensor.from_numpy()函数到底是深拷贝还是浅拷贝

在NumPy转换为Tensor使用的Tensor.from_numpy()函数到底是深拷贝还是浅拷贝 使用Tensor()将NumPy变量转换为Tensor变量。 类似数组转换张量的方法 n np.ones(5) t Tensor.from_numpy(n) print(f"t: {t}", type(t)) np.add(n, 1, outn) print(f"n: {n}"…

导航栏设计的5种类型,新手不容忽视的重要知识!

导航栏是网页设计中不可缺少的一部分。大多数用户在浏览网页时都是从导航栏开始的。导航栏的作用相当于路标和书籍中的目录&#xff0c;其重要性不言而喻。从设计的角度来看&#xff0c;网页导航栏的设计功能大于视觉效果。因此&#xff0c;网页导航栏的设计可以分为 5 类型&am…

Java后端 || ElementUI 显示后端树形表格数据

文章目录 1、前端源码2、数据库设计3、后端设计3.1、实体类3.2、Controller层3.3、具体树形列表后端代码实现 1、前端源码 ElementUI Table 链接 在此链接中找到 树形数据与懒加载 查看其JS源码&#xff0c;可知&#xff0c;每个菜单节点的子节点存放于children字段中&#x…

直播分享|TinyVue 组件库主题适配原理与实战

在前端开发过程中&#xff0c;不同的项目可能需要不同的设计风格。而了解组件库的主题适配功能&#xff0c;也可以帮助开发者轻松定制独特的主题风格&#xff0c;从而满足各种设计需求。因此6月27日晚19点&#xff0c;体验技术团队 TinyVue 项目成员岑灌铭老师将为大家带来以《…