基于 Python 制作的 24 点生成器
导语
看了下上周那篇推文,阅读量相对有些惨淡,看来大家都不太喜欢那个主题(说实话我也不喜欢)。这周还是来点正常的吧,每月必出的 python 制作小游戏系列文章。本期我们将制作一个 24 点小游戏,让我们愉快地开始吧~
开发工具
Python 版本: 3.6.4
相关模块:
pygame 模块;
以及一些 Python 自带的模块。
环境搭建
安装 Python 并添加到环境变量,pip 安装需要的相关模块即可。
先睹为快
在 cmd 窗口运行" Game16.py "文件即可。
效果如下:
原理简介
游戏规则(改编自维基百科):
从 1~10 这十个数字中随机抽取 4 个数字(可重复),对这四个数运用加、减、乘、除和括号进行运算得出 24。每个数字都必须使用一次,但不能重复使用。
逐步实现:
Step1:制作 24 点生成器
既然是 24 点小游戏,当然要先定义一个 24 点游戏生成器啦。主要思路就是随机生成 4 个有解的数字,且范围在 1~10 之间,代码实现如下:
在验证 4 个数字是否有解并求出所有解部分,我直接暴力枚举然后去重了,感兴趣的同学可以自己再优化一下求解算法(有数字重复的时候)。我的代码如下图所示,其实就是递归枚举所有排序然后一一验证是否有解
Step2 :定义游戏精灵类
因为玩家需要通过鼠标点击来操作卡片,这时候就涉及到一些碰撞检测。所以先定义一些必要的游戏精灵类。
① 卡片类
卡片类的定义也很简单,在屏幕上根据被赋予的属性值来显示自身即可。当然之后也需要根据用户的操作来改变这些属性值(内容、颜色、字体等)并在屏幕上根据属性的改变而改变显示状态即可。具体而言代码实现如下:
② 按钮类
按钮类和卡片类类似,唯一的不同点就是在用户点击按钮时需要根据该按钮的功能来响应用户的本次点击操作(即实现一次该功能)。因此只需要继承卡片类,然后再定义一个响应用户点击按钮事件的回调函数即可。代码实现如下:
Step3 :实现游戏主循环
先构思一下怎么设计游戏主界面,个人的简单设计草图如下(不是特别走心的设计草图 T_T):
OK,开搞。先初始化、加载必要的素材和定义必要的变量,代码实现如下:
游戏主循环主要分三个部分,首先是按键检测:
根据检测结果更新卡片状态和一些变量:
当有两个数字和一个运算符被点击时,则执行被点击数字 1{+/-/×/÷}被点击数字 2 操作(数字 1、2 根据点击顺序确定),并进一步更新卡片属性和一些必要的变量:
最后根据各个卡片的属性在屏幕上显示各个卡片,若游戏胜利/游戏失败,则同时显示游戏胜利/游戏失败提示框:
All Done 完整源代码详见相关文件。
参考文献
- 基于J2EE平台的工作流管理系统的运行引擎和客户端及管理工具的设计与实现(西北大学·门浩)
- 南洋学院网络新闻发布系统(电子科技大学·诸国华)
- 基于J2EE/XML的分布式WebGIS平台系统设计与实现(西北大学·郑建功)
- 基于SSH架构的个人空间交友网站的设计与实现(北京邮电大学·隋昕航)
- 基于J2EE架构的学术会议管理网站自动生成系统(山东大学·姜文峰)
- 分布式智能网络爬虫的设计与实现(中国科学院大学(工程管理与信息技术学院)·何国正)
- 基于网络爬虫的电影集成搜索系统设计与实现(江西农业大学·江沛)
- 制造企业生产管理系统的设计与实现(吉林大学·李青峰)
- 南洋学院网络新闻发布系统(电子科技大学·诸国华)
- 可选运行框架的J2EE Web应用自动生成(山东大学·段雷)
- 基于SSH框架的博客用户分享平台的设计与实现(河北工业大学·刘磊)
- 基于SSH框架的博客用户分享平台的设计与实现(河北工业大学·刘磊)
- 基于J2EE架构实时监控系统的应用研究(武汉理工大学·王献刚)
- 基于B/S结构的图书销售管理系统的设计与实现(吉林大学·杨兴越)
- 基于B/S结构的图书销售管理系统的设计与实现(吉林大学·杨兴越)
本文内容包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主题。发布者:毕设工坊 ,原文地址:https://bishedaima.com/yuanma/36059.html