暑假快结束了。暑假快结束的时候,边肖特意为大家准备了一个小游戏——连连看。希望通过这个小游戏给大家放松一下,迎接新学年的到来。

连连看想必大家都玩过。相同的图片可以连在一起排除,但前提是图片连接的路径应该是直线,或者“L”形(连接线有一圈)或者类似“U”形(连接线有两圈)。那么程序是如何实现的呢?我们先来看看整个设计思路:

01.

游戏界面设计

1).首先设计整体界面,如下图所示:

运行程序后,首先会弹出一个选择框,是否从第一级开始,选择第一级,点击游戏开始游戏。我们设计了一个菜单,只需点击游戏/开始游戏!

02.

把鸣人角色放到画布上

接下来就是把游戏角色放到画布上。在这里我们选择我最喜欢的火影忍者头像,哈哈!

1).首先,程序指定每种图片

图片可以出现四次,然后如果要实现一个8×8大小的图片图,那么8×8/4 =的图片有16种。我们将每种类型的图片编码为一个数字,比如上图中鸣人的数字是0,KINOMOTO SAKURA的数字是1。然后,对应图片,将获得16(类别)x4(每个类别的图片数)=64张图片,如下图所示:

2).然后,我们混淆了上面的图片

根据画布上的位置,得到连连看的图片界面。

3).下图显示了一些代码

该函数初始化画布图片:

首先,是将每一个类别的小图片都添加self.num张,形成一个self.picsKind * self.num大小的一维数组;然后,将小图片的索引顺序进行打乱;最后,是将小图片的索引转化为一个二维数组,也就是呈现给大家的一个正方形的界面。

下面是self.pics中存储的图片,通过函数self得到它对应的坐标。get_left_top_point,并根据此坐标将图片放置在画布上的相应位置。

其中一个应用很巧妙,就是用索引作为判断是否是一种图片的标志(后面有代码示例),然后将图片剔除,如下图所示。

03.

核心算法解释

敲黑板,画重点。只有满足以上三个条件的图片才能淘汰。程序如何判断他们是否符合淘汰条件?

我们以直线连接为例。上图中可以直线连接的两个佐助横纵坐标分别为(2,3)和(3,3),那么我们就判断他们x坐标(直线连接,横纵坐标肯定有一个相等,就不用判断相等的坐标了);如果他们中间没有其他的图片,那么他们就可以被连接然后消掉,否则就不可以;

例如,如果在(4,4)和(4,6)的KINOMOTO樱之间有另一个人,他们就不能连接。其他案件也是类似的判决。下图显示了一些代码:

以上3种连接方式(直接连接、L型连接、U型连接)。当我们判断两者可以连接时,可以使用tkinter的canvas中的delete函数删除图片。部分程序如下:

当我们删除所有图片时,程序会弹出一个提示框来祝贺我们的成功。下面,边肖将给你带来一个视频秀,看看边肖有多能干。

(连连看跑步视频)

怎么看视频,感觉好吗?唯一美中不足的是没有加音。有兴趣的话可以用完整的源代码改一下,看看能不能优化添加声音,这样效果更好!

需要源码,后台输入:【连连看】

1.《火影忍者连连看 太好玩了,我用Python写了个火影忍者版的连连看》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《火影忍者连连看 太好玩了,我用Python写了个火影忍者版的连连看》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/shehui/1079525.html