关键词不能为空

当前您在: 主页 > 数学 >

2013年高中数学论文 图形计算器应用能力测试活动学生 图形计算器游戏贪吃蛇

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2020-09-18 02:07
tags:高中数学论文

教师资格证高中数学面试范围-二维类比三维 高中数学

2020年9月18日发(作者:李宗盛)



2013年高中数学论文 图形计算器应用能力测试活动学生 图形计算
器游戏贪吃蛇
[摘要]
利用图形计算器的编程功能,在CASIO fx-CG20图形计算器平台上实现了贪吃蛇游
戏。本文 中的程序利用了图形计算器中的矩阵来储存数据,通过模拟法实现贪吃蛇游戏,
有两种游戏模式,并提供 游戏的最高分记录、保存和设置功能。
[关键词]
图形计算器;贪吃蛇;
[前言]
观察过以前的获奖论文,大多数的论文只利用到图形计算器的画图功能和小 部分的编
程功能。图形计算器编程功能的强大之处并未充分体现出来,而本文正是利用了图形计算
器强大的编程功能,从而在图形计算器上实现了贪吃蛇游戏。
[研究目的]
利用图形计算 器的编程功能,在图形计算器上实现贪吃蛇游戏,从而锻炼编程能力和
算法能力,同时增强了CASIO 图形计算器的娱乐功能,丰富同学们的课余生活。
[程序功能说明]
游戏功能:玩家通过CASIO图形计算器fx-CG20上的按键B、N、!和$$或数学键2、
4、6和8控制蛇在地图上寻找食物,每吃下一个食物时,蛇的长度增加一,同时出现另
一个食物。本 程序有两种游戏模式,一种为有墙模式,另一种为无墙模式。
有墙模式下,蛇头碰到四面的墙(即显示的边界)或蛇身时,游戏结束。
无墙模式下,只有在 蛇头碰到蛇身的情况下游戏才会结束,如果蛇头到达了屏幕的边
界,蛇头会在屏幕的另一边出现。(如图 1)

图 1 图 2

最高分记录功能:本程序能记录蛇长度的最长纪 录,并在游戏结束的时候显示纪录长
度和此次游戏的蛇的长度。(如图2)
保存功能:玩家可以在游戏中途按p键可暂停游戏,玩家可以选择“Save
game&Ex it”(保存并退出游戏),或者“Continue”(继续游戏)。(如图3)下次运行
程序时,选 择“Load”即可继续上次保存的游戏。(如图4)

1




图 3 图 4

设置功能:运行程序并选择“Set”(如图4)可进 入本程序的设置界面,玩家可以改
变蛇头(Head)或蛇身(Body)的图案、改变蛇身颜色(Co lor)、切换游戏模式(Wall)
或者返回主菜单(Exit)。(如图5)

图 5
特色:
图 6

1.本程序提供的所有蛇头和蛇身图案 都是由具有方向性的图案组成的。游戏过程中,
蛇头始终指向前进方向,蛇身始终沿蛇身指向蛇头方向。 (如图6)
2.本程序共提供 8种蛇身颜色设置,其中玩家可以将蛇身颜色设置为“Colorfu l”
(彩色),设置后游戏过程中的蛇身颜色将由伪随机数决定,呈现出“彩蛇”的效果。
(如图6)
[研究过程]
1. 确定程序功能,请参考“程序功能说明”。
2. 构思算法:
本程序采用的主要算法为模拟法,程序运行时利用矩阵功能储存地图,使用
“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 A
21×8 程序运行时记录地图信息
Mat F
21×8 保存游戏存档信息
Mat B
6×1 记录最高分及游戏设置信息
Mat H
79×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”,代码请参考“程序代码分析”或附件。
6. 创建程序“S~PAUSE”,代码请参考“程序代码分析”或附件。

3



7. 创建程序“S~SET”,代码请参考“程序代码分析”或附件。
[程序代码分析]
一、主程序SNAKE
'ProgramMode:RUN
'_Mat _A,B,F,H
→Str 3 '食物图案


69D__#E69A__#E5EE__#E5ED__#E5EF__#E5EC__#E6C4__#E6 C2__#E6C3__#E6C1__#E6C
F_>_#E6CE_<→Str 7 '字符串7包含可供设置的所有字符,由于计算机中没有这
些字符,请见图7

