**这是小蚂蚁游戏开发公众号原创的第36篇。

本篇内容包括微信小游戏开发工具中的表格的使用。重点学习表格中的数据的设置,遍历和查找操作,以及如何使用“调试场景”来验证游戏中的逻辑是否正确。

如果你没有任何的游戏开发经验,欢迎阅读我的“人人都能做游戏”系列教程,它会手把手的教你做出自己的第一个小游戏。

上一节中讲过使用表格来存储和处理游戏中的数据。这一节我们直接上手,学习表格中的数据处理,我们将会实现以下的内容:

  • 创建一个10行10列(10x10)的表格,默认值都设置为0

  • 随机的在表格中插入一行数据1

  • 逐行遍历,找到满足条件的行(即整行的数据都是1)

# 创建表格

在“数据区”中点击“新建表格”按钮,创建一个叫做“网格”的全局变量。

会看到一个表格编辑的窗口,点击“新增行”和“新增列”创建一个10行10列的表格。

将所有格子中的数据都设置为“0”,最后看起来应该是这样。

这样一个10x10的所有默认数据为0的表格就创建好了。

# 随机在表格中插入一行数据1

为了方便演示,我在场景中增加了两个按钮,一个叫做“加入一行”,一个叫做“查找匹配”。我们会把插入逻辑和查找逻辑分别放在对应的按钮对象上。

你可以对照着下图添加你的素材。

在“加入一行”对象上创建两个局部变量:行号和列号。

接着,我们直接看代码逻辑。

如果一下看不明白,也无需着急。对着下面的分析再多看几遍。

因为我们的表格一共10行,所以这里我们取了1~10之间的随机整数,作为将要设置的行,并且将这个数字保存在了局部变量“行号”中(通常对于后续需要用到的数据,都会用局部变量来存储)。循环开始前将列号设置为1,因为要从第1列开始依次向后设置,直到第10列。假设随机到了第1行后,开始进入循环,首先会将表格中第1行第1列的数字设置为1,接着第1行第2列,直到第1行第10列后,循环结束。这样第1行中所有的10个数字就都从0变为了1。

接下来,我们验证一下,点击预览场景右侧的下拉小箭头,选择“调试场景”。

调试场景像下面这样,你以后会经常用到。点击“系统全局”可以看到我们创建的全局变量“网格”,鼠标移动网格的数据上,会显示当前网格的数据。

接着点击“加入一行”,可以看到我们为它创建的两个局部变量,“行号”和“列号”。

现在,点击一下场景中的“加入一行”按钮,你会看到“行号”和“列号”的局部变量发生了变化,当前“行号”为9,意味着我们随机到了数字9,即将表格中第9行的所有数据设置成了1。

看一下系统全局中的网格数据,是否是第9行被设置为了1。

第9行的数据确实都被设置为了1,证明了我们逻辑没有问题。你可以多点击几次“加入一行”按钮,多设置几行表格数据,在全局变量中查看。

# 查找满足条件的行

我们的查找逻辑是这样的:从上往下,依次查找表格中的每一行,如果一行中所有的数据都是1,那么记录一下这一行的行号,直到表格查找结束。

首先,我们创建4个局部变量。

“行号”和“列号”用于循环,“都是1”用来表示当前一行的数据是否都是1,如果满足条件的话设置为1,不满足的话设置为0,

新建一个列表局部变量“匹配行”,用于记录当前满足条件的行号,因为表格中可能会有多行满足条件,所以这里我们使用列表来记录所有满足条件的行号。

下面我们来看一下查找匹配的逻辑:

这里有一个难点就是“双重循环”,如果你遍历的数据只有一行的话,那么只需要一个循环就可以了,但是,当你要遍历10行10列的数据时,就需要用到“双重循环”。一个循环用于行,一个循环用于列。它只是看上去复杂,认真的分析一下其实不难理解。

我们从表格的第一行开始检查,想象一下我们从表格中拿出了第一行数据,然后从这一行数据的第一个一直检查到最后一个,看看是否有数字不为1,只要有一个数字不为1,就证明这一行不符合条件,就没有必要接着往下检查了。检查完一行后,如果它符合条件我们就把这一行的行号记录下来,放到“匹配行”的列表中。接下来再取出第二行,进行同样的操作,直到取完第十行为止。

点击“调试场景”,检查一下逻辑是否有问题,先点击几次“加入一行”按钮,随机的在表格中加入几行数据。

接着点击“查找匹配”按钮,选择“查找匹配”,看一下“匹配行”局部变量的数据。

如图,找到了第7,6,1行是满足条件的。

小提示:因为我们总是在列表中的第1项插入数据,所以最后的结果是[7,6,1],是倒序。真实过程是这样的,检查到第1行满足条件,插入列表,列表变为[1],接着检查到第6行满足条件,插入列表,列表变为[6,1],接着第7行满足条件,插入列表,列表变为[7,6,1]。

总结一下:

这一节我们学习了表格的创建,设置,遍历和查找操作。并且学习了使用“调试场景”在游戏运行时查看全局变量和局部变量,来验证逻辑是否正确。

练一下:

试着实现在表格中随机加入一列数据的功能,并且在查找时将所有满足条件的行和列都找出来。

