免费预览已结束,剩余7页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
辽宁省沈阳市第十五中学2013年高中数学论文 图形计算器应用能力测试活动学生 图形计算器游戏贪吃蛇 摘要 利用图形计算器的编程功能,在casio fx-cg20图形计算器平台上实现了贪吃蛇游戏。本文中的程序利用了图形计算器中的矩阵来储存数据,通过模拟法实现贪吃蛇游戏,有两种游戏模式,并提供游戏的最高分记录、保存和设置功能。关键词图形计算器;贪吃蛇;前言 观察过以前的获奖论文,大多数的论文只利用到图形计算器的画图功能和小部分的编程功能。图形计算器编程功能的强大之处并未充分体现出来,而本文正是利用了图形计算器强大的编程功能,从而在图形计算器上实现了贪吃蛇游戏。研究目的利用图形计算器的编程功能,在图形计算器上实现贪吃蛇游戏,从而锻炼编程能力和算法能力,同时增强了casio图形计算器的娱乐功能,丰富同学们的课余生活。程序功能说明游戏功能:玩家通过casio图形计算器fx-cg20上的按键b、n、!和$或数学键2、4、6和8控制蛇在地图上寻找食物,每吃下一个食物时,蛇的长度增加一,同时出现另一个食物。本程序有两种游戏模式,一种为有墙模式,另一种为无墙模式。有墙模式下,蛇头碰到四面的墙(即显示的边界)或蛇身时,游戏结束。无墙模式下,只有在蛇头碰到蛇身的情况下游戏才会结束,如果蛇头到达了屏幕的边界,蛇头会在屏幕的另一边出现。(如图1)图 1图 2最高分记录功能:本程序能记录蛇长度的最长纪录,并在游戏结束的时候显示纪录长度和此次游戏的蛇的长度。(如图2)保存功能:玩家可以在游戏中途按p键可暂停游戏,玩家可以选择“save game&exit”(保存并退出游戏),或者“continue”(继续游戏)。(如图3)下次运行程序时,选择“load”即可继续上次保存的游戏。(如图4)图 3图 4设置功能:运行程序并选择“set”(如图4)可进入本程序的设置界面,玩家可以改变蛇头(head)或蛇身(body)的图案、改变蛇身颜色(color)、切换游戏模式(wall)或者返回主菜单(exit)。(如图5)图 5图 6特色:1.本程序提供的所有蛇头和蛇身图案都是由具有方向性的图案组成的。游戏过程中,蛇头始终指向前进方向,蛇身始终沿蛇身指向蛇头方向。(如图6)2.本程序共提供 8种蛇身颜色设置,其中玩家可以将蛇身颜色设置为“colorful”(彩色),设置后游戏过程中的蛇身颜色将由伪随机数决定,呈现出“彩蛇”的效果。 (如图6)研究过程1. 确定程序功能,请参考“程序功能说明”。2. 构思算法:本程序采用的主要算法为模拟法,程序运行时利用矩阵功能储存地图,使用“locate”命令显示蛇头和蛇身。需要记录的数据:蛇头坐标、蛇尾坐标、蛇头前进方向、蛇尾前进方向、食物坐标、蛇身长度、设置数据(颜色、游戏模式及图案设置数据)、地图地图记录方法:用一个218的矩阵保存地图,一个矩阵元素对应屏幕上的一个方格。如果方格为“空”,则用对应的矩阵元素用“0”表示;如果方格上有蛇身,蛇身没有拐弯的地方,用“2”表示,拐弯的地方,用“1”或“1”表示(具体取决于拐弯的方向)。游戏保存的实现:将“需要记录的数据”用另一个矩阵保存下来即可。按键检测方法:使用“getkey”命令获取按键后,因为该命令返回的数值最大为79且一定为正整数,所以创建一个793的矩阵mat h来判断按键。通过读取mat hk,3(k为“getkey”命令的返回值)即可立即判断按键是否有效。若按键有效,则可以非常方便地利用矩阵储存的数据来修改蛇头方向和图案,缩短了代码长度。蛇的实现:蛇前进时,用蛇身图案覆盖蛇头,在蛇头前进方向前一格的位置显示蛇头图案,同时用空格覆盖蛇尾。这样蛇就“前进”了一格。如果蛇头覆盖了食物(即吃下食物),不用空格覆盖蛇尾,则在游戏中显示的蛇会变长一格。3. 使用图形计算器编程实现。4. 进行程序调试。5. 游戏试用。具体实现步骤如下:1. 打开图形计算器,按1进入“计算矩阵”模式。2. 按e进入矩阵存储器。并创建矩阵:矩阵名尺寸用途mat a218程序运行时记录地图信息mat f218保存游戏存档信息mat b61记录最高分及游戏设置信息mat h793用于按键判断将mat b的(3,1)、(5,1)和(6,1)初始化为1,其余矩阵元素为0。mat h的初始化:第27行为1,0,2;第28行为0,-1,1第37行为0,1,3;第38行为-1,0,4第53行为1,0,2;第62行为0,1,3第64行为0,-1,1;第73行为-1,0,4其余矩阵元素为0。3. 返回主菜单,进入“程序”模式。4. 创建程序“snake”,代码请参考“程序代码分析”或附件。5. 创建程序“sload”,代码请参考“程序代码分析”或附件。6. 创建程序“spause”,代码请参考“程序代码分析”或附件。7. 创建程序“sset”,代码请参考“程序代码分析”或附件。程序代码分析为了便于阅读和交流,笔者将由计算器转换成txt文件得出的代码加以修改并增加缩进,同时还添加了程序注释。如需将代码导入计算器中,请参见附件。一、主程序snakeprogrammode:run_mat _a,b,f,hbstr 3食物图案_#e692_#e691_#e693_#e690_#e5ea_#e5e9_#e5eb_#e5e8_#e69c_#e69b_#e69d_#e69a_#e5ee_#e5ed_#e5ef_#e5ec_#e6c4_#e6c2_#e6c3_#e6c1_#e6cf_#e6ce_xkif r=1:then locate g,h,str 2根据游戏设置选择显示蛇身的颜色或生成随机数决定蛇身颜色,用蛇身图案覆盖当前的蛇头else if r=2:thenblue locate g,h,str 2else if r=3:then red locate g,h,str 2else if r=4:then magenta locate g,h,str 2else if r=5:then green locate g,h,str 2else if r=6:thencyan locate g,h,str 2else if r=7:then yellow locate g,h,str 2else ranint#(1,7)xif x=1:then locate g,h,str 2else if x=2:thenblue locate g,h,str 2else if x=3:then red locate g,h,str 2else if x=4:thenmagenta locate g,h,str 2else if x=5:then green locate g,h,str 2else if x=6:thencyan locate g,h,str 2else yellow locate g,h,str 2ifend:ifend:ifend:ifend:ifend:ifendifend:ifend:ifend:ifend:ifend:ifend:ifendg+cg:h+dh改变蛇头坐标,即蛇头前进一格if q:then 判断游戏模式有墙模式下,判断蛇头是否到达边界,如果是则结束游戏if g=0 or g=22 or h=0 or h=8:thenlbl 5lmat bq+1,1=lmat bq+1,1locate 1,1,the length of snakelocate 1,2,best:locate 6,2,mat bq+1,1locate 1,3,last:locate 6,3,lred locate 7,4,game overfor 1i to 200:nextwhile notgetkeywhileendgoto 6ifendelse 无墙模式下,如果蛇头到达了边界,则蛇头将从对边出现if g=0:then 21gelse g=22=1g:ifendif h=0:then 7helse h=8=1h:ifendifend当前的蛇头位置被蛇身覆盖,跳转到标志5结束游戏mat ag,h=goto 5locate g,h,str 1在新位置显示蛇头图案getkeyx:x=xk2mat ag,h修改矩阵a表示该位置已被蛇覆盖判断有没有吃到食物if gm or hn:thenlocate s,t, 如果没有吃到食物,用空格覆盖蛇尾if mat as,t2:then判断是否需要修改蛇尾方向if f:then 0f:mat as,teelse 0e:mat as,tf:ifendifend0mat as,ts+es:t+ft蛇尾前进一格if q=0:then无墙模式下,蛇尾到达边界后,在另一边出现if s=22:then 1selse if s=0:then 21selse if t=0:then 7telse t=8=1tifend:ifend:ifendifendelse 如果吃下了食物,再随机生成一个食物,保证食物不会出现在蛇上doranint#(1,21)mranint#(1,7)nlpwhile mat am,nlocate m,n,str 3l+1lifendgetkeyx:x=xklpwhile not k如果没有检测到任何按键,则继续循环if k=48:then 如果按下了p键,调用子程序“spause”prog spauseg=0=stopgoto 4else if mat hk,3=1 and mat hk,3=4:then根据矩阵h的信息判断是否按下了按键b、n、!、$或数学键2、4、6、8,再根据矩阵h的信息修改蛇头图案和方向if d and mat hk,1:then0dmat hk,1ccmat ag,hstrmid(str 4,mat hk,3,1)str 2strmid(str 5,mat hk,3,1)str 1else if c and mat hk,2:then0cmat hk,2ddmat ag,hstrmid(str 4,mat hk,3,1)str 2strmid(str 5,mat hk,3,1)str 1ifend:ifendifend:ifendgetkeykwhileendlbl 6menu play again?,yes,1,no,7lbl 7:stop二、子程序sloadprogrammode:run读取游戏存档信息mat fmat astrmid(str 7,mat f14,8,4)str 4strmid(str 7,mat f15,8,4)str 5strmid(str 4,2,1)str 2strmid(str 5,2,1)str 1for 1i to 21for 1j to 7mat ai,j0=locate i,j,str 2nextnextmat f1,8g:mat f2,8h: mat f3,8s:mat f4,8tmat f5,8c:mat f6,8d: mat f7,8e:mat f8,8fmat f9,8m:mat f10,8nmat f11,8lmat f12,8rmat f13,8qlocate g,h,str 1locate m,n,str 3fill(0,mat f)三、子程序spauseprogrammode:run暂停游戏时显示菜单,以及实现游戏保存功能0kmenu pause,continue,1,save game&exit,2lbl 1locate g,h,str 2for 1i to 600:nextwhile notgetkeywhileendreturnlbl 2mat amat fgmat f1,8:hmat f2,8: smat f3,8:tmat f4,8cmat f5,8:dmat f6,8: emat f7,8:fmat f8,8mmat f9,8:nmat f10,8lmat f11,8rmat f12,8qmat f13,8strsrc(str 7,str 4)mat f14,8strsrc(str 7,str 5)mat f15,80g四、子程序ssetprogrammode:run实现游戏设置菜单,本程序可以在主菜单上显示当前设置lbl 0:0tif strcmp(strleft(str 5,1),h):thenhead:+str 5str 5:ifendif strcmp(strleft(str 4,1),b):then body:+str 4str 4:ifendif q:thenwall:enabledstr 1else wall:disabledstr 1ifendif r=1 and r_#e6ce_,9部分字符无法显示,请见图8图 8lbl 9:x+4x:lbl 8:x+4x:lbl 7:x+4xlbl 6:x+4xlbl 5:x+4x:lbl 4if t:thenstrmid(str 7,x,4)str 5:xmat b6,1else strmid(str 7,x,4)str 4:xmat b5,1ifendgoto 0lbl a1rmenu set color,_black _,b,_blue _,c,_red _,d,_magenta _,e,_green _,f,_cyan _,g,_yellow _,h,colorful,ilbl i:r+1rlbl h:r+1rlbl g:r+1rlbl f:r+1rlbl e:r+1rlbl d:r+1rlbl c:r+1rlbl bgoto 0lbl j: not qq:goto 0lbl 3strmid(str 4,6,4)str 4
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 汉源县2025年面向社会公开招聘社区工作者(10人)备考题库带答案解析
- 泸州市江阳区2025年公开考试招聘社区专职工作者岗位调整情况备考题库带答案解析
- 2026年设备监理师之设备监理合同考试题库含答案(典型题)
- 2026年社会工作者之中级社会工作实务试题一带答案解析
- 2026招商银行总行校园招聘(冬季场)历年真题汇编及答案解析(夺冠)
- 2026年质量员之土建质量基础知识考试题库及参考答案【培优a卷】
- 2026中国牧工商集团有限公司校园招聘8人备考公基题库带答案解析
- 2026年质量员之设备安装质量专业管理实务考试题库带答案(综合题)
- 2025海南三亚市卫生健康委员会招聘下属事业单位工作人员(第7号)模拟试卷带答案解析
- 2026中电科思仪科技股份有限公司招聘笔试备考试卷附答案解析
- 冬季四防安全培训课件
- 评标专家廉政课件
- 第15课 红红火火中国年(教学课件)小学二年级上册 统编版《道德与法治》新教材
- 2025年政府会计准则制度实施能力考试考点清单解析集
- 宠物中医康复知识培训课件
- 《动物疫病流行病学调查技术规范 小反刍兽疫》
- 2025年中国诚通招聘笔试参考题库附带答案详解
- 插秧机课件教学课件
- 农用无人机管理制度
- 体育赛事组织质量保证措施
- 森林消防笔试题目及答案
评论
0/150
提交评论