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

简介: **微信小游戏开发实战系列的第13篇,点击上方的#微信小游戏开发实战话题可以查看本系列的所有内容。本节内容包括:通过使用列表来实现可以设置权重的随机功能,以及游戏中的随机生成形状功能的具体实现。


**微信小游戏开发实战系列的第13篇,点击上方的#微信小游戏开发实战话题可以查看本系列的所有内容。

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

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


**游戏项目已开源到社区:https://gamemaker.weixin.qq.com/#/game?game_id=lbMmQzN2FkODUtZWZjZC00ZDA1LTkwOTctZTE5NWIwNGZjZjNj

大家可以拿到项目之后,对照着项目进行研究和学习。


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


640.png

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


640.png

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


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


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


640.png

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


## 随机算法


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

640.png


假设我们当前需要在 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 项呢?如果每一项的权重需要经常设置和调整呢?


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


## 随机生成形状的实现


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

640.png


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


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

640.png

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


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


## 使用函数


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

640.png


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

640.png


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

640.png


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


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

640.png


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

640.png


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

640.png


## 生成对应形状的实现


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


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

640.png


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

640.png


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

640.png


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

640.gif


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


欢迎体验我的微信小游戏作品“精致1010”,一个精致而温暖的小游戏。

相关文章
|
1月前
|
JSON 小程序 JavaScript
uni-app开发微信小程序的报错[渲染层错误]排查及解决
uni-app开发微信小程序的报错[渲染层错误]排查及解决
488 7
|
1月前
|
小程序 JavaScript 前端开发
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
547 1
|
1月前
|
存储 自然语言处理 小程序
微信小程序多语言切换神器:简繁体切换功能完全指南
随着全球化的发展,支持多种语言的应用程序愈发重要。本文介绍了如何在微信小程序中实现简体与繁体字体之间的切换功能,以满足不同地区用户的需求。通过创建utils文件夹并编写相应的转换函数,开发者可以方便地实现语言切换,从而提升用户体验。文章中还附带了示例代码和效果图,帮助读者更好地理解和应用这一功能。
85 0
微信小程序多语言切换神器:简繁体切换功能完全指南
|
28天前
|
存储 小程序 安全
微信的开发管理都需要配置什么?
【10月更文挑战第17天】微信的开发管理都需要配置什么?
30 0
|
1月前
|
JavaScript 小程序 开发者
uni-app开发实战:利用Vue混入(mixin)实现微信小程序全局分享功能,一键发送给朋友、分享到朋友圈、复制链接
uni-app开发实战:利用Vue混入(mixin)实现微信小程序全局分享功能,一键发送给朋友、分享到朋友圈、复制链接
322 0
|
1月前
|
小程序 前端开发 测试技术
微信小程序的开发完整流程是什么?
微信小程序的开发完整流程是什么?
111 7
ly~
|
2月前
|
存储 供应链 小程序
除了微信小程序,PHP 还可以用于开发哪些类型的小程序?
除了微信小程序,PHP 还可用于开发多种类型的小程序,包括支付宝小程序、百度智能小程序、抖音小程序、企业内部小程序及行业特定小程序。在电商、生活服务、资讯、工具、娱乐、营销等领域,PHP 能有效管理商品信息、订单处理、支付接口、内容抓取、复杂计算、游戏数据、活动规则等多种业务。同时,在企业内部,PHP 可提升工作效率,实现审批流程、文件共享、生产计划等功能;在医疗和教育等行业,PHP 能管理患者信息、在线问诊、课程资源、成绩查询等重要数据。
ly~
78 6
|
1月前
|
缓存 小程序 索引
uni-app开发微信小程序时vant组件van-tabs的使用陷阱及解决方案
uni-app开发微信小程序时vant组件van-tabs的使用陷阱及解决方案
193 1
|
1月前
|
小程序 前端开发 数据安全/隐私保护
微信小程序全栈开发中的身份认证与授权机制
【10月更文挑战第3天】随着移动互联网的发展,微信小程序凭借便捷的用户体验和强大的社交传播能力,成为企业拓展业务的新渠道。本文探讨了小程序全栈开发中的身份认证与授权机制,包括手机号码验证、微信登录、第三方登录及角色权限控制等方法,并强调了安全性、用户体验和合规性的重要性,帮助开发者更好地理解和应用这一关键技术。
63 5
|
1月前
|
小程序 前端开发 JavaScript
微信小程序全栈开发中的PWA技术应用
【10月更文挑战第3天】微信小程序作为新兴应用形态,凭借便捷体验与社交传播能力,成为企业拓展业务的新渠道。本文探讨了微信小程序全栈开发中的PWA技术应用,包括离线访问、后台运行、桌面图标及原生体验等方面,助力开发者提升小程序性能与用户体验。PWA技术在不同平台的兼容性、性能优化及用户体验是实践中需注意的关键点。
61 5