今天跟大家伙儿唠唠我昨天搞的那个“蔬菜水果连连看”小游戏,纯属自己瞎琢磨,记录一下,以后也好回顾。
事情是这样的,昨天在家闲的没事儿,突然就想起来小时候玩的连连看游戏,那叫一个上头!就寻思着自己能不能也整一个出来。
说干就干!
我得找素材,这游戏嘛肯定得有好看的图片。于是我就在网上搜罗了一堆蔬菜水果的图片,什么苹果、香蕉、西瓜、白菜、萝卜啥的,全都下载下来,存在一个文件夹里,准备用。
图片有了,接下来就是考虑怎么实现了。这连连看的核心就是俩:一是图片要随机排布,二是得判断两个图片能不能连起来。
我先从最简单的开始,先把图片显示在屏幕上再说。我用了个循环,把文件夹里的图片一张张读出来,然后用pygame(一个python游戏库)显示出来。
问题来了,图片都挤在一块儿了,乱七八糟的。
那咋办?
得给它们安排个位置!
我就定义了一个二维数组,相当于一个棋盘,每个格子里放一张图片。为了让图片随机一点,我用了random模块,随机从图片列表里取图片,放到棋盘的格子里。
这下图片总算分开显示了,看着像那么回事儿了。
接下来就是重头戏了,怎么判断两个图片能不能连起来?
这可把我给难住了。
我想了半天,连连看嘛最多只能用三条线连起来。那我就分情况讨论:
如果两个图片直接相邻,那肯定能连起来。 这个简单,判断一下坐标就行。
如果两个图片在同一行或者同一列,中间没有障碍,也能连起来。 这个也好办,循环判断一下中间是不是空的就行。
如果两个图片不能直接连起来,那就看看能不能用两条线连起来。 也就是说,找到一个中间点,第一个图片能和中间点连起来,中间点也能和第二个图片连起来。
如果还不行,那就看看能不能用三条线连起来。 这个就更复杂了,得找两个中间点。
我把这些情况都用代码实现了一遍,写了一大堆if else,自己都快绕晕了。
好不容易,总算是能判断两个图片能不能连起来了。
判断能连起来了,下一步就是消掉它们。
这个简单,把它们对应的棋盘格设置为空就行了。
然后我加了个计时器,规定时间内消完所有图片就算赢。
为了增加难度,我还加了个洗牌功能,如果实在连不下去,可以把图片重新排列一下。
我把游戏界面美化了一下,加了个背景音乐,看着还挺像那么回事儿的。
整个过程下来,磕磕绊绊的,遇到了不少坑,但总算是把这个“蔬菜水果连连看”给做出来了。虽然画面简陋,bug也肯定不少,但自己玩玩还是挺有意思的。
这回实践主要学到了:
pygame的基本用法
随机数的使用
二维数组的操作
算法设计(判断两个图片能不能连起来)
以后有时间再完善一下,比如加个闯关模式,增加难度,让游戏更有挑战性。