微信小游戏开发实战系列的第13篇。

本节内容包括:通过使用列表来实现可以设置权重的随机功能,以及游戏中的随机生成形状功能的具体实现。

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

在精致1010游戏中,包含 10 种不同类型的形状,这一节我们就来讲一下如何通过使用列表来控制不同形状的生成概率。

如图是游戏中使用的 10 种类型的形状,我为其进行了编号,有的类型只包含一种,如 7, 8, 10,有的类型包含两种,如 1,2,3,4,有的类型包含四种,如 5,6,9。

在游戏的下方存在 3 个形状槽,每个形状槽中都会随机的产生一种形状。我们可以通过设置不同类型的形状的生成概率来调整游戏的难度,例如 1,8 两种类型的形状出现的概率高的话,游戏的难度就会增大。反之,难度就会减小。

下面,我们就来实现一下如何根据设定的概率随机的生成形状。

首先,创建一个列表,用于设置 10 种类型的形状的权重(权重可以理解成概率,数值越大,则该图形出现的概率越高)。

如图,列表中包含了 10 个数值,我们将每个数值对应一种形状的类型,例如列表的第一个数值对应的是形状 1 的生成概率。这里我默认的将 10 种形状的权重都设置为 10,也就是说 10 种类型的形状出现的概率是均等的。

## 随机算法

接下来,我们了解一下一个简单的计算随机的算法。

假设我们当前需要在 3 项中进行随机,每一项的权重都是 10。首先我们计算一下总权重为 30,接着从 1~30 的数字中随机一个数字,当前假设随机到了 25。接下来进行循环遍历比对:

循环 1: 25 比第一个数值 10 要大,所以不是第 1 项,将 25 减去第 1 项的数值 10,进入下一循环。

循环 2: 15 比第一个数值 10 要大,所以不是第 2 项,将 15 减去第 2 项的数值10,进入下一循环。

循环 3: 5 比第一个数值 10 要小,所以是第 3 项,循环结束找到最终结果,随机到的是第 3 项。

这个算法只使用了一个列表就实现了根据不同的权重进行随机的功能,列表的项可以对应着任何的东西,例如可以设置一,二,三等奖,分别对着列表的 1,2,3 项,然后就可以通过设置三项的数值来决定随机的概率了,比如说可以这样设置 1,100,10000,这样极大的概率都是三等奖了。所以,你知道游戏和应用中的各种转盘,抽奖活动的原理了吧!

可能有人会说,我直接使用如果“那么,逻辑”不就行了?何必使用列表和循环这么麻烦。现在只有 3 项随机,可以使用“如果,那么”逻辑,但是如果有 30 项呢?如果每一项的权重需要经常设置和调整呢?

使用这个方法不论有多少项,不论每项的数值如何调整,都可以简单的通过调整列表中的数值满足要求。可以说是非常的好用,大家可以把它收录到自己的算法库中,每当遇到需要设置权重值的随机功能时,就可以拿过来用了。

## 随机生成形状的实现

接下来,看一下具体的实现。

首先,遍历一下列表,将所有的权重累加,计算总权重。接着在 1~总权重 间随机一个数值。然后,再次遍历列表逐项比对,直到找到当前的值小于当前项的值,那么当前的项的索引就是我们要找的随机项了。

在获取到了随机的项之后,接下来就要去生成对应的形状了。

逻辑非常简单,就是根据随机项的数值,生成不同类型的形状。

图中可以看到,这里我将“生成形状”都包装成了“函数”,下面我们就来了解一下如何在微信小游戏制作工具中使用函数。

## 使用函数

在积木区中找到“函数”类别,然后点击“新建函数”按钮。

给函数起一个名字,点击确定后,当前的积木区就会显示出当前要制作的函数了。

可以通过点击积木块上的“加号”和“减号”按钮来添加和删除参数。参数的作用就是向函数内传递用于计算和处理的东西。