图 7
Mat B[3,1]→R
Mat B[4,1]→Q
StrMid(Str 7,Mat B[5,1],4)→Str 4
StrMid(Str 7,Mat B[6,1],4)→Str 5
Lbl 8
If Mat F[1,8]:Then '判断是否有存档,据此显示不同的菜单


'Str 4保存蛇身四个方向的图案
'Str 5保存蛇头四个方向的图案
'读取最近一次游戏设置
Menu
Else Menu
IfEnd
Lbl 3:Prog
Goto 8
Lbl 1:ClrText
StrMid(Str 4,2,1)→Str 2
StrMid(Str 5,2,1)→Str 1
Fill(0,Mat A)
For 1→I To 5

'初始化Str 2,Str 2保存当前方向的蛇身图案
'初始化Str 1,Str 1保存当前方向的蛇头图案
'初始化地图


为了便于阅读和交流,笔者将由计算器转换成txt文件得出的代码加以修改并增加缩进,同 时还添加了
程序注释。如需将代码导入计算器中,请参见附件。

4



2→Mat A[I,1]
Next
Locate 1,1,Str 2+Str 2+Str2+Str2+Str 1
1→S:1→T:5→G:1→H
1→C:0→D:1→E:0→F
5→L
Do


'S和T记录蛇尾坐标,G和H记录蛇头坐标
'C和D记录蛇头前进方向,E和F记录蛇尾前进方向
'L记录蛇的长度
'生成第一个食物,M和N记录食物坐标
RanInt#(1,21)→M
RanInt#(1,7)→N
LpWhile Mat A[M,N]
For 1→I To 50:Next
While NotGetkey
WhileEnd
Locate M,N,Str 3
Goto 4
Lbl 2
Prog
While NotGetkey
WhileEnd
'K记录最近一次按键,程序有多次Getkey是为了提高按键反应灵敏度
Lbl 4:0→K

While 1
Do
'游戏循环
'按键检测及使蛇前进的循环
'调用程序“S~LOAD”读取存档
'显示食物
'短时间延时,按任意键即可以开始游戏
'修改K之前先判断是否检测到按键,以防之前获得的按键被覆盖
Getkey→X:X=>X→K

If R=1:Then Locate G,H,Str 2 '根据游戏设置选择显示蛇身的颜色
或生成随机数决定蛇身颜色,用蛇身图案覆盖当前的蛇头
Else If R=2:ThenBlue Locate G,H,Str 2
Else If R=3:Then Red Locate G,H,Str 2

5



Else If R=4:Then Magenta Locate G,H,Str 2
Else If R=5:Then Green Locate G,H,Str 2
Else If R=6:ThenCyan Locate G,H,Str 2
Else If R=7:Then Yellow Locate G,H,Str 2
Else
RanInt#(1,7)→X
If X=1:Then Locate G,H,Str 2
Else If X=2:ThenBlue Locate G,H,Str 2
Else If X=3:Then Red Locate G,H,Str 2
Else If X=4:ThenMagenta Locate G,H,Str 2
Else If X=5:Then Green Locate G,H,Str 2
Else If X=6:ThenCyan Locate G,H,Str 2
Else Yellow Locate G,H,Str 2
IfEnd:IfEnd:IfEnd:IfEnd:IfEnd:IfEnd
IfEnd:IfEnd:IfEnd:IfEnd:IfEnd:IfEnd:IfEnd
G+C→G:H+D→H '改变蛇头坐标,即蛇头前进一格
If Q:Then '判断游戏模式
'有墙模式下,判断蛇头是否到达边界,如果是则结束游戏
If G=0 Or G=22 Or H=0 Or H=8:Then
Lbl 5
L>Mat B[Q+1,1]=>L→Mat B[Q+1,1]
Locate 1,1,
Locate 1,2,
Locate 6,2,Mat B[Q+1,1]
Locate 1,3,
Locate 6,3,L
Red Locate 7,4,
For 1→I To 200:Next
While NotGetkey
6





