前几天突发奇想做一个五子棋,但是技术储备不足,于是就在C站找资料,于是我就借鉴大佬做的五子棋,根据其思路,我做的一些笔记。

目录

一,棋盘的绘制

1.窗口

2.网格

3.星位

二,游戏功能介绍

1.下棋

2.胜利的判断

三,胜利提示

1.棋子上的显示

2.胜利提示窗口


大佬的代码写的已经很详细了,我就不全拿出来,点击下方链接查看全部代码。

Python Pygame制作简单五子棋游戏(详细代码+解释)_Guapifang的博客-CSDN博客_简单python五子棋代码https://blog.csdn.net/weixin_43918046/article/details/119521845?spm=1001.2014.3001.5506

一,棋盘的绘制

1.窗口

这是用代码写出来的UI

# 创建窗体
screen = pygame.display.set_mode((670, 670))
# 背景板颜色
Checkerboard_Color = (0xE3, 0x92, 0x65)

2.网格

棋盘上的线条是通过循环和if条件语句绘制而成

for循环绘制网格线,if条件语句则是让边缘线加粗。

# 画边缘线for i in range(27, 670, 44):# 先画竖线if i == 27 or i == 670 - 27:# 边缘线稍微粗一些pygame.draw.line(screen, line_color, [i, 27], [i, 670 - 27], 4)else:pygame.draw.line(screen, line_color, [i, 27], [i, 670 - 27], 2)# 再画横线# 边缘线稍微粗一些if i == 27 or i == 670 - 27:# 边缘线pygame.draw.line(screen, line_color, [27, i], [670 - 27, i], 4)else:pygame.draw.line(screen, line_color, [27, i], [670 - 27, i], 2)# 边框内线      起点、终点、步长for i in range(32, 670, 605):pygame.draw.line(screen, line_color, [i, 27], [i, 670 - 27], 2)pygame.draw.line(screen, line_color, [27, i], [670 - 27, i], 2)

3.星位

之前不懂这是什么意思,后来C站学习Pygame的基础,知道这句话的意思是画圆。

    # 在棋盘中心画个小圆表示正中心位置                 位置              半径、线厚度pygame.draw.circle(screen, line_color, [27 + 44 * 7, 27 + 44 * 7], 8, 10)# 设置四个角落的标点# 左上pygame.draw.circle(screen, line_color, [27 + 44 * 3, 27 + 44 * 3], 6, 10)# 右上pygame.draw.circle(screen, line_color, [27 + 44 * 11, 27 + 44 * 11], 6, 10)# 左下pygame.draw.circle(screen, line_color, [27 + 44 * 3, 27 + 44 * 11], 6, 10)# 右下pygame.draw.circle(screen, line_color, [27 + 44 * 11, 27 + 44 * 3], 6, 10)

二,游戏功能介绍

1.下棋

把鼠标设置为一个圆圈,让下棋的人看起来跟直观,不容易下错地方。

# 获取鼠标坐标信息
x, y = pygame.mouse.get_pos()
x, y = find_pos(x, y)

棋盘上没有棋子的时候圆圈是黑色,有棋子的时候变成了白色。

# 把鼠标设置成圆圈
if check_over_pos(x, y, over_pos):#                       颜色         确定位置   长度、宽度、线厚度、圆角度pygame.draw.rect(screen, [0, 0, 30], [x - 22, y - 22, 44, 44], 3, 20)# 有棋子后颜色变白
else:pygame.draw.rect(screen, [224, 224, 223], [x - 22, y - 22, 44, 44], 3, 20)

定义棋子的颜色

# 白棋颜色
white_color = [244, 244, 244]
# 黑棋颜色
black_color = [10, 10, 10]

2.胜利的判断

胜利的判断是通过设置四个方向的条件,来判定输赢。下面是我拿出一方向来解释。

# zeros(shape, dtype=float)#                   数据类型对象为整数mp = np.zeros([15, 15], dtype=int)# 确定落棋位置for val in over_pos:x = int((val[0][0] - 27) / 44)y = int((val[0][1] - 27) / 44)# 让黑白棋交替if val[1] == white_color:mp[x][y] = 2  # 表示白子else:mp[x][y] = 1  # 表示黑子
# 向右倾斜连线# i代表竖直,j代表竖直方向#用循环嵌套来同时判定水平和竖直方向棋子的位置。for i in range(15):for j in range(15):pos1 = []pos2 = []for k in range(15):# 竖直方向+1,竖直方向向左+1if i + k >= 15 or j - k < 0:# 如果达到条件,停止下面的操作breakif mp[i + k][j - k] == 1:pos1.append([i + k, j - k])else:pos1 = []if mp[i + k][j - k] == 2:pos2.append([i + k, j - k])else:pos2 = []if len(pos1) >= 5:return [1, pos1]if len(pos2) >= 5:return [2, pos2]

三,胜利提示

1.棋子上的显示

如图所示,连起来的五个棋子周围会显示方框提示。

# 获胜后显示                   颜色           确定位置                               长度、宽度、厚度、圆角
pygame.draw.rect(screen, [0, 0, 153], [pos[0] * 44 + 27 - 22, pos[1] * 44 + 27 - 22, 44, 44], 2, 5)

