[前言] [摘要][关键词][研究目的][程序功能说明]图形计算器;贪吃蛇;有墙模式下,蛇头碰到四面的墙(即显示的边界)或蛇身时,游戏结束。辽宁省沈阳市第十五中学2013年高中数学论文 图形计算器应用能力测试活动学生 图形计算器游戏贪吃蛇图 1图 2最高分记录功能:本程序能记录蛇长度的最长纪录,并在游戏结束的时候显示纪录长度和此次游戏的蛇的长度。(如图2)利用图形计算器的编程功能,在图形计算器上实现贪吃蛇游戏,从而锻炼编程能力和算法能力,同时增强了CASIO图形计算器的娱乐功能,丰富同学们的课余生活。 观察过以前的获奖论文,大多数的论文只利用到图形计算器的画图功能和小部分的编程功能。图形计算器编程功能的强大之处并未充分体现出来,而本文正是利用了图形计算器强大的编程功能,从而在图形计算器上实现了贪吃蛇游戏。游戏功能:玩家通过CASIO图形计算器fx-CG20上的按键B、N、!和$或数学键2、4、6和8控制蛇在地图上寻找食物,每吃下一个食物时,蛇的长度增加一,同时出现另一个食物。本程序有两种游戏模式,一种为有墙模式,另一种为无墙模式。无墙模式下,只有在蛇头碰到蛇身的情况下游戏才会结束,如果蛇头到达了屏幕的边界,蛇头会在屏幕的另一边出现。(如图1) 利用图形计算器的编程功能,在CASIO fx-CG20图形计算器平台上实现了贪吃蛇游戏。本文中的程序利用了图形计算器中的矩阵来储存数据,通过模拟法实现贪吃蛇游戏,有两种游戏模式,并提供游戏的最高分记录、保存和设置功能。12.特色:图 5图 31.图 6图 4[研究过程]保存功能:玩家可以在游戏中途按p键可暂停游戏,玩家可以选择“Save game&Exit”(保存并退出游戏),或者“Continue”(继续游戏)。(如图3)下次运行程序时,选择“Load”即可继续上次保存的游戏。(如图4)2.本程序共提供 8种蛇身颜色设置,其中玩家可以将蛇身颜色设置为“Colorful”(彩色),设置后游戏过程中的蛇身颜色将由伪随机数决定,呈现出“彩蛇”的效果。 (如图6)构思算法:确定程序功能,请参考“程序功能说明”。1.本程序提供的所有蛇头和蛇身图案都是由具有方向性的图案组成的。游戏过程中,蛇头始终指向前进方向,蛇身始终沿蛇身指向蛇头方向。(如图6)设置功能:运行程序并选择“Set”(如图4)可进入本程序的设置界面,玩家可以改变蛇头(Head)或蛇身(Body)的图案、改变蛇身颜色(Color)、切换游戏模式(Wall)或者返回主菜单(Exit)。(如图5)需要记录的数据:蛇头坐标、蛇尾坐标、蛇头前进方向、蛇尾前进方向、食物坐标、蛇身长度、设置数据(颜色、游戏模式及图案设置数据)、地图本程序采用的主要算法为模拟法,程序运行时利用矩阵功能储存地图,使用“Locate”命令显示蛇头和蛇身。地图记录方法:用一个21×8的矩阵保存地图,一个矩阵元素对应屏幕上的一个方格。如果方格为“空”,则用对应的矩阵元素用“0”表示;如果方格上有蛇身,蛇身没有拐弯的地方,用“2”表示,拐弯的地方,用“-1”或“1”表示(具体取决于拐弯的方向)。2按键检测方法:使用“Getkey”命令获取按键后,因为该命令返回的数值最大为79且一定为正整数,所以创建一个79×3的矩阵Mat H来判断按键。通过读取Mat H[K,3](K为“Getkey”命令的返回值)即可立即判断按键是否有效。若按键有效,则可以非常方便地利用矩阵储存的数据来修改蛇头方向和图案,缩短了代码长度。蛇的实现:蛇前进时,用蛇身图案覆盖蛇头,在蛇头前进方向前一格的位置显示蛇头图案,同时用空格覆盖蛇尾。这样蛇就“前进”了一格。如果蛇头覆盖了食物(游戏保存的实现:将“需要记录的数据”用另一个矩阵保存下来即可。即吃下食物),不用空格覆盖蛇尾,则在游戏中显示的蛇会变长一格。3.使用图形计算器编程实现。4.进行程序调试。5.游戏试用。具体实现步骤如下:1.打开图形计算器,按1进入“计算·矩阵”模式。2.按e进入矩阵存储器。并创建矩阵:矩阵名尺寸用途Mat A21×8程序运行时记录地图信息Mat F21×8保存游戏存档信息Mat B6×1记录最高分及游戏设置信息Mat H79×3用于按键判断将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.创建程序“S~LOAD”,代码请参考“程序代码分析”或附件。37.6.Lbl 8IfEndGoto 8\ 3Fill(0,Mat A)'食物图案Lbl 1:ClrTextMat B[3,1]→RMat B[4,1]→Q'_Mat _A,B,F,H[程序代码分析]1If Mat F[1,8]:Then Lbl 3:Prog \'ProgramMode:RUN一、主程序SNAKEStrMid(Str 5,2,1)→Str 1StrMid(Str 4,2,1)→Str 2StrMid(Str 7,Mat B[6,1],4)→Str 5StrMid(Str 7,Mat B[5,1],4)→Str 4'初始化地图序注释。如需将代码导入计算器中,请参见附件。创建程序“S~SET”,代码请参考“程序代码分析”或附件。创建程序“S~PAUSE”,代码请参考“程序代码分析”或附件。Else Menu \'读取最近一次游戏设置图 7'判断是否有存档,据此显示不同的菜单Menu \'初始化Str 1,Str 1保存当前方向的蛇头图案'Str 5保存蛇头四个方向的图案'Str 4保存蛇身四个方向的图案'初始化Str 2,Str 2保存当前方向的蛇身图案1为了便于阅读和交流,笔者将由计算器转换成txt文件得出的代码加以修改并增加缩进,同时还添加了程\69D__#E69A__#E5EE__#E5ED__#E5EF__#E5EC__#E6C4__#E6C2__#E6C3__#E6C1__#E6CF_>_#E6CE_<\ 7'字符串7包含可供设置的所有字符,由于计算机中没有这些字符,请见图74DoNext5→LLbl 2Goto 4While 1RanInt#(1,7)→N2→Mat A[I,1]RanInt#(1,21)→M'L记录蛇的长度WhileEndWhileEndLbl 4:0→KFor 1→I To 5Prog \Locate M,N,Str 3While NotGetkeyWhile NotGetkeyFor 1→I To 50:NextLpWhile Mat A[M,N]1→C:0→D:1→E:0→F1→S:1→T:5→G:1→HLocate 1,1,Str 2+Str 2+Str2+Str2+Str 1Do'游戏循环'K记录最近一次按键,程序有多次Getkey是为了提高按键反应灵敏度Getkey→X:X=>X→K'显示食物'生成第一个食物,M和N记录食物坐标'按键检测及使蛇前进的循环'短时间延时,按任意键即可以开始游戏'调用程序“S~LOAD”读取存档'S和T记录蛇尾坐标,G和H记录蛇头坐标'修改K之前先判断是否检测到按键,以防之前获得的按键被覆盖'C和D记录蛇头前进方向,E和F记录蛇尾前进方向If R=1:Then Locate G,H,Str 2'根据游戏设置选择显示蛇身的颜色或生成随机数决定蛇身颜色,用蛇身图案覆盖当前的蛇头5
好文档 - 专业文书写作范文服务资料分享网站