没有合适的资源?快使用搜索试试~ 我知道了~
RAPTOR可视化编程.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 83 浏览量
2022-06-24
14:00:41
上传
评论
收藏 552KB PDF 举报
温馨提示
试读
15页
RAPTOR可视化编程.pdfRAPTOR可视化编程.pdfRAPTOR可视化编程.pdfRAPTOR可视化编程.pdfRAPTOR可视化编程.pdfRAPTOR可视化编程.pdf
资源推荐
资源详情
资源评论
加入能量守恒的生命游戏
Raptor 编程:能量守恒的生命游戏
作者:软件 33 任然
一,问题的由来
本作业的灵感是来自我在百度百科上阅读的一篇小论文,该文作者以能量的方式阐述了
生命的由来,让我不禁眼前一亮,联系到老师给我们示范的生命游戏的Raptor 程序,我便
有了这个加入能量守恒定律规定生命游戏的想法,并付诸于实现。
二,规划方案
首先,该算法是基于生命游戏的一个衍生程序,所以我查找了有关生命游戏的 Raptor
程序,并进行了研究,改进(这里要感谢程亮同学给我提供的一个参考)。该算法最困难的
地方在于能量守恒和检测每一单元能量值的部分。对此,我打算采用二维数组,以及循环嵌
套的方法来完成。另外关于界面交互方面,我打算用简洁明了的方式展现,是同学们在第一
次试运行时可以轻松上手。
在能量守恒方面,我决定使用数组的方法,给初始单元所在数组赋予一定能量值,并采
用了平均分配的方法,即一个单元在每一次循环中拿出它一半的能量平均分配给其周围八个
单元,这样就有了能量的传递。在显示方面,我设置了一个阈值,只有当单元所含能量值大
于该阈值,该单元才会显示,这样就有了新单元的生成。能量不断的被传递,伴随而来的便
是不断地有新的单元显示和旧的单元消失。而每个单元类似于一个生命,这也就有了生命的
变化。
三,实施并解决问题
1,实践前期
在实践前期,用户交互部分完成较为顺利,在获取鼠标坐标显示单元部分,由于对循环
程 序 运 行 不 够 明 了 , 使 得 坐 标 获 取 后 无 法 及 时 运 行 下 一 步 算 法 , 最 终 我 采 用 了
Wait_For_Mouse_Button(Left_Button)函数使问题解决。(如图-4,图-5,图-8)
2,实践中期
在实践中期,由于能量守恒定律的加入,使该程序需要两次循环检测,第一次是分配能
量,第二次是判断该单元是否显示并完成显示和消失。因为检测有前后顺序,前面单元能量
分配会影响到后面单元能量的分配,使整体图形向右偏移,所以我采用了双数组的形式
,将单元初始值赋给第一个数组,将分配的能量值赋给第二个数组,等分配完毕后再将
第二个数组的值加给第一个,然后将第二个数组归零,这样就巧妙的解决的图像右移的问题。
(如
图-11,图-13)
在能量赋值上,因为用户界面一共有3600 个单元,我预设的阈值为30,所以要使全部
单元都显示则一共需要 108000 的能量值,所以我给每个初始单元赋给了 5000 的能量值,这
个结果是通过实验试出来的,如果愿意,可以自己更改。
在将第二个数组归零中,我开始是等整个运算完成后,在用循环结构将其归零,但发现
这样增加了许多无用的步骤,使运行速度大幅度变慢。最终,我将归零步骤放在第一次循环
中,解决了这个问题。(如图-13)
另外,由于双循环的存在使程序运行速度变慢,并且调用函数会使速度大大降低,为了
减少函数调用的次数,我引入了第三个数组,将前一次显示的单元对应的地址赋予1,不显
示的单元赋予 0,在第二次循环完成显示与消失时可以减少调用填色的函数,在实际运行时,
这一设置发挥了明显的作用。(如图-8,图-13,图-14,图-15)
还有一个小细节,由于 Raptor 程序设定的因素,如果赋给数组的值小于其设定值,程
序会显示错误,因此,我在分配能量中,对单元能量值得判断不是“是否大于一”,而是是
否“大于十的负五次方”。在这种设置下,能量的分配或许会有一点小误差,但由于数量级
很小,可以忽略不计。(如图-10)
3,实践后期
在制作后期,主要是界面优化,利用图片处理软件,得到预期想要的样式,由于 Raptor
不能输入汉字,所以采用这种图的形式效果最好。然后将图填入,并利用鼠标坐标获取函数,
得到有关位置(如“开始”,“说明”,“退出”等)的坐标范围,利用这些坐标范围进行后续
有关程序是否运行的判断。期间,为了加入“说明”中“返回”这个功能,我加入了循环,
并给与了 player 三个值进行判断,使其可以无限次的返回。(如图-1,图-6,图-11)
四,回顾与思考
回看整个程序,会发现在分配能量和检测单元能量值是否超过阈值的部分占用了大部分
的运行时间,由于随着能量的分配范围的扩大,无法确定哪些地方没有能量,所以我采用了
蛮力法,但这样使运算时间大大加大,所以我想,有没有一种算法可以在这种情况下对数组
进行迅速判断,节省运行步骤,缩短时间。
并且,因为能力的关系,在用户界面方面,仍旧感觉有些呆板,不够生动,灵活。在运
行过程中单元的形式很简单。但我觉得这是 Raptor 平台的一个不足之处,没有很好地界面
图形编辑功能。另外,由于 Raptor 的基础设定,许多功能无法实现,例如,对一个数组整
体归零,在 Raptor 中需要一步一步来,并没有类似于 C 语言中的 static 函数调用。
另外,由于 Raptor 不支持汉字的输入与输出,所以想要表现出汉字还需要用图来解决,
这使得很多问题复杂化。但这种方法也有一个好处,那就是你可以使用你想用的任何一种字
体来表现你的内容,这样会使程序的界面有了一个很大的提升。
最后,这个想法还只是在初步阶段,所以并没有像传统生命游戏那样,有那么多有趣的
事例给人示范,在生动性上有所欠缺。但我希望这个小程序能够作为一个启发,播下一颗种
子,
使更多的人将目光投向关于这类加权的生命游戏的思考之中。
五,参考文献与案例
程向前:《可视化计算》
佚名:《生命游戏的假设》,文章地址:
http://baike.baidu.com/link?url=Iqpg1oyeCVu0QTfT0efjPk9-XuZdLtV2DwIJtfEmj5W
dmCW1F731QogAosxux-hw5vqxw4trZ0s4B8zbRMC6HK(online)参考时间:2013/10/18
程亮,Raptor 程序:《game of life》
梁雨聪,Raptor 程序:《打砖块》
六,算法框图
main
图-1
剩余14页未读,继续阅读
资源评论
a66889999
- 粉丝: 36
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Qt开发知识、经验总结 包括Qss,数据库,Excel,Model/View等
- IV数据.xlsx
- 一些深度学习中的小例子,适合新手学习使用
- foldcraftlauncher_262944.apk
- 珍藏多年的基于matlab实现潮流计算程序源代码集合,包含多个潮流计算程序.rar
- 使用FPGA实现串-并型乘法器
- 基于matlab实现针对基于双曲线定位的DV-Hop算法中误差误差出一种基于加权双曲线定位的DV-Hop改进算法.rar
- 基于matlab实现由遗传算法开发的整数规划,车辆调度问题.rar
- 电视家7.0(对电视配置要求高).apk
- 免费计算机毕业设计-基于JavaEE的医院病历管理系统设计与实现(包含论文+源码)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功