




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
辽宁省沈阳市第十五中学2020年高中数学论文 图形计算器应用能力测试活动学生“乐动达人”简易版的编制乐动达人是今年最火的一款音乐游戏。游戏内容为及时按中从轨道上滚落下来的小球。利用CaSio图形计算器,可以编出乐动达人的简易版。乐动达人简易版主要分成如下部分:准备阶段、游戏界面生成阶段、游戏开始和进行阶段、游戏结束阶段、排行榜 。准备阶段这一阶段是游戏开始前给玩家的准备阶段,内容简单。1AWhile A200If A=200Then “READY”IfEndIf A=150Then CirText“GO”IfEndA+1AWhileEnd在这里,为了防止一开始内容跳转过快,我选择了让计算器运行一个无意义的循环,从而达到延缓时间的目的,根据CG20的运算速度,我选择了以上运算量,在不同的机型可以根据个人喜好调整该循环的时间。游戏界面生成阶段游戏界面在这一阶段生成,各种数据的初始化也在这一阶段进行。CirTextLocate 2,1,”Locate 6,1,”Locate 4,1,”Locate 2,7,”Locate 6,7,”Locate 4,7,”Locate 2,2,”Locate 6,2,”Locate 4,2,”Locate 2,3,”Locate 6,3,”Locate 4,3,”Locate 2,4,”Locate 6,4,”Locate 4,4,”Locate 2,5,”Locate 6,5,”Locate 4,5,”Locate 2,6,”Locate 6,6,”Locate 4,6,”Locate 9,2,”LIFE”Locate 15,2,”SCORE”Locate 9,5,”COMBO”4T0N0S0A0B0C0D0E0F0G首先规定(2,1)、(4,1)、(6,1)三个位置为小球出现的位置,(2,7)、(4,7)、(6,7)为应该按小球的位置,中间部分则是小球滚落路径。分别用这三种不同的标识表示。同时,需要记录的分数、连击数和生命数则列在旁边。游戏开始和进行阶段(主要部分)这一阶段是游戏的运行阶段,也是最主要的阶段While T0Locate 9,4,TLocate 10,6,NLocate 15,4,SIf A0Then Locate A,2,”IfEndIf B0Then LocateB,3,”IfEndIf C0Then Locate C,4,”IfEndIf D0Then Locate D,5,”IfEndIf E0Then Locate E,6,”IfEndIf F0Then Locate F,7,” ”IfEndEFDECDBCAB2RanInt(1,3) ALocate A,2,”If B0Then Locate B,3,”IfEndIf C0Then Locate C,4,”IfEndIf B0Then Locate D,5,”IfEndIf B0Then Locate E,6,”IfEndIf B0Then Locate F,7,”IfEnd0KIf G5Then GetkeyKIf K=52 Or K=62 Or K=72Then (8-Int(K10)2KIfEndIf K=FThen Locate K,7,”N+1NS+NSElse 0NT-1TIfEndIfEndG+1GWhileEnd如何表现小球的运动是编程过程中的最大难点。我采取了给每一排赋予一个变量,用变量的数值来表示该排小球的横坐标的方法。具体操作流程如下:生成的最上端小球的横坐标将原先所有表示为小球的坐标涂成无小球状依次将每排的坐标值传递给下一排(最下方的小球完成击中判定后消失)在新的坐标上显示小球(同时对到达第七排的小球进行击中判定)同时,我们需要对剩余生命、连击值和分数进行统计。具体操作是如下:连击数:(完成击中判定后)是否击中?击中则连击数加一;未击中则连击数归零在显示区域显示连击数分数:(完成击中判定后)是否击中?击中则分数加连击数的值;未击中则分数不变在显示区域显示分数剩余生命:(完成击中判定后)是否击中?击中则生命不变;未击中则生命减一在显示区域显示生命数在这一部分的实际操作中,我遇到了如下问题:1.如何让计算器重复操作步骤?我选择让计算器进入循环,跳出循环的条件是剩余生命数不大于零。2.如何生成最上方小球的坐标?我选择了随机数2*RanInt#(1,3)来表示生成的小球的横坐标。这样生成的横坐标正好是我们要的2、4、6。3.在第一个小球尚未到达第三行前,第三行对应小球位置横坐标为0,如何使计算器放弃在该位置显示小球图标?(第四五六七行同样存在这个问题)我选择在显示小球位置前进行条件判定如果该行的小球横坐标为零,就跳过显示。如何让计算器在第一个小球落到最下方之前不进行击中判定?为此我选择引入一个辅助值G。G的初始值是0,每完成一次循环,G在原来的基础上加一,在G达到5时,第一个小球恰好到达击中判定区,因此击中判定前设置条件就是:G是否大于等于5,若是,则进行击中判定,否则跳过击中判定。4.如何进行击中判定?击中判定是整个程序里除了表示小球运动外最重要的部分。由于一共有三列可能滚下的小球,所以我选择用1、2、3三个键分别对应三行。由于?赋值法会打断程序进程,我们必须另辟蹊径。我想到了运用CG20计算器的另一个功能GetKey功能。GetKey能立即获得所按键的代码,而且未获得代码不会打断程序运行。在这里,我令计算器获得“1”、“2”、“3”的代码(72、62、52)转换成对应的横坐标2、4、6,如果得到的横坐标与击中判定区小球的横坐标一致,就执行击中后的步骤。如果不一致,或GetKey未得到值,就执行未击中后的步骤。5.在连击位数降低时,原本多出的位数无法及时消除,如何解决?这是一个相当棘手的问题,在每次循环开始前先清屏一次可以解决问题,但会占用大量时间,即大幅度的削弱连贯感。最终我采取了分别显示连击值百位、十位、个位方法,将Locate 10,6,N改为:Locate 9,6,Int(N100)Locate 10,6,Int(N10)-10Int(N100)Locate 11,6,N-10Int(N10)这样,在相邻的三个位置上分别显示百位、十位、个位数字就能避免问题了。游戏结束阶段这一阶段中会显示玩家的分数、名次,另外这一阶段还具有重新开始和跳转到排行榜的能力。ClrText“END”“YOUR SCORE:”Locate 16,2,SIf WS And SXThen Locate 1,7,”YOU ARE THE THIRD”IfEndIf XS And SW And SX And SYThen XWYXSYIfEnd?KIf K=2Then Prog ”LIST”ElseProg “YDDR”IfEnd这一阶段中最重要的内容莫过于分数的储存了,我选择了w、x、y这三个变量来储存第三名、第二名、第一名的分数。由于这三个变量不进行初始化,它们不会因游戏关闭而归零。将得到的分数分别和这三个变量的值进行比较,就能得到名次(限于前三名)。同时用较大数取代较小数的方法来更新前三名的数据。本阶段的另一个重点是跳转问题,利用“Prog”功能可以实现程序间的跳转。当玩家输入1时,我令计算器重新执行这一程序;输入2时,跳转到辅助程序“LIST”。排行榜这是一个独立于主程序的辅助程序,可以由主程序跳转进入,也能单独启动,另外排行榜也能够跳转到主程序。ClrTextLocate 8,2,”CHART”Int(Y(105)AInt(Y-(105)A) (104)BInt(Y-(105)A-(104)B)(103) CInt(Y-(105)A-(104)B-(103) C)(102)DInt(Y-(105)A-(104)B-(103) C-(102)D)10)EY-(105)A-(104)B-(103)C-(102)D-10EFLocate 1,4,”NO.1”Locate 13,4,ALocate 14,4,BLocate 15,4,CLocate 16,4,DLocate 17,4,ELocate 18,4,FInt(X(105)AInt(X-(105)A) (104)BInt(X-(105)A-(104)B)(103) CInt(X-(105)A-(104)B-(103) C)(102)DInt(X-(105)A-(104)B-(103) C-(102)D)10)EX-(105)A-(104)B-(103)C-(102)D-10EFLocate 1,4,”NO.2”Locate 13,5,ALocate 14,5,BLocate 15,5,CLocate 16,5,DLocate 17,5,ELocate 18,5,FInt(W(105)AInt(W-(105)A) (104)BInt(W-(105)A-(104)B)(103) CInt(W-(105)A-(104)B-(103) C)(102)DInt(W-(105)A-(104)B-(103) C-(102)D)10)EW-(105)A-(104)B-(103)C-(102)D-10EFLocate 1,4,”NO.3”Locate 13,6,ALocate 14,6,BLocate 15,6,CLocate 16,6,DLocate 17,6,ELocate 18,6,FLocate 1,7,”1.BACK”?KIf 1+1=2Then Prog ”YYDR”IfEnd在这部分里,我仍然使用w、x、y三个程序来保存变量,这样每次从主程序进入排行榜时,分数都能更新。然而在这部分的编写中,我遇到了一个很大的问题。如果在主程序运行完成后,直接跳出程序,不进入排行榜,然后单独启动排行榜,这时就会出现数据不及时的情况。为了解决这一问题,我进行了如下操作:在进入辅助程序时进行一次判定,如果是单独启动的,就先跳入主程序,再跳回辅助程序;在主程序运行前也进行判定,若是由上述路程跳转启动的,就立即返回辅助程序。相当于让数据在主程序里洗个澡,解决了此问题。首先将主程序开头改成:If Z=0Then ClrText?KEise 2KIfEndIf K=2Then Prog “LIST”再将排行榜程序改为:If K=2Then ClrText1KLocate 8,2,”CHART”Locate 1,7,”1.BACK”?ZIf 1+1=2Then 0K0ZProg ”YDDR”IfEndElse 1Z0KProg”YDDR”IfEnd另外,这个程序还有很多可以调整之处,比如将游戏设计成四键模式、改变记分方式、增减生命数、将游戏设计成计时制、拓展排行榜名次数等等,都是可以调整的内容。经历了这次程序编写,我学到了许多新的东西。首先我学会了如何发现问题,解决问题。主要部分的第三个和第五个问题都是我开始入手时没有想到的,而排行榜数据滞后的问题更是我一开始完全没有发现的。但最终,凭着自己的努力和一次一次的尝试,我将这些困难都一一克服了。其次,这次程序编写增强了我的学习能力,调动了我的创新精神。第一次接触CaSio计算器,我对着学校出版的图形计算期的探索与研究上提供的两个程序实例自学,遇到不懂的就请教老师,在编程中进步,在编程中成长。在书上的两个事例程序中,有一个也拥有排行榜功能,和我遇到同样问题的作者采取了只能从主程序启动排行榜,不能直接启动排行榜的方式。经过我的改良,我对这个问题的创新解决方案可以说做到了最好。最重要的,在用CaSio计算器编程的过程中,我深深体会到了一种严谨的数学精神,CaSio计算器一步一步认真、迅速、准确地执行我的命令正是这种精神的体现。没有性能优异的CaSio fx-CG20计算器,我也无法体会到编程中的快乐。我由衷地感谢CaSio计算器,CaSio计算器的多样功能永远是我最好的学习伴侣。附录(最终完整版程序):主程序(YDDR):If Z=0Then ClrText1AWhile A200If A=200Then “READY”IfEndIf A=150Then CirText“GO”IfEndA+1AWhileEndCirTextLocate 2,1,”Locate 6,1,”Locate 4,1,”Locate 2,7,”Locate 6,7,”Locate 4,7,”Locate 2,2,”Locate 6,2,”Locate 4,2,”Locate 2,3,”Locate 6,3,”Locate 4,3,”Locate 2,4,”Locate 6,4,”Locate 4,4,”Locate 2,5,”Locate 6,5,”Locate 4,5,”Locate 2,6,”Locate 6,6,”Locate 4,6,”Locate 9,2,”LIFE”Locate 15,2,”SCORE”Locate 9,5,”COMBO”4T0N0S0A0B0C0D0E0F0GWhile T0Locate 9,4,TLocate 9,6,Int(N100)Locate 10,6,Int(N10)-10Int(N100)Locate 11,6,N-10Int(N10)Locate 15,4,SIf A0Then Locate A,2,”IfEndIf B0Then LocateB,3,”IfEndIf C0Then Locate C,4,”IfEndIf D0Then Locate D,5,”IfEndIf E0Then Locate E,6,”IfEndIf F0Then Locate F,7,” ”IfEndEFDECDBCAB2RanInt(1,3) ALocate A,2,”If B0Then Locate B,3,”IfEndIf C0Then Locate C,4,”IfEndIf B0Then Locate D,5,”IfEndIf B0Then Locate E,6,”IfEndIf B0Then Locate F,7,”IfEnd0KIf G5Then GetkeyKIf K=52 Or K=62 Or K=72Then (8-Int(K10)2KIfEndIf K=FThen Locate K,7,”N+1NS+NSElse 0NT-1TIfEndIfEndG+1GWhileEndClrText“END”“YOUR SCORE:”Locate 16,2,SIf WS And SXThen Locate 1,7,”YOU ARE THE THIRD”IfEndIf XS And SW And SX And SYThen XWYXSYIfEnd?KElse 2KIfEndIf K=2Then Prog ”LIST”ElseProg “YDDR”IfEnd排行榜程序(LIST):If K=2Then ClrText1KLocate 8,2,”CHART”Int(Y(105)AInt(Y-(105)A) (104)BInt(Y-(105)A-(104)B)(103) CInt(Y-(105)A-(104)B-(103) C)(102)DInt(Y-(105)A-(104)B-(103) C-(102)D)10)EY-(105)A-(104)B-(103)C-(102)D-10EFLocate 1,4,”NO.1”Locate 13,4,ALocate 14,4,BLocate 15,4,CLocate 16,4,DLocate 17,4,ELocate 18,4,FInt(X(105)AInt(X-(105)A) (104)BInt(X-(105)A-(104)B)(103) CInt(X-(105)A-(104)B-(103) C)(102)DInt(X-(105)A-(104)B-(103) C-(102)D)10)EX-(105)A-(104)B-(103)C-(102)D-10EFLocate 1,4,”NO.2”Locate 13,5,ALocate 14,5,BLocate 15,5,CLocate 16,5,DLocate 17,5,ELocate 18,5,FInt(W(105)AInt(W-(105)A) (104)BInt(W-(105)A-(104)B)(103) CInt(W-(105)A-(104)B-(103) C)(102)DInt(W-(105)A-(104)B-(103) C-(102)D)10)EW-(105)A-(104)B-(103)C-(102)D-10EFLocate 1,4,”NO.3”Locate 13,6,ALocate 14,6,BLocate 15,6,CLocate 16,6,DLocate 17,6,ELocate 18,6,FLocate 1,7,”1.BACK”? Locate 8,2,”CHART”Int(Y(105)AInt(Y-(105)A) (104)BInt(Y-(105)A-(104)B)(103) CInt(Y-(105)A-(104)B-(103) C)(102)DInt(Y-(105)A-(104)B-(103) C-(102)D)10)EY-(105)A-(104)B-(103)C-(102)D-10EFLocate 1,4,”NO.1”Locate 13,4,ALocate 14,4,BLocate 15,4,CLocate 16,4,DLocate 17,4,ELocate 18,4,FInt(X(105)AInt(X-(105)A) (104)BInt(X-(105)A-(104)B)(103) CInt(X-(105)A-(104)B-(103) C)(102)DInt(X-(105)A-(104)B-(103) C-(102)D)10)EX-(105)A-(104)B-(103)C-(102)D-10EFLocate 1,4,”NO.2”Locate 13,5,ALocate 14,5,BLocate 15,5,CLocate 16,5,DLocate 17,5,ELocate 18,5,FInt(W(105)AInt(W-(105)A) (104)BInt(W-(105)A-(104)B)(103) CInt(W-(105)A-(104)B-(103) C)(102)DInt(W-(105)A-(104)B-(103) C-(102)D)10)EW-(105)A-(104)B-(103)C-(102)D-10EFLocate 1,4,”NO.3”Locate 13,6,ALocate 14,6,BLocate 15,6,CLocate 16,6,DLocate 17,6,ELocate 18,6,FLocate 1,7,”1.BACK”? Locate 8
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 基于深度学习的种子填充算法在复杂地形三维分割中的应用-洞察及研究
- 2026届甘肃省白银市平川区九年级化学第一学期期中预测试题含解析
- 大数据驱动的纺织品预测分析-洞察及研究
- 旱獭在城市灾害预防中的作用研究-洞察及研究
- 基于私有变量的生物信息数据管理-洞察及研究
- 2025年计算机二级考试试题题库附答案
- 2025呼吸机相关性肺炎试题(附答案)
- 2025汽车租赁合同常用版
- 海盗与船长打击乐课件
- 2025个人借款合同范本3篇
- 《全球哮喘管理和预防策略(GINA 2025)》解读
- 计划生育技术服务诊疗常规与操作规程
- 2025年Q2起重机司机模拟考试题库(附答案)
- 4.1水资源及其利用(第2课时)-九年级化学人教版上册
- 2025年质量月知识竞赛题库含答案(初赛)
- 2025年共青团员必背的130个重点知识汇编
- 村两委会议制度管理制度
- 关于磁的课件
- 瘘病的护理查房
- 公路汛期安全培训
- AII6000B呼吸机的使用
评论
0/150
提交评论