所有分类
主题 主题
平台 平台
我的工作台
userHead
注册时间 [[userInfo.create_time]]
创造力 [[userInfo.creativity]]
[[userInfo.remark]]
[[d.project_title]]
articleThumb
[[d.material_name]]
timelineThumb
进入工作台
折叠
所有分类 我的工作台
展开
过年去哪儿玩-小试Mind+
伟光 伟光 2019-01-11 16:11:44
1
0
简单

时间过得好快,离我有想法到现在写这个已经一个多星期了,还没完全写完,这段时间事情太多,本来是元旦假期想着到底该干啥,想写个程序替我决定下,最后孩子生病,又期末一大堆事情,哪也没去。不过自我感觉程序内容虽然比较简单,但里面有些实现还是挺有趣的,所以还是想着完成下玩玩,也算是做个备忘录,以后有空了再补全。另外就是跟大家交流交流,集思广益:-)。

构思

整个程序的构思其实很简单,就是针对选择困难症这部分人:)。如果你有几种想法,但不知道该选择哪个,那么就可以用这个来帮助选择下。相信很多人都做过类似的,比如一个圆盘,然后用指针旋转,最后停下来就是选择的那个。这个小程序的不同之处是自动化了,具体怎么自动化,接下来会用一个流程图来说明。

流程图

projectImage

制作过程

材料清单 材料清单
1x
Mind+ V1.5.0
1x
全家人聚餐背景图片
1x
小猪
1x
数字
1x
魔术棒
步骤1 步骤1
准备角色

上传找到的背景和小猪角色,数字,铅笔和魔术棒是在自带的库里找到的。

projectImage
projectImage

第一幕

点击小旗,背景切换全家一起吃饭的图片,小猪开始致欢迎词:大家新年好!祝愿大家在新的一年万事如意,阖家幸福!新年到了,也放假了,出去游玩还是在家宅着?很纠结是不是,用这个小程序来选择一下吧!按Y继续。

projectImage
projectImage

注意这里搞了个好玩的,就是让文字一个一个出来。Scratch默认的说是一下子显示完,但感觉这种不好玩,就想了下让一个字一个字的显示。用了一个函数,下面会详细说下这个函数。

projectImage

下面讲一下那个speakslowly函数,原理其实很简单。把要说的话放到一个变量里,比如welcome。然后使用一个临时变量,并使用获取字符的模块在循环里一个一个字的选取出来和临时变量进行合并,之后再说出来。这个函数用了两个参数,第一个是要说的话,第二个是每个字之间的间隔时间。

projectImage

接下来按字母Y,就进入了下一幕

第二幕

询问有多少愿望,然后输入愿望

步骤2 步骤2
使用询问模块获取愿望数和愿望
projectImage

这里使用了变量number来接受愿望数,大于0小于10。

接着使用列表wishlist记录愿望。

接着进入下一幕

projectImage
projectImage

第三幕

进入第三幕,屏幕背景切换为白色背景,小猪移动到中心位置。

步骤3 步骤3
画笔出现开始画转盘
projectImage

这部分使用了三个函数构成。

drawcircle:用于画圆盘

projectImage

这个函数有一个参数radius,用于设置圆的半径。在本程序中设置为160,这是由于屏幕横坐标为[-180,180]。然后利用转向画笔,每次转动1度,然后移动1一个弧度对应的距离,循环360次画出来圆。画的过程中让笔的颜色也变动,好看些:)。

接下来是使用Rndlist函数把角度打乱,这样有种随机感。

projectImage

num就是之前的愿望数目。

degree是圆盘每个愿望占的角度。

一开始用templist放角度,是顺序的。

比如num是5,则就是0,72,144,216,288这样。

然后这里使用rndlist存放打乱后的顺序

打乱的算法是这样的,先随机取一个角度,然后给rndlist,然后把这个角度从templist删掉,然后再重复之前的操作。

接着开始画分割线。

projectImage

算法是这样的:读取rndlist里对应的角度,算出来对应的圆上的坐标,之后从圆心移动那个位置,然后再重复这个过程。

画得过程中也把笔的颜色变了下:)

接着就进入了下一幕。

projectImage

第四幕

第四幕其实跟第三幕有点重叠,但是为什么要单独拿出来呢,这是由于我觉得这里也写了不少代码。。。。

这里就用到了数字角色,这个角色里包含1-9个造型对应9个数字。

步骤4 步骤4
把数字移动到相应的扇区
projectImage
projectImage

这里用了一个小技巧,重复获取rndlist里的角度,之后克隆数字,然后数字显示,把数字移动到对应角度所在的扇区。

这里对于扇区的算法是把分割线又逆时针偏转degree/2,之后再选择半径为120(相对于圆的半径是160),然后计算出来坐标,最后把数字移到那里。

之后重复这个过程就可以了。最后回放一个视频可以看看动画效果。

之后魔术棒就出现了,小猪说话,进入最后一幕。

第五幕

按空格键,魔术棒开始随机转动,再按空格键结束

projectImage

这里侦测是否按空格键,侦测到之后停止转动。注意前面我还让等待0.1秒,大家可以想下为什么:)

最终指针停下来,之后涉及到一个算法是通过角度计算出来是哪个数字,然后再通过数字得到是哪个愿望。

projectImage

这里首先还有一步要处理下,因为Scratch中角度是0-180和0到-180度,所以如果是小于0的话,要变换一下为180-360度。

然后怎么获取到是哪个数字呢,这里的算法是,先用角度除以degree,向下取整之后再乘以degree就可以得到rndlist里的那个角度了。

之后再搜索这个角度获取到是第几项,进而得知是哪个数字,把小猪要说的话用程序生成保存到result,然后再用小猪说出来。

projectImage

这不是我想要的结果!!!

下面是程序的视频,似乎上下有点截取,整体不影响。

https://showmore.com/zh/u/z1ut7if

优酷和腾讯的视频等审核通过了再加上来吧。

程序代码放在码云了。

https://gitee.com/chenweiguang82/qunaer

欢迎大家交流。

后记:第一次在makelog里写东西,很不错,就是图片限制上传大小,小的竟然没法上传。这个小程序其实还有些功能没完成,大家仔细看的话,里面有彩蛋是想要做一下的。触发彩蛋的时候会出现抢红包的画面。另外没有加上音乐音效也是憾事,以后有空了再继续丰富吧。

Makelog作者原创文章,未经授权禁止转载。
1
0
评论
[[c.user_name]] [[c.create_time]]
[[c.parent_comment.count]]
[[c.comment_content]]