WhileEnd
Goto 6
IfEnd
Else
'无墙模式下,如果蛇头到达了边界,则蛇头将从对边出现
If G=0:Then 21→G
Else G=22=>1→G:IfEnd
If H=0:Then 7→H
Else H=8=>1→H:IfEnd
IfEnd
'当前的蛇头位置被蛇身覆盖,跳转到标志5结束游戏
Mat A[G,H]=>Goto 5
Locate G,H,Str 1 '在新位置显示蛇头图案
Getkey→X:X=>X→K
2→Mat A[G,H] '修改矩阵A表示该位置已被蛇覆盖
'判断有没有吃到食物
If G<>M Or H<>N:Then
Locate S,T, '如果没有吃到食物,用空格覆盖蛇尾
If Mat A[S,T]<>2:Then '判断是否需要修改蛇尾方向
If F:Then 0→F:Mat A[S,T]→E
Else 0→E:Mat A[S,T]→F:IfEnd
IfEnd
0→Mat A[S,T]
S+E→S:T+F→T '蛇尾前进一格
If Q=0:Then
'无墙模式下,蛇尾到达边界后,在另一边出现
If S=22:Then 1→S
Else If S=0:Then 21→S
Else If T=0:Then 7→T
7





Else T=8=>1→T
IfEnd:IfEnd:IfEnd
IfEnd
Else
'如果吃下了食物,再随机生成一个食物,保证食物不会出现在蛇上
Do
RanInt#(1,21)→M
RanInt#(1,7)→N
LpWhile Mat A[M,N]
Locate M,N,Str 3
L+1→L
IfEnd
Getkey→X:X=>X→K
LpWhile Not K

If K=48:Then '如果按下了p键,调用子程序“S~PAUSE”
'如果没有检测到任何按键,则继续循环
Prog
G=0=>Stop
Goto 4

Else If Mat H[K,3]>=1 And Mat H[K,3]<=4:Then
'根据矩阵H的信息判断是否按下了按键B、N、!、$$或数学键2、 4、6、8,再根
据矩阵H的信息修改蛇头图案和方向
If D And Mat H[K,1]:Then
0→D
Mat H[K,1]→C
C→Mat A[G,H]
StrMid(Str 4,Mat H[K,3],1)→Str 2
StrMid(Str 5,Mat H[K,3],1)→Str 1
Else If C And Mat H[K,2]:Then
0→C
Mat H[K,2]→D

8



D→Mat A[G,H]
StrMid(Str 4,Mat H[K,3],1)→Str 2
StrMid(Str 5,Mat H[K,3],1)→Str 1
IfEnd:IfEnd
IfEnd:IfEnd
Getkey→K
WhileEnd
Lbl 6
Menu
Lbl 7:Stop
二、子程序S~LOAD
'ProgramMode:RUN
'读取游戏存档信息
Mat F→Mat A
StrMid(Str 7,Mat F[14,8],4)→Str 4
StrMid(Str 7,Mat F[15,8],4)→Str 5
StrMid(Str 4,2,1)→Str 2
StrMid(Str 5,2,1)→Str 1
For 1→I To 21
For 1→J To 7
Mat A[I,J]<>0=>Locate I,J,Str 2
Next
Next
Mat F[1,8]→G:Mat F[2,8]→H: Mat F[3,8]→S:Mat F[4,8]→T
Mat F[5,8]→C:Mat F[6,8]→D: Mat F[7,8]→E:Mat F[8,8]→F
Mat F[9,8]→M:Mat F[10,8]→N
Mat F[11,8]→L
Mat F[12,8]→R
Mat F[13,8]→Q
Locate G,H,Str 1
Locate M,N,Str 3

9



Fill(0,Mat F)

三、子程序S~PAUSE
'ProgramMode:RUN
'暂停游戏时显示菜单,以及实现游戏保存功能
0→K
Menu
Lbl 1
Locate G,H,Str 2
For 1→I To 600:Next
While NotGetkey
WhileEnd
Return
Lbl 2
Mat A→Mat F
G→Mat F[1,8]:H→Mat F[2,8]: S→Mat F[3,8]:T→Mat F[4,8]
C→Mat F[5,8]:D→Mat F[6,8]: E→Mat F[7,8]:F→Mat F[8,8]
M→Mat F[9,8]:N→Mat F[10,8]
L→Mat F[11,8]
R→Mat F[12,8]
Q→Mat F[13,8]
StrSrc(Str 7,Str 4)→Mat F[14,8]
StrSrc(Str 7,Str 5)→Mat F[15,8]
0→G