2.胜利提示窗口

这个代码我在C站找了很久都没有找到,最后是我的老师告诉我这串代码。

# 首先在代码最前面导入tkiner
from tkinter import *
from tkinter import messagebox        #代表白色棋子if val[1] == white_color:Tk().wm_withdraw()messagebox.showinfo('白棋获胜', '恭喜白棋一方获胜')else:Tk().wm_withdraw()messagebox.showinfo('黑棋获胜', '恭喜黑棋一方获胜')

喜欢的话,请留下你的赞美。

【Python】Pygame学习制作五子棋笔记相关推荐

  1. 《Python深度学习》读书笔记:第1章 什么是深度学习

    目录 第1章 什么是深度学习 1.1 人工智能.机器学习与深度学习 1.1.1 人工智能 1.1.2 机器学习 1.1.3 从数据中学习表示 1.1.4 深度学习之"深度" 1.1 ...

  2. Lumerical Python API学习之补充笔记

    一.笔记1 1.1.关于SYS 在导入之前添加 Python代码解释 当我们导入一个模块时: import xxx ,默认情况下python解释器会搜索当前目录.已安装的内置模块和第三方模块. 搜索路 ...

  3. 《Python深度学习》读书笔记

    第一章 1. 人工智能.机器学习.深度学习之间的关系 2. 人工智能:将通常由人类完成的智力任务自动化. 3. 机器学习 第二章 keras实现mnist识别 from keras.datasets ...

  4. python基础学习 制作一个猜筛子的程序

    import random import time #导入random库便于获得随机数 def caicaicai():a = random.randrange(1,7)b = random.rand ...

  5. 《Python深度学习》第五章-5(可视化过滤器)读书笔记

    5.4 卷积神经网络的可视化 卷积神经网络学到的表示非常适合可视化,很大程度上是因为它们是视觉概念的表示\color{red}视觉概念的表示视觉概念的表示.接下来介绍3种可视化方法. 事中\color ...

  6. Python第三方库pygame学习笔记(一)

    Pygame Python最经典的2D游戏开发第三方库,也支持3D游戏开发 Pygame适合用于游戏逻辑验证.游戏入门及系统演示验证 Pygame是一种游戏开发引擎,基本逻辑具有参考价值 pygame ...

  7. Python可视化物理随机过程---pygame学习笔记2

    Python可视化物理随机过程-pygame学习笔记2 文章目录 Python可视化物理随机过程---pygame学习笔记2 一.扩散现象的简单的介绍 二.代码实现 三.运行代码的效果展示 四.总结 ...

  8. 编写五子棋的完整python代码_python实现五子棋游戏(pygame版)

    本文实例为大家分享了python五子棋游戏的具体代码,供大家参考,具体内容如下 目录 简介 实现过程 结语 简介 使用python实现pygame版的五子棋游戏: 环境:Windows系统+pytho ...

  9. Python基础学习笔记之(一)

    Python基础学习笔记之(一) zouxy09@qq.com http://blog.csdn.net/zouxy09 前段时间参加微软的windows Azure云计算的一个小培训,其中Pytho ...

最新文章

  1. 技术图文:如何利用BigOne的API制作自动化交易系统 -- 身份验证
  2. 总线的数据传输类型(微机接口技术)
  3. Guidance Package Manager button doesn’t appear in the VS menu
  4. 高通首次推出AI引擎 打包所有软硬件算力
  5. 编程方法学15:指针要点回顾
  6. UML统一建模语言知识体系概述
  7. xml 属性value换行显示_python 标准库之xml.etree.ElementTree
  8. 1分钟完美安装最新 CentOS + Nginx + PHP-FPM + MySQL
  9. Python批量复制文件
  10. c c 语言编程项目实例,实例分享cmake编译一个简单c++项目(demo)
  11. python编程练习:漏洞百出的四则运算器
  12. 常用命令之svnadmin命令
  13. JAVAFX输入法的实现
  14. ffmpeg提取音频数据
  15. 【HDU 杭电 5773 The All-purpose Zero】
  16. 《基础微积分教材中译版》--11.3偏导数
  17. hive向mysql导数据_Mysql Hive 导入导出数据
  18. Scratch软件编程等级考试二级——20200913
  19. string的insert的用法整理
  20. 如何构建一个新闻搜索引擎

热门文章

  1. Vue给Input赋值
  2. JAVA(4)学习笔记:JVM虚拟机上的栈、大驼峰命名法和小驼峰命名法、实参和形参、重载方法、调用栈、递归练习(汉诺塔+斐波那契数列)、数组的定义、数组的初始化、增强for循环。
  3. 如何掌握Facebook自动人脸识别技术?
  4. java转动的风扇课程设计_java风扇功能设计
  5. 【详解】URL及HTTP协议详解
  6. 人类惨败 OpenAI轻取Dota战队 AI为什么总是吊打游戏玩家
  7. 爬虫 第三讲 数据解析
  8. 上采样、下采样、过采样、欠采样
  9. Java操作Excel之EasyExcel、标题、背景色设置
  10. 负载均衡的三种实现方式