如果你有过编程经验,就会知道根据返回类型来区分的话,函数分为两种,一种有返回类型,一个没有返回类型。但是在微信小游戏开发工具中,只有一种没有返回的类型的函数。

假设当前我们的函数有这样的功能,将两个参数中的数值进行相加,得到结果。由于函数不能返回值,所以这里我们需要借助一个全局变量来存储函数处理的结果值。

函数制作好后,可以直接拖拽对应的函数积木进行使用。函数计算的结果保存在了“全局-相加结果值”中,后续如果我们需要使用函数处理的结果值,就直接使用这个全局变量即可。

所有创建的函数都会显示在资源管理器中的函数模块下,可以右键点击对应的函数进行重命名和删除处理。

## 生成对应形状的实现

最后,让我们看一下项目中的生成形状5的具体实现。

游戏中的形状5包含了 4 种不同的形态。

生成形状5的函数,根据传入的参数,生成不同形态的形状。

生成形状5函数的使用,传入一个1~4的随机数值。

看一下最终游戏中生成新形状的效果。

这节内容就到这里了。

总结一下:我们了解一个非常好用的可以设置权重值的随机算法,只需要使用一个列表就可以满足各种各样的情况。另外我们了解了微信小游戏制作工具中的函数的创建和使用,最后,看了一下游戏中的随机生成形状功能的具体实现。


我是会做游戏也会教你做游戏的小蚂蚁,欢迎关注公众号【小蚂蚁教你做游戏】,领取全网最全的微信小游戏开发系列原创教程资料。也欢迎加小蚂蚁微信(xiaomayi6669),交个朋友。

微信小游戏开发实战教程13-随机生成形状功能的实现相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

  7. 微信小游戏开发实战教程2-使用表格处理数据

    **这是小蚂蚁游戏开发公众号原创的第36篇. 本篇内容包括微信小游戏开发工具中的表格的使用.重点学习表格中的数据的设置,遍历和查找操作,以及如何使用"调试场景"来验证游戏中的逻辑是 ...

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

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

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

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

最新文章

  1. Failed to open zip file Gradle dependency cache be corrupt
  2. [oracle] Oracle存储过程里操作BLOB的字节数据的办法,例如写入32位整数
  3. .exe已停止工作_这几天我遇到了前所未有的问题windows10 1809 explorer.exe资源管理器频繁崩溃...
  4. Redis启动多端口,运行多实例(转)
  5. 千灯腾碧人潮涌,蓬勃“雨花”气如虹
  6. C语言作业界面,c语言作业20191011121223
  7. sql分割以逗号隔开的字符串
  8. phpStorm注册码
  9. 计算机应用基础 第三版 实验报告,计算机应用基础实验报告(windows).doc
  10. Python模块(3)--PIL 简易使用教程
  11. go语言:一些环境变量
  12. java图片转换pdf_Java实现图片转换PDF文件的示例代码
  13. 相机姿态估计(七)--UPnP
  14. Xcode使用小技巧-filter查找功能和查看最近修改的文件
  15. 如何设置计算机用户名和密码忘了怎么办,电脑密码忘记了怎么办
  16. 公私钥保存成PEM文件
  17. iOS图片两种压缩方法
  18. web网页劫持是如何做到的、网页劫持是怎么做到的
  19. 蓬莱小课:数据分析岗面试又问到MySQL索引?怎么回答看完你就明白了
  20. 思维导图ubuntu_XMind for Linux - 思维导图 | linux软件

热门文章

  1. 表示自己从头开始的句子_从头-一切从头开始的句子
  2. nepctf2021
  3. ReactNative动画之Animated初识篇
  4. 这些信贷数据埋点中不得不知的埋点知识
  5. 1.3 基于协同过滤的电影推荐案例
  6. 163music 反爬分析
  7. 2014年中国95家企业入围世界500强,超日本
  8. 长大后的我们为何贪恋年少?
  9. python研究背景和意义_课题设计研究的背景和意义
  10. 【Codevs1422】【网络流】河城荷取