欢迎关注公众号:小蚂蚁游戏开发。了解更多与做游戏有关的原创内容。

有任何的想法或者疑问,欢迎添加我的微信,我会尽可能的为你提供帮助。

微信小游戏开发实战教程2-使用表格处理数据相关推荐

  1. 微信小游戏开发实战教程13-随机生成形状功能的实现

    微信小游戏开发实战系列的第13篇. 本节内容包括:通过使用列表来实现可以设置权重的随机功能,以及游戏中的随机生成形状功能的具体实现. 如果你没有任何的游戏开发经验,欢迎阅读我的"人人都能做游 ...

  2. 微信小游戏开发实战教程15-关卡编辑器的制作以及关卡分享功能的实现

    微信小游戏开发实战系列的第15篇. 本节主要内容有游戏中的关卡编辑器的实现思路以及如何利用分享功能将自己制作的关卡与好友分享. 如果你没有任何的游戏开发经验,欢迎阅读我的"人人都能做游戏&q ...

  3. 微信小游戏开发实战教程8-消除处理

    这是小蚂蚁游戏开发公众号原创的第42篇,微信小游戏开发实战系列的第8篇,点击上方的#微信小游戏开发实战话题可以查看本系列的所有内容. 本篇主要内容包括如何对网格上满足消除条件的方块进行消除处理. 如果 ...

  4. 微信小游戏开发实战教程14-闯关模式的实现

    这是微信小游戏开发实战系列的第14篇. 本文主要内容是介绍精致1010闯关模式的设计和实现思路. 如果你没有任何的游戏开发经验,欢迎阅读我的"人人都能做游戏"系列教程,它会手把手的 ...

  5. 微信小游戏开发实战教程11-使用本地缓存

    这是微信小游戏开发实战系列的第11篇. 本节主要内容:使用本地缓存来记录玩家的设置以及各种类型数据的本地缓存和读取操作. 如果你没有任何的游戏开发经验,欢迎阅读我的"人人都能做游戏" ...

  6. 微信小游戏开发实战教程系列开启

    **这是小蚂蚁游戏开发公众号原创的第35篇. 在写完了"人人都能做游戏"的新手系列教程后,我收到了不少反馈.有人告诉我,因为看了我的系列教程做出了自己人生的第一个小游戏.也有人告诉 ...

  7. 微信小游戏开发实战教程12-广告的开通和接入

    微信小游戏开发实战系列的第12篇, 本节内容主要包括:如何尽快的开通广告功能,以及如何将广告接入到微信小游戏中. 如果你没有任何的游戏开发经验,欢迎阅读我的"人人都能做游戏"系列教 ...

  8. 微信小游戏开发实战教程3-绘制网格

    **这是小蚂蚁游戏开发公众号原创的第38篇.本篇主要内容包括使用微信小游戏开发工具动态的绘制一个网格,并通过使用变量来控制最终生成的网格的效果. 如果你没有任何的游戏开发经验,欢迎阅读我的" ...

  9. 微信小游戏开发新手教程14-整合到一起,做出你的小游戏

    终于到了真正动手做游戏的时刻,在这一节里,我会带你从头开始将我们的"太空保卫者"按照设计方案制作出来.这一节里的内容会非常的多,一遍消化不了,可以多读几遍.别着急,慢慢来. 首先, ...

最新文章

  1. 性能:15个JavaScript本地存储技术的函数库和工具
  2. 遍历页面上所有的textBox
  3. java hibernate dto_java – 正确使用Entity和DTO在Restful Web服务中...
  4. 中国摊铺设备市场趋势报告、技术动态创新及市场预测
  5. [zabbix]解决binlog日志过大/web界面中文乱码问题
  6. Kubernetes 小白学习笔记(1)--基本概念1
  7. 简约的手机APP自适应下载页HTML源码
  8. 王码86五笔使用技巧
  9. dnf脚本是php,易语言:DNF自动脚本
  10. PS(Photoshop)去水印的方法
  11. python求均值函数_python求列表平均值函数
  12. 企业如何做好数据防泄漏需求分析
  13. python成都_Python抓取成都房价信息
  14. [kuangbin]专题三 Dancing Links Squiggly Sudoku HDU - 4069【DFS】【精确覆盖】
  15. linux 如何解压缩 .tar.gz文件
  16. Caffe和caffe2漫谈
  17. HAUTOJ 1262: 魔法宝石 24行代码
  18. Windows下安装Python pyramid,并运行一个pyramid的Helloworld项目
  19. 详述如何退出 Vim 编辑器
  20. Spring boot 项目 执行 jar 包时 显示 没有主清单属性

热门文章

  1. woocommerce 下单失败也会清空购物车
  2. [iOS]分享文件到QQ好友或微信好友
  3. Android手机开发常用数据库,android开发常用的数据库
  4. python3报错: takes 1 positional argument but 2 were given 问题解决。
  5. Web3j使用教程(1)
  6. van-field 校验手机号码格式
  7. js 万年历农历转阳历 方法_JS实现带阴历的日历功能详解
  8. Android自定义View实现相机对焦框
  9. NVIDIA安装驱动不成功的解决方式
  10. 层次softmax (hierarchical softmax)理解