高中数学论文 图形计算器应用能力测试活动学生 图形计算器游戏贪吃蛇Word文件下载.docx

上传人:b****5 文档编号:17968824 上传时间:2022-12-12 格式:DOCX 页数:13 大小:261.51KB
下载 相关 举报
高中数学论文 图形计算器应用能力测试活动学生 图形计算器游戏贪吃蛇Word文件下载.docx_第1页
第1页 / 共13页
高中数学论文 图形计算器应用能力测试活动学生 图形计算器游戏贪吃蛇Word文件下载.docx_第2页
第2页 / 共13页
高中数学论文 图形计算器应用能力测试活动学生 图形计算器游戏贪吃蛇Word文件下载.docx_第3页
第3页 / 共13页
高中数学论文 图形计算器应用能力测试活动学生 图形计算器游戏贪吃蛇Word文件下载.docx_第4页
第4页 / 共13页
高中数学论文 图形计算器应用能力测试活动学生 图形计算器游戏贪吃蛇Word文件下载.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

高中数学论文 图形计算器应用能力测试活动学生 图形计算器游戏贪吃蛇Word文件下载.docx

《高中数学论文 图形计算器应用能力测试活动学生 图形计算器游戏贪吃蛇Word文件下载.docx》由会员分享,可在线阅读,更多相关《高中数学论文 图形计算器应用能力测试活动学生 图形计算器游戏贪吃蛇Word文件下载.docx(13页珍藏版)》请在冰豆网上搜索。

高中数学论文 图形计算器应用能力测试活动学生 图形计算器游戏贪吃蛇Word文件下载.docx

需要记录的数据:

蛇头坐标、蛇尾坐标、蛇头前进方向、蛇尾前进方向、食物坐标、蛇身长度、设置数据(颜色、游戏模式及图案设置数据)、地图

地图记录方法:

用一个21×

8的矩阵保存地图,一个矩阵元素对应屏幕上的一个方格。

如果方格为“空”,则用对应的矩阵元素用“0”表示;

如果方格上有蛇身,蛇身没有拐弯的地方,用“2”表示,拐弯的地方,用“-1”或“1”表示(具体取决于拐弯的方向)。

游戏保存的实现:

将“需要记录的数据”用另一个矩阵保存下来即可。

按键检测方法:

使用“Getkey”命令获取按键后,因为该命令返回的数值最大为79且一定为正整数,所以创建一个79×

3的矩阵MatH来判断按键。

通过读取MatH[K,3](K为“Getkey”命令的返回值)即可立即判断按键是否有效。

若按键有效,则可以非常方便地利用矩阵储存的数据来修改蛇头方向和图案,缩短了代码长度。

蛇的实现:

蛇前进时,用蛇身图案覆盖蛇头,在蛇头前进方向前一格的位置显示蛇头图案,同时用空格覆盖蛇尾。

这样蛇就“前进”了一格。

如果蛇头覆盖了食物(即吃下食物),不用空格覆盖蛇尾,则在游戏中显示的蛇会变长一格。

3.使用图形计算器编程实现。

4.进行程序调试。

5.游戏试用。

具体实现步骤如下:

1.打开图形计算器,按1进入“计算·

矩阵”模式。

2.按e进入矩阵存储器。

并创建矩阵:

矩阵名

尺寸

用途

MatA

21×

8

程序运行时记录地图信息

MatF

保存游戏存档信息

MatB

1

记录最高分及游戏设置信息

MatH

79×

3

用于按键判断

将MatB的(3,1)、(5,1)和(6,1)初始化为1,其余矩阵元素为0。

MatH的初始化:

第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”,代码请参考“程序代码分析”或附件。

7.创建程序“S~SET”,代码请参考“程序代码分析”或附件。

[程序代码分析]

一、主程序SNAKE

'

ProgramMode:

RUN

_Mat_A,B,F,H

"

B"

→Str3'

食物图案

_#E692__#E691__#E693__#E690__#E5EA__#E5E9__#E5EB__#E5E8__#E69C__#E69B__#E69D__#E69A__#E5EE__#E5ED__#E5EF__#E5EC__#E6C4__#E6C2__#E6C3__#E6C1__#E6CF_>

_#E6CE_<

→Str7'

字符串7包含可供设置的所有字符,由于计算机中没有这些字符,请见图7

图7

MatB[3,1]→R'

读取最近一次游戏设置

MatB[4,1]→Q

StrMid(Str7,MatB[5,1],4)→Str4'

Str4保存蛇身四个方向的图案

StrMid(Str7,MatB[6,1],4)→Str5'

Str5保存蛇头四个方向的图案

Lbl8

IfMatF[1,8]:

Then'

判断是否有存档,据此显示不同的菜单

Menu"

Snake"

"

Newgame"

1,"

Load"

2,"

