所有消除游戏背后都有一张看不见的网格

简介: 嗨!大家好,我是小蚂蚁。在正式开始讲具体类型的消除游戏之前,我们会先用几节讲一下所有消除游戏的共同特点。是的,所有的消除游戏都有着一些共性,了解了这些之后,你就会发现所有的消除游戏在你眼里都“差不多”。试着看下面的 6 种不同类型的消除游戏的截图,找找它们的共同特点。

关键字:消除游戏教程,消除游戏制作,代码制作,小白学习,学习游戏,零代码开发,微信小游戏制作工具

嗨!大家好,我是小蚂蚁。

在正式开始讲具体类型的消除游戏之前,我们会先用几节讲一下所有消除游戏的共同特点。是的,所有的消除游戏都有着一些共性,了解了这些之后,你就会发现所有的消除游戏在你眼里都“差不多”。

试着看下面的 6 种不同类型的消除游戏的截图,找找它们的共同特点。

image.png

找到共同的特点了吗?没找到?别急着去向下看答案,花点儿时间再看一会儿,敏锐的观察力对于一个游戏开发者来讲很重要。

下面我们来揭晓答案,上图中的每个游戏都是按照固定的行列进行布局,有 7 行 7 列,有 10 行 10 列,有 20 行 10 列。这样的行列布局是不是特别的像一个网格(再看看左下角的 1010 游戏的网格)?这就是我们今天要讲的,所有消除游戏背后都有的那张看不见的“网格”。

严格来说现在有一类消除游戏是完全基于物理的,例如前段时间很火的【合成大西瓜】,这类消除游戏背后是不需要一张“网格”的,因为里面的图标位置是完全由物理设置的。

先理论

可以说网格状的布局是一个消除游戏的起点,在游戏开始之前,至少你要先把游戏布局设置好,之后所有的操作都是基于这个布局进行的。

image.png

假设,我们要制作一个消除游戏,它有着 6 行 6 列的布局,上方的这个 6x6 的网格,就是它背后的那张看不见的“网”。要实现这样的布局,我们应该从哪里着手呢?首先,我们需要先来了解一些简单的数学知识

image.png

如图,我们为这张网格增加了一个坐标系,水平方向上的 x 轴,和垂直方向上的 y 轴。坐标轴的中点(0,0)刚好是整张网格的中心点。到现在为止,我们有了一些信息了,我们现象出了一个游戏的网格布局(当然是想象出来的,因为你还没有做出来呢),然后为这张网格设定了一个坐标系,接着,我们要做的就是将所有的元素按照这个网格布局一个一个的摆放到上面。

元素指的是消除游戏中的一个图标,在这个系列教程中,我们把消除游戏中可操作的图标称作元素。

通常,元素的大小是会提前知道的,例如你要做的消除游戏图标的大小是 100x100,在进行接下来的计算之前,让我们先梳理一下当前已经知道的一些条件。

image.png

好了,接下来我们将使用这 3 个已知的数据,来计算出网格左下角起点的位置。

image.png

如图,根据已知的三个条件,我们可以计算出网格左下角第一个格子的中点的位置。

image.png

计算公式可以对照着上图看一下,应该能够看懂,还是看不懂的话,那就自己在纸上画一画,数一数。

这里我们为什么要选择左下角的第一个格子的位置当作起点位置呢?因为我们将会从左向右,从下向上,一行一行的逐个设置每个元素的位置,直到所有的元素都被安放在了正确的位置为止。

你当然也可以选择把左上角当作起点,然后从上向下开始设置,你也可以把右下角当作起点,从右向左开始设置,起点的设置有时根据个人的习惯,比如过我就比较习惯于从左下角开始。

到目前为止,我们已知的数据又多了一项。

image.png

根据这些已知数据,我们就能够做一些更厉害的事情了,那就是可以计算出网格中任何一个指定行号列号的格子的位置。

image.png

如图,我们为网格标注出了行号和列号,绿色的点代表网格中任意一个格子的位置(通过行号和列号我们可以标示出网格中任意一个格子的确切位置)。根据已知的条件,我们可以获得任意格子位置的计算公式:

image.png

到此,所有的前提都已经具备了,下一步需要做的就是根据你所使用的编程语言或者游戏引擎,把所有的元素按照需要的网格布局挨个的放上去就可以了。

image.png

这是一段实现流程的描述,根据上方我们已知和推导出的前提条件,只需要使用两个循环,就可以一行一行的逐个创建并设置元素了。

再实践

接着,我们来看一下网格布局在微信小游戏制作工具中的具体实现吧!

首先,准备一些变量,这些变量根据名字理解即可。

image.png

接下来看一下创建网格布局的积木逻辑。

image.png

很简单,就是上方理论部分我们讲过的两个计算公式的应用。

最后,预览一下场景,让我们来欣赏一下创建元素的过程吧!

image.png

我特意在每个元素创建之间插入了一点儿时间间隔,这样就能看到如图中的一行一行的,从左到右,从下到上的创建过程了。

网格布局是一个消除游戏的起点,有了这个起点之后,我们才能够继续做出一些更神奇的事情。

