# 基于 Python 制作的 24 点生成器
**导语**
看了下上周那篇推文,阅读量相对有些惨淡,看来大家都不太喜欢那个主题(说实话我也不喜欢)。这周还是来点正常的吧,每月必出的 python 制作小游戏系列文章。本期我们将制作一个 24 点小游戏,让我们愉快地开始吧~
**开发工具**
**Python 版本:**3.6.4
**相关模块:**
pygame 模块;
以及一些 Python 自带的模块。
**环境搭建**
安装 Python 并添加到环境变量,pip 安装需要的相关模块即可。
**先睹为快**
在 cmd 窗口运行"**Game16.py**"文件即可。
**效果如下:**
![](https://www.writebug.com/myres/static/uploads/2022/5/18/fea02e02480ff0883abd264a79721eaa.writebug)
**原理简介**
**游戏规则(改编自维基百科):**
从 1~10 这十个数字中随机抽取 4 个数字(可重复),对这四个数运用加、减、乘、除和括号进行运算得出 24。每个数字都必须使用一次,但不能重复使用。
**逐步实现:**
Step1:制作 24 点生成器
既然是 24 点小游戏,当然要先定义一个 24 点游戏生成器啦。主要思路就是随机生成 4 个有解的数字,且范围在 1~10 之间,代码实现如下:
![](https://www.writebug.com/myres/static/uploads/2022/5/18/95356f74b61a2291f22575dd38285a38.writebug)
在验证 4 个数字是否有解并求出所有解部分,我直接暴力枚举然后去重了,感兴趣的同学可以自己再优化一下求解算法(有数字重复的时候)。我的代码如下图所示,其实就是递归枚举所有排序然后一一验证是否有解
![](https://www.writebug.com/myres/static/uploads/2022/5/18/6f87eb8e4c80816e4b0982640c40a0de.writebug)
**Step2**:定义游戏精灵类
因为玩家需要通过鼠标点击来操作卡片,这时候就涉及到一些碰撞检测。所以先定义一些必要的游戏精灵类。
**① 卡片类**
卡片类的定义也很简单,在屏幕上根据被赋予的属性值来显示自身即可。当然之后也需要根据用户的操作来改变这些属性值(内容、颜色、字体等)并在屏幕上根据属性的改变而改变显示状态即可。具体而言代码实现如下:
![](https://www.writebug.com/myres/static/uploads/2022/5/18/a3481edea07a6bce73da1b33087b76bf.writebug)
**② 按钮类**
按钮类和卡片类类似,唯一的不同点就是在用户点击按钮时需要根据该按钮的功能来响应用户的本次点击操作(即实现一次该功能)。因此只需要继承卡片类,然后再定义一个响应用户点击按钮事件的回调函数即可。代码实现如下:
![](https://www.writebug.com/myres/static/uploads/2022/5/18/869c9081ed4522172b2a01f06bf9a101.writebug)
**Step3**:实现游戏主循环
先构思一下怎么设计游戏主界面,个人的简单设计草图如下(不是特别走心的设计草图 T_T):
![](https://www.writebug.com/myres/static/uploads/2022/5/18/8cc62afe9df77356ce56021ac92d1f2f.writebug)
OK,开搞。先初始化、加载必要的素材和定义必要的变量,代码实现如下:
![](https://www.writebug.com/myres/static/uploads/2022/5/18/ff854f26d12b7bf23b722e93be82c9db.writebug)
游戏主循环主要分三个部分,首先是按键检测:
![](https://www.writebug.com/myres/static/uploads/2022/5/18/5c59eaa2585243a55ebb415420d56f82.writebug)
根据检测结果更新卡片状态和一些变量:
![](https://www.writebug.com/myres/static/uploads/2022/5/18/129b197ef1ec70825af7e95977ea9f61.writebug)
当有两个数字和一个运算符被点击时,则执行被点击数字 1{+/-/×/÷}被点击数字 2 操作(数字 1、2 根据点击顺序确定),并进一步更新卡片属性和一些必要的变量:
![](https://www.writebug.com/myres/static/uploads/2022/5/18/559058883392741de2be32226dda2bd9.writebug)
最后根据各个卡片的属性在屏幕上显示各个卡片,若游戏胜利/游戏失败,则同时显示游戏胜利/游戏失败提示框:
![](https://www.writebug.com/myres/static/uploads/2022/5/18/ad436dae3013f0ffcefc2e7cd9be13d9.writebug)
All Done 完整源代码详见相关文件。
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
资源包含文件:设计报告word+源码 **Python 版本:**3.6.4 相关模块: pygame 模块; 以及一些 Python 自带的模块。 环境搭建 安装 Python 并添加到环境变量,pip 安装需要的相关模块即可。 从1~10这十个数字中随机抽取4个数字(可重复),对这四个数运用加、减、乘、除和括号进行运算得出24。每个数字都必须使用一次,但不能重复使用。 详细介绍参考:https://biyezuopin.blog.csdn.net/article/details/124839686
资源推荐
资源详情
资源评论
收起资源包目录
基于Python制作的24点游戏生成器.zip (10个子文件)
game16
设计报告.docx 2.15MB
twentyfourpoint.py 11KB
resources
audios
lose.wav 866KB
win.wav 909KB
warn.wav 7KB
LICENSE 1KB
__init__.py 65B
README.md 4KB
modules
game.py 5KB
__init__.py 64B
共 10 条
- 1
资源评论
- lijian1232312022-11-06资源内容总结的很到位,内容详实,很受用,学到了~
shejizuopin
- 粉丝: 1w+
- 资源: 1288
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功