Set"

3

ElseMenu"

IfEnd

Lbl3:

Prog"

S~SET"

Goto8

Lbl1:

ClrText

StrMid(Str4,2,1)→Str2'

初始化Str2,Str2保存当前方向的蛇身图案

StrMid(Str5,2,1)→Str1'

初始化Str1,Str1保存当前方向的蛇头图案

Fill(0,MatA)'

初始化地图

For1→ITo5

2→MatA[I,1]

Next

Locate1,1,Str2+Str2+Str2+Str2+Str1

1→S:

1→T:

5→G:

1→H'

S和T记录蛇尾坐标,G和H记录蛇头坐标

1→C:

0→D:

1→E:

0→F'

C和D记录蛇头前进方向,E和F记录蛇尾前进方向

5→L'

L记录蛇的长度

Do'

生成第一个食物,M和N记录食物坐标

RanInt#(1,21)→M

RanInt#(1,7)→N

LpWhileMatA[M,N]

For1→ITo50:

Next'

短时间延时,按任意键即可以开始游戏

WhileNotGetkey

WhileEnd

LocateM,N,Str3'

显示食物

Goto4

Lbl2

S~LOAD"

'

调用程序“S~LOAD”读取存档

K记录最近一次按键,程序有多次Getkey是为了提高按键反应灵敏度

Lbl4:

0→K

While1'

游戏循环

按键检测及使蛇前进的循环

修改K之前先判断是否检测到按键,以防之前获得的按键被覆盖

Getkey→X:

X=>

X→K

IfR=1:

ThenLocateG,H,Str2'

根据游戏设置选择显示蛇身的颜色或生成随机数决定蛇身颜色,用蛇身图案覆盖当前的蛇头

ElseIfR=2:

ThenBlueLocateG,H,Str2

ElseIfR=3:

ThenRedLocateG,H,Str2

ElseIfR=4:

ThenMagentaLocateG,H,Str2

ElseIfR=5:

ThenGreenLocateG,H,Str2

ElseIfR=6:

ThenCyanLocateG,H,Str2

ElseIfR=7:

ThenYellowLocateG,H,Str2

Else

RanInt#(1,7)→X

IfX=1:

ThenLocateG,H,Str2

ElseIfX=2:

ElseIfX=3:

ElseIfX=4:

ThenMagentaLocateG,H,Str2

ElseIfX=5:

ElseIfX=6:

ElseYellowLocateG,H,Str2

IfEnd:

G+C→G:

H+D→H'

改变蛇头坐标,即蛇头前进一格

IfQ:

判断游戏模式

有墙模式下,判断蛇头是否到达边界,如果是则结束游戏

IfG=0OrG=22OrH=0OrH=8:

Then

Lbl5

L>

MatB[Q+1,1]=>

L→MatB[Q+1,1]

Locate1,1,"

Thelengthofsnake"

Locate1,2,"

Best:

Locate6,2,MatB[Q+1,1]

Locate1,3,"

Last:

Locate6,3,L

RedLocate7,4,"

GAMEOVER"

For1→ITo200:

Goto6

无墙模式下,如果蛇头到达了边界,则蛇头将从对边出现

IfG=0:

Then21→G

ElseG=22=>

1→G:

IfH=0:

Then7→H

ElseH=8=>

1→H:

当前的蛇头位置被蛇身覆盖,跳转到标志5结束游戏

MatA[G,H]=>

Goto5

LocateG,H,Str1'

在新位置显示蛇头图案

2→MatA[G,H]'

修改矩阵A表示该位置已被蛇覆盖

判断有没有吃到食物

IfG<

>

MOrH<

N:

LocateS,T,"

"

如果没有吃到食物,用空格覆盖蛇尾

IfMatA[S,T]<

2:

Then'

判断是否需要修改蛇尾方向

IfF:

Then0→F:

MatA[S,T]→E

Else0→E:

MatA[S,T]→F:

0→MatA[S,T]

S+E→S:

T+F→T'

蛇尾前进一格

IfQ=0:

无墙模式下,蛇尾到达边界后,在另一边出现

IfS=22:

Then1→S

ElseIfS=0:

Then21→S

ElseIfT=0:

Then7→T

ElseT=8=>

1→T

如果吃下了食物,再随机生成一个食物,保证食物不会出现在蛇上

Do

LocateM,N,Str3

L+1→L

LpWhileNotK'

如果没有检测到任何按键,则继续循环

IfK=48:

如果按下了p键,调用子程序“S~PAUSE”

S~PAUSE"

G=0=>

Stop

ElseIfMatH[K,3]>

=1AndMatH[K,3]<

=4:

根据矩阵H的信息判断是否按下了按键B、N、!

、$或数学键2、4、6、8,再根据矩阵H的信息修改蛇头图案和方向

