微信小游戏开发实战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的随机数值。


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


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


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

精致1010

将美好的四季送给你。

小程序

如果你对游戏开发感兴趣,欢迎关注我,如果你有对游戏开发感兴趣的朋友,也欢迎把这个系列文章推荐给他。

相关文章
|
5天前
|
小程序 应用服务中间件 Linux
【Nginx】微信小程序后端开发、一个域名访问多个服务
【Nginx】微信小程序后端开发、一个域名访问多个服务
18 0
|
5天前
|
小程序
微信小程序用户登陆和获取用户信息功能实现
微信小程序用户登陆和获取用户信息功能实现
14 0
|
5天前
|
Web App开发 数据采集 移动开发
开发uniapp过程中对app、微信小程序与h5的webview调试
开发uniapp过程中对app、微信小程序与h5的webview调试
13 1
|
5天前
|
小程序 前端开发 JavaScript
轻松学会微信小程序开发(一)
轻松学会微信小程序开发(一)
|
5天前
|
JSON 小程序 JavaScript
微信小程序开发1
微信小程序开发1
|
5天前
|
数据采集 存储 人工智能
【Python+微信】【企业微信开发入坑指北】4. 企业微信接入GPT,只需一个URL,自动获取文章总结
【Python+微信】【企业微信开发入坑指北】4. 企业微信接入GPT,只需一个URL,自动获取文章总结
43 0
|
5天前
|
小程序 前端开发 API
微信小程序全栈开发中的异常处理与日志记录
【4月更文挑战第12天】本文探讨了微信小程序全栈开发中的异常处理和日志记录,强调其对确保应用稳定性和用户体验的重要性。异常处理涵盖前端(网络、页面跳转、用户输入、逻辑异常)和后端(数据库、API、业务逻辑)方面;日志记录则关注关键操作和异常情况的追踪。实践中,前端可利用try-catch处理异常,后端借助日志框架记录异常,同时采用集中式日志管理工具提升分析效率。开发者应注意安全性、性能和团队协作,以优化异常处理与日志记录流程。
|
5天前
|
小程序 安全 数据安全/隐私保护
微信小程序全栈开发中的身份认证与授权机制
【4月更文挑战第12天】本文探讨了微信小程序全栈开发中的身份认证与授权机制。身份认证包括手机号验证、微信登录和第三方登录,而授权机制涉及角色权限控制、ACL和OAuth 2.0。实践中,开发者可利用微信登录获取用户信息,集成第三方登录,以及实施角色和ACL进行权限控制。注意点包括安全性、用户体验和合规性,以保障小程序的安全运行和良好体验。通过这些方法,开发者能有效掌握小程序全栈开发技术。
|
5天前
|
JavaScript 前端开发 小程序
微信小程序全栈开发之性能优化策略
【4月更文挑战第12天】本文探讨了微信小程序全栈开发的性能优化策略,包括前端的资源和渲染优化,如图片压缩、虚拟DOM、代码分割;后端的数据库和API优化,如索引创建、缓存使用、RESTful API设计;以及服务器的负载均衡和CDN加速。通过这些方法,开发者可提升小程序性能,优化用户体验,增强商业价值。
|
5天前
|
小程序 前端开发 JavaScript
微信小程序全栈开发中的PWA技术应用
【4月更文挑战第12天】本文探讨了微信小程序全栈开发中PWA技术的应用,PWA结合Web的开放性和原生应用的性能,提供离线访问、后台运行、桌面图标和原生体验。开发者可利用Service Worker实现离线访问,Worker处理后台运行,Web App Manifest添加桌面图标,CSS和JavaScript提升原生体验。实践中需注意兼容性、性能优化和用户体验。PWA技术能提升小程序的性能和用户体验,助力开发者打造优质小程序。

热门文章

最新文章