四、子程序S~SET
'ProgramMode:RUN
'实现游戏设置菜单,本程序可以在主菜单上显示当前设置
Lbl 0:0→T
If StrCmp(StrLeft(Str 5,1),→Str 5:IfEnd
If StrCmp(StrLeft(Str 4,1),→Str 4:IfEnd

10



If Q:Then
→Str 1
Else →Str 1
IfEnd
If R>=1 And R<=7:Then

_→Str 6
Else →Str 6
IfEnd
Menu
Lbl 1:1→T:Lbl 2
If T:Then →Str 6
Else →Str 6:IfEnd
1→X
Menu Str
6,
E69B__ #E69D__#E69A_
C3__#E6C1_
'部分字符无法显示,请见图8

图 8
Lbl 9:X+4→X:
Lbl 8:X+4→X:
Lbl 7:X+4→X
Lbl 6:X+4→X
Lbl 5:X+4→X:Lbl 4
If T:Then
StrMid(Str 7,X,4)→Str 5:X→Mat B[6,1]
Else StrMid(Str 7,X,4)→Str 4:X→Mat B[5,1]
IfEnd

11



Goto 0
Lbl A
1→R
Menu
_
Lbl I:R+1→R
Lbl H:R+1→R
Lbl G:R+1→R
Lbl F:R+1→R
Lbl E:R+1→R
Lbl D:R+1→R
Lbl C:R+1→R
Lbl B
Goto 0
Lbl J: Not Q→Q:Goto 0
Lbl 3
StrMid(Str 4,6,4)→Str 4
StrMid(Str 5,6,4)→Str 5
R→Mat B[3,1]
Q→Mat B[4,1]
[总结]
1. 贪吃蛇游戏能在图形计算器上实现最重 要的基础是利用了矩阵储存数据,矩阵的作用
相当于内存和硬盘在计算机中的作用。在笔者编写的其他的 较复杂的图形计算器程序
中,矩阵都起到了不可或缺的作用。
2. 本程序使用了地图和矩阵 一一对应的方法。利用矩阵上的信息不仅可以快速的判断蛇
头是否碰到了蛇身,还可以记录蛇头拐弯的方 向,便于修改蛇尾前进方向。
3. 通过读取矩阵里的信息可以立即判断按键是否有效,同时矩阵里提 供了修改变量所需
的信息。这个方法可以减少程序中的判断,加快程序的运行速度,使代码更简短,更< br>易编写,更易读。
4.

12

高中数学田丰-高中数学什么最重要性


最近湖南高中数学学考试题-高中数学校本教材研究课题


高中数学线性规划知识点-评高中数学高级教师个人总结


高中数学研究性学习课题选-高中数学与物理竞赛


2018四川高中数学竞赛预赛-高中数学教师资格证考试笔试


高中数学微课ppt-高中数学进阶教程天猫


新东方高中数学王牌教师-高中数学讲解资料书


高中数学 概率 导入-平面解析几何高中数学



本文更新与2020-09-18 02:07,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/402222.html

2013年高中数学论文 图形计算器应用能力测试活动学生 图形计算器游戏贪吃蛇的相关文章

  • 爱心与尊严的高中作文题库

    1.关于爱心和尊严的作文八百字 我们不必怀疑富翁的捐助,毕竟普施爱心,善莫大焉,它是一 种美;我们也不必指责苛求受捐者的冷漠的拒绝,因为人总是有尊 严的,这也是一种美。

    小学作文
  • 爱心与尊严高中作文题库

    1.关于爱心和尊严的作文八百字 我们不必怀疑富翁的捐助,毕竟普施爱心,善莫大焉,它是一 种美;我们也不必指责苛求受捐者的冷漠的拒绝,因为人总是有尊 严的,这也是一种美。

    小学作文
  • 爱心与尊重的作文题库

    1.作文关爱与尊重议论文 如果说没有爱就没有教育的话,那么离开了尊重同样也谈不上教育。 因为每一位孩子都渴望得到他人的尊重,尤其是教师的尊重。可是在现实生活中,不时会有

    小学作文
  • 爱心责任100字作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文
  • 爱心责任心的作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文
  • 爱心责任作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文
2013年高中数学论文 图形计算器应用能力测试活动学生 图形计算器游戏贪吃蛇随机文章