IfDAndMatH[K,1]:

0→D

MatH[K,1]→C

C→MatA[G,H]

StrMid(Str4,MatH[K,3],1)→Str2

StrMid(Str5,MatH[K,3],1)→Str1

ElseIfCAndMatH[K,2]:

0→C

MatH[K,2]→D

D→MatA[G,H]

Getkey→K

Lbl6

Playagain?

Yes"

No"

7

Lbl7:

二、子程序S~LOAD

读取游戏存档信息

MatF→MatA

StrMid(Str7,MatF[14,8],4)→Str4

StrMid(Str7,MatF[15,8],4)→Str5

StrMid(Str4,2,1)→Str2

StrMid(Str5,2,1)→Str1

For1→ITo21

For1→JTo7

MatA[I,J]<

0=>

LocateI,J,Str2

MatF[1,8]→G:

MatF[2,8]→H:

MatF[3,8]→S:

MatF[4,8]→T

MatF[5,8]→C:

MatF[6,8]→D:

MatF[7,8]→E:

MatF[8,8]→F

MatF[9,8]→M:

MatF[10,8]→N

MatF[11,8]→L

MatF[12,8]→R

MatF[13,8]→Q

LocateG,H,Str1

Fill(0,MatF)

三、子程序S~PAUSE

暂停游戏时显示菜单,以及实现游戏保存功能

Pause"

Continue"

Savegame&

Exit"

2

Lbl1

LocateG,H,Str2

For1→ITo600:

Return

MatA→MatF

G→MatF[1,8]:

H→MatF[2,8]:

S→MatF[3,8]:

T→MatF[4,8]

C→MatF[5,8]:

D→MatF[6,8]:

E→MatF[7,8]:

F→MatF[8,8]

M→MatF[9,8]:

N→MatF[10,8]

L→MatF[11,8]

R→MatF[12,8]

Q→MatF[13,8]

StrSrc(Str7,Str4)→MatF[14,8]

StrSrc(Str7,Str5)→MatF[15,8]

0→G

四、子程序S~SET

实现游戏设置菜单,本程序可以在主菜单上显示当前设置

Lbl0:

0→T

IfStrCmp(StrLeft(Str5,1),"

H"

):

Then"

Head:

+Str5→Str5:

IfStrCmp(StrLeft(Str4,1),"

Then"

Body:

+Str4→Str4:

Wall:

Enabled"

→Str1

Else"

Disabled"

IfR>

=1AndR<

=7:

Color:

+StrMid("

_Black__Blue__Red__Magenta__Green__Cyan__Yellow_"

R,1)→Str6

Colorful"

→Str6

Str5,1,Str4,2,Str6,A,Str1,J,"

IfT:

Sethead"

Setbody"

→Str6:

1→X

MenuStr6,"

_#E692__#E691__#E693__#E690_"

4,"

_#E5EA__#E5E9__#E5EB__#E5E8_"

5,"

_#E69C__#E69B__#E69D__#E69A_"

6,"

_#E5EE__#E5ED__#E5EF__#E5EC_"

7,"

_#E6C4__#E6C2__#E6C3__#E6C1_"

8,"

_#E6CF_>

9

部分字符无法显示,请见图8

图8

Lbl9:

X+4→X:

Lbl8:

X+4→X

Lbl6:

Lbl5:

Lbl4

StrMid(Str7,X,4)→Str5:

X→MatB[6,1]

ElseStrMid(Str7,X,4)→Str4:

X→MatB[5,1]

Goto0

LblA

1→R

Setcolor"

_Black_"

B,"

_Blue_"

C,"

_Red_"

D,"

_Magenta_"

E,"

_Green_"

F,"

_Cyan_"

G,"

_Yellow_"

H,"

I

LblI:

R+1→R

LblH:

LblG:

LblF:

LblE:

LblD:

LblC:

LblB

LblJ:

NotQ→Q:

Lbl3

StrMid(Str4,6,4)→Str4

StrMid(Str5,6,4)→Str5

R→MatB[3,1]

Q→MatB[4,1]

[总结]

1.贪吃蛇游戏能在图形计算器上实现最重要的基础是利用了矩阵储存数据,矩阵的作用相当于内存和硬盘在计算机中的作用。

在笔者编写的其他的较复杂的图形计算器程序中,矩阵都起到了不可或缺的作用。

2.本程序使用了地图和矩阵一一对应的方法。

利用矩阵上的信息不仅可以快速的判断蛇头是否碰到了蛇身,还可以记录蛇头拐弯的方向,便于修改蛇尾前进方向。

3.通过读取矩阵里的信息可以立即判断按键是否有效,同时矩阵里提供了修改变量所需的信息。

这个方法可以减少程序中的判断,加快程序的运行速度,使代码更简短,更易编写,更易读。

4.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 临床医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1