python语言编写五子棋小游戏

摘要
这是我基于pygame库做个一个五子棋小游戏,通过上网学习pygame库内的具体函数,以及一些前辈的指导。在这里我们需要绘画棋盘,棋子。棋盘直接调用pygame库中的draw.lines()函数绘画出,再绘画出部分矩阵,充做按钮的角色。棋子我是自己画的,直接调用图片,为它们分别赋予黑棋,白棋的角色,后期好用来判断哪颗是白棋,哪颗黑棋。而棋盘上的各个点都用二维数组表示,棋子的落点位置已经由函数确定了,所以只会落在线与线之间的交界处。而旁边会有处空白的地方提示现在是那颗棋子落下,按钮分为悔棋Regret、重新开始ReStart、退出Quit。当然为了护眼,棋盘的颜色还是很养眼的。

1.引言
1.1论文背景,意义
早在公元595年古人就用瓷来烧制五子棋盘了。所以为了弘扬中国5000年文化,我的期末大作业选择了做五子棋小游戏。我选择的是21x21的棋盘,在这里不得不介绍一下五子棋的历史。首先是棋盘,棋盘由横纵各15条等距离,垂直交叉的平行线构成,在棋盘上,横纵线交叉形成了225个交叉点为对弈时的落子点。邻近两个交叉点的距离要略大于棋子的直径,纵线距离约为2.5厘米,横线约为2.4厘米。
在棋盘上有5个比较特殊的交叉点,用直径约为0.5厘米的,和棋盘横纵线颜色相同的实心小圆点标示出来,这5个点称为“星”。中间的星也称天元,位置在H8,表示棋盘的正中心。
平时下棋,棋子数量不限,以下棋时够用为准。正规的标准数一般定为黑子113枚,白子112枚。
我觉得我选择做五子棋的小游戏不单单只是为了弘扬中国文化,还有就是完成小时候希望做一个有趣的游戏的目标。小时候经常和同学们在纸上玩着五子棋,但使用电脑的时候就会在想该如何做出一个五子棋的小游戏呢。恰好老师推荐了pygame这个库,里面的功能都很好地实现了制作五子棋小游戏的规则。
1.2 实现功能
1)悔棋Regret按钮
2)重新开始ReStart按钮
3)退出Quit按钮
4)点击按钮触发事件
5)点击落子点落下棋子
6)提示用户轮到谁下棋子

2.系统结构
游戏流程图:
python语言编写五子棋小游戏
框架图:
python语言编写五子棋小游戏

用例图:
python语言编写五子棋小游戏
相关模块:
python语言编写五子棋小游戏
首先调用pygame库里的函数定义一个窗口,并给窗口赋予一个五子棋的名字。
python语言编写五子棋小游戏
再调用写好的棋盘函数,按钮函数。
棋盘函数是调用了pygame库里的draw_lines()函数。而按钮函数的则是用draw_rect()函数画出方块,再另外在主函数定义点击哪个区域方框会触发什么事件。解决了pygame库没有按钮的问题。
python语言编写五子棋小游戏
而右上角则留一块区域提示用户现在谁下棋。
python语言编写五子棋小游戏
而这里为了配合游戏更带点古代的感觉,专门上网站下载了古风字体。
是这种字体。
python语言编写五子棋小游戏
3.实现代码
(1)首先导入所需的库函数
python语言编写五子棋小游戏
(2)首先就要确定一个多大的窗体,方便我们确定棋盘要有多大,还要放置三个方框选项按钮,以及一个提示板,所以在这里我们先可以确定在主函数创建一个长1200,宽806的窗体。调用pygame中的设置窗体函数。
python语言编写五子棋小游戏
(3)然后就是要做准备工作,比如线条的粗细、颜色。窗体背景颜色,按钮方框颜色,以及棋盘所需定点位的颜色。
python语言编写五子棋小游戏
(4)然后开始绘制我们需要的棋盘,绘制棋盘函数为chessboard(screen)
在这里先为窗体填充背景颜色
python语言编写五子棋小游戏
使用for循环不停地画着棋盘中的细线
python语言编写五子棋小游戏
python语言编写五子棋小游戏
(5)再画边线的粗线才会有棋盘的感觉,然后就是五个定位点,以及绘制按钮的方框大小,方框外边的粗细。再为按钮填充内容,并赋予古风字体的属性。
(6)再接下来就是绘制棋子函数chess(),分黑棋白棋。color属性=1时为黑色,为2时是白色。再使用pygame库函数加载黑棋白棋的图片,从而让用户看到棋子落在了棋盘上。并且落子的位置是固定的,只会落在线的交接处。
python语言编写五子棋小游戏
(7)再绘制带棋盘的棋子,直接调用先前棋盘、棋子的函数,创建二维数组,因为先前调用了numpy这个函数里的map函数,记录每一个落点棋子的属性。
python语言编写五子棋小游戏

(8)设置棋盘的列表,以及用于重新开始的清空按钮。
python语言编写五子棋小游戏
(9)设置右上角的提示器,每一次落下棋子,都会改变右上角的提示,提示用户当前下棋的角色。
python语言编写五子棋小游戏
(10)再然后就是判断输赢的函数,判断落下的棋子是否有五个相同颜色的棋子连成一条线
python语言编写五子棋小游戏
(11)然后可以开始在主函数调用我们准备好的东西了。
python语言编写五子棋小游戏
这里的意思就是,running就是判断现在是否是胜利,胜利了棋子不可以再落下了。
clear()就是就是把桌面的棋子全部清空。然后map2就是记录上一次的棋子操作情况,用于悔棋的按钮。
python语言编写五子棋小游戏
实现窗口、棋盘、提示器、按钮、棋子。
python语言编写五子棋小游戏
这里则是判断是否游戏结束,结束了就不能落子了。
python语言编写五子棋小游戏

以上就是鼠标监听事件。
4.实验结果:
python语言编写五子棋小游戏