作为一个游戏的开发者,你应该具备一双可以透视游戏表象的眼睛,看到那张玩家所看不到的消除游戏背后的网。再回过头来看看最上方的那张包含了各种类型的消除游戏的图片,你看到它们各自背后的那张“网格”了吗?

我是会做游戏也会教你做游戏的小蚂蚁,想学习做游戏的话,关注我的就对啦!

自己学习没氛围学不下去?遇到问题无人解答?缺少经验不知该如何前行?......欢迎加入小蚂蚁的游戏开发课,不只是一门课,而是围绕着新手学习做游戏有关的一整套服务。致力于帮助更多的人学会做游戏并做出自己的游戏,欢迎来跟一百多位同学一起学习做游戏。【点击这里】了解课程服务详情。

这里是小蚂蚁的小游戏系列,闲暇之余希望能给你带来片刻的放松和愉悦。无需下载安装,点击下方的游戏卡片就可以直接玩啦!










也欢迎加个微信,交个朋友,朋友圈每日分享与做游戏有关的知识和内容,可以来围观。备注“学习做游戏”可免费领取学习做游戏的原创教程资料。接受付费咨询,不闲聊,望见谅。

相关文章
|
11月前
|
传感器 人工智能 监控
智慧工地 AI 算法方案
智慧工地AI算法方案通过集成多种AI算法,实现对工地现场的全方位安全监控、精准质量检测和智能进度管理。该方案涵盖平台层、展现层与应用层、基础层,利用AI技术提升工地管理的效率和安全性,减少人工巡检成本,提高施工质量和进度管理的准确性。方案具备算法精准高效、系统集成度高、可扩展性强和成本效益显著等优势,适用于人员安全管理、施工质量监控和施工进度管理等多个场景。
547 0
|
自然语言处理 开发者 异构计算
社区供稿 | Llama3-8B中文版!OpenBuddy发布新一代开源中文跨语言模型
此次发布的是在3天时间内,我们对Llama3-8B模型进行首次中文跨语言训练尝试的结果:OpenBuddy-Llama3-8B-v21.1-8k。
|
机器学习/深度学习 人工智能 并行计算
GPU
GPU
390 1
|
7月前
|
消息中间件 Java 微服务
微服务——SpringBoot使用归纳——Spring Boot中集成ActiveMQ——发布/订阅消息的生产和消费
本文详细讲解了Spring Boot中ActiveMQ的发布/订阅消息机制,包括消息生产和消费的具体实现方式。生产端通过`sendMessage`方法发送订阅消息,消费端则需配置`application.yml`或自定义工厂以支持topic消息监听。为解决点对点与发布/订阅消息兼容问题,可通过设置`containerFactory`实现两者共存。最后,文章还提供了测试方法及总结,帮助读者掌握ActiveMQ在异步消息处理中的应用。
322 0
|
存储 数据采集 XML
使用Crawler实例进行网页内容抓取
使用Crawler实例进行网页内容抓取
|
传感器 监控 物联网
无线传感器网络的基本架构及其广泛应用
无线传感器网络的基本架构及其广泛应用
1022 1
|
Unix Linux 开发工具
linux笔记 diff及patch的制作与使用
这篇文章是关于Linux系统中使用`diff`命令生成补丁文件以及使用`patch`命令应用这些补丁的详细教程和实战案例。
448 2
linux笔记 diff及patch的制作与使用
|
数据采集 机器学习/深度学习 数据挖掘
R语言数据清洗:高效处理缺失值与重复数据的策略
【8月更文挑战第29天】处理缺失值和重复数据是数据清洗中的基础而重要的步骤。在R语言中,我们拥有多种工具和方法来有效地应对这些问题。通过识别、删除或插补缺失值,以及删除重复数据,我们可以提高数据集的质量和可靠性,为后续的数据分析和建模工作打下坚实的基础。 需要注意的是,处理缺失值和重复数据时,我们应根据实际情况和数据特性选择合适的方法,并在处理过程中保持谨慎,以避免引入新的偏差或错误。
|
JSON JavaScript 小程序
组件的插槽以及组件通信
这篇文章介绍了微信小程序中组件的插槽使用和组件间通信的方法,包括单个插槽、多个插槽的运用,以及属性绑定、事件绑定和获取组件实例的通信方式。
组件的插槽以及组件通信
|
C语言
C语言程序设计核心详解 第二章:数据与数据类型 4种常量详解 常见表达式详解
本文详细介绍了C语言中的数据与数据类型,包括常量、变量、表达式和函数等内容。常量分为整型、实型、字符型和字符串常量,其中整型常量有十进制、八进制和十六进制三种形式;实型常量包括小数和指数形式;字符型常量涵盖常规字符、转义字符及八进制、十六进制形式;字符串常量由双引号括起。变量遵循先定义后使用的规则,并需遵守命名规范。函数分为标准函数和自定义函数,如`sqrt()`和`abs()`。表达式涉及算术、赋值、自增自减和逗号运算符等,需注意运算符的优先级和结合性。文章还介绍了强制类型转换及隐式转换的概念。
388 2