Python游戏开发,pygame模块,Python实现24

往期回顾

Python实现经典吃豆豆小游戏

Python实现消消乐小游戏

Python实恐龙跳一跳小游戏现

Python实现简易版飞机大战小游戏

Python实现俄罗斯方块小游戏

Python实现外星人入侵小游戏

Python实现“小兔子和Bun”游戏

Python实现八音符小游戏

Python实现拼图小游戏

Python实现滑雪小游戏

Python实现经典90坦克大战

Python实现FlappyBird的小游戏

Python实现塔防小游戏

Python实现接水果和金币小游戏

Python实现推箱子小游戏

前言

本期我们将制作一个24点小游戏,让我们愉快地开始吧~

效果展示

在这里插入图片描述

开发工具

Python版本: 3.6.4

相关模块:

pygame模块;

以及一些Python自带的模块。

环境搭建

安装Python并添加到环境变量,pip安装需要的相关模块即可。
原理简介

游戏规则(改编自维基百科):

从1~10这十个数字中随机抽取4个数字(可重复),对这四个数运用加、减、乘、除和括号进行运算得出24。每个数字都必须使用一次,但不能重复使用。详见:

https://zh.wikipedia.org/wiki/24%E7%82%B9
复制代码

逐步实现:

Step1**:制作24点生成器**

既然是24点小游戏,当然要先定义一个24点游戏生成器啦。主要思路就是随机生成4个有解的数字,且范围在1~10之间,代码实现如下:

在验证4个数字是否有解并求出所有解部分,我直接暴力枚举然后去重了,感兴趣的同学可以自己再优化一下求解算法(有数字重复的时候)。我的代码如下图所示,其实就是递归枚举所有排序然后一一验证是否有解:

图片

Step2**:定义游戏精灵类**因为玩家需要通过鼠标点击来操作卡片,这时候就涉及到一些碰撞检测。所以先定义一些必要的游戏精灵类。

①卡片类

卡片类的定义也很简单,在屏幕上根据被赋予的属性值来显示自身即可。当然之后也需要根据用户的操作来改变这些属性值(内容、颜色、字体等)并在屏幕上根据属性的改变而改变显示状态即可。具体而言代码实现如下:
在这里插入图片描述

②按钮类

按钮类和卡片类类似,唯一的不同点就是在用户点击按钮时需要根据该按钮的功能来响应用户的本次点击操作(即实现一次该功能)。因此只需要继承卡片类,然后再定义一个响应用户点击按钮事件的回调函数即可。代码实现如下:

图片

Step3**:实现游戏主循环**先构思一下怎么设计游戏主界面,个人的简单设计草图如下(不是特别走心的设计草图T_T):图片

OK,开搞。先初始化、加载必要的素材和定义必要的变量,代码实现如下:

图片

游戏主循环主要分三个部分,首先是按键检测:
在这里插入图片描述

根据检测结果更新卡片状态和一些变量:
在这里插入图片描述

当有两个数字和一个运算符被点击时,则执行被点击数字1{+/-/×/÷}被点击数字2操作(数字1、2根据点击顺序确定),并进一步更新卡片属性和一些必要的变量:

图片

最后根据各个卡片的属性在屏幕上显示各个卡片,若游戏胜利/游戏失败,则同时显示游戏胜利/游戏失败提示框:

图片

文章到这里就结束了,感谢你的观看,Python24个小游戏系列,下篇文章分享乒乓球小游戏

为了感谢读者们,我想把我最近收藏的一些编程干货分享给大家,回馈每一个读者,希望能帮到你们。

干货主要有:

① 2000多本Python电子书(主流和经典的书籍应该都有了)

② Python标准库资料(最全中文版)

③ 项目源码(四五十个有趣且经典的练手项目及源码)

④ Python基础入门、爬虫、web开发、大数据分析方面的视频(适合小白学习)

⑤ Python学习路线图(告别不入流的学习)

⑥ 两天的Python爬虫训练营直播权限

All done~详见个人简介或者私信获取完整源代码。。