利用图形计算器编写趣味数字游戏
陕西省西安市第一中学高三
刘曜、权力
【问题起源】
一些小型电子设备上常会有一些数字游戏,很有趣。例如计算机随机输出1个3位数,但是不予显示,要求玩家在最短的时间内把它猜出,而计算机可以提示玩家你猜的数字中有几位数字在位数上正确,有几个数字和正确数字一样。例如需要猜的数字为256,若第一次猜123,则计算机会告诉玩家猜的数里有0个数字猜对了并且所在位数也正确,有1个数字猜对了但是所在位数不一样。
【关键词】 图形计算器 编程 随机流
【程序实现】
以下就是对这个游戏的程序实现:
程序文件名:[GAME]
注:
1.灰色字体为程序注解,原程序中不出现
2.其中word文本格式中自带的换行符即代表程序的换行符
/---------------------------------------------------------------------------------------------------------/
“=======NUMBER GAME========”
/游戏开始的界面/
“
”
“LET’S
GUESS THE NUM!” ◢
“
”
Do
0→F
If
F=0
Then
“
”
“
”
“
”
“
”
“
”
“
”
“
”
“--------MENU---------”
/游戏的菜单界面/
“1
→ START THE
GAME”
/支持4个菜单选项/
“2
→ HOW TO
PLAY”
“3
→ SCORE”
“4
→ CLEAN
SCORE”
Do
“
”?→F
LpWhile
F≠1 And F≠2 And F≠3 And F≠4
“
”
“
”
“
”
“
”
“
”
“
”
“
”
“
”
“
”
IfEnd
If
F=2
Then
“----HOW TO PLAY ?----” ◢/进入游戏帮助界面,介绍游戏玩法/
“1.THE
COMPUTER WILL MAKE AN ARBITRARY NUMBER FROM 0 TO 999,And YOU MUST
GUESS IT OUT
” ◢
“
”
“2.THE
COMPUTER WILL TELL YOU HOW MANY NUMS YOU INPUT IS RIGHT”
◢
“
”
“3.’C:’MEANS HOW MANY NUM IS RIGHT,’U:’HOW MANY NUM
USED,’L:’LAST NUM YOU TRIED.” ◢
“
”
“4.EX.IF
THE RIGHT NUM IS
919” ◢
“And YOU
INPUT 909,IT WILL SAY:” ◢
“C:2”
“U:1”
“L:909” ◢
“
”
“5.IF YOU
TRIED MORE THAN 6 TIMES,THE COMPUTER WILL LAUGH AT YOU.IF MORE THAN
15 TIMES……”◢
“
”
“6.IF YOU
WANT TO GIVE UP And WANT TO KNOW THE RIGHT NUM,PLEASE INPUT
-1” ◢
“
”
“7.SCORE
RULE:” ◢
“
1→3 TIMES:+50
4→6 TIMES:+10
7→10 TIMES:+1
11→15 TIMES:-10
≥16
TIMES:-50” ◢
IfEnd
/---------------------------------------------------------------------------------------------------------/
If
F=3
Then
“-------SCORES-------” ◢/游戏积分系统,暂时只支持记录4位玩家/
“---PLAYER1---”
“TIMES:”:G◢
“SCORE:”:S◢
“
”
“
”
“
”
“
”
“
”
“
”
“
”
“---PLAYER2---”
“TIMES:”:H◢
“SCORE:”:T◢
“
”
“
”
“
”
“
”
“
”
“
”
“
”
“---PLAYER3---”
“TIMES:”:I◢
“SCORE:”:K◢
“
”
“
”
“
”
“
”
“
”
“
”
“
”
“---PLAYER4---”
“TIMES:”:J◢
“SCORE:”:U◢
“
”
“
”
“
”
“
”
“
”
“
”
“
”
IfEnd
/---------------------------------------------------------------------------------------------------------/
If
F=4
Then
“--------CLEAN--------”
/游戏初始化设置,玩家输入预设密码即可操作/
“PLEASE
INPUT THE KEY:(INPUT 0 TO EXIT)”
Do
?→L
If
L≠0 And L≠2.718281828
Then “KEY
IS WRONG!”
IfEND
LpWhile
L≠0 And L≠2.718281828
If
L=2.718281828
Then
1000→G
1000→H
1000→I
1000→J
0→S
0→T
0→K
0→U
“
”
“ALL
SCORES CLEANED!” ◢
IfEnd
IfEnd
LpWhile
F≠1
/---------------------------------------------------------------------------------------------------------/
Do “---WHO
ARE YOU?---”
/玩家登陆界面,支持4位注册玩家和游客/
“1
→ PLAYER1”
“2
→ PLAYER2”
“3
→ PLAYER3”
“4
→ PLAYER4”
“5
→ GUEST”
Do
?→r
“
”
LpWhile
r≠1 And r≠2 And r≠3 And r≠4 And r≠5
If
r=1
/分别输入玩家自己的密码,密码由编者提前在程序中录入/
Then
2.718281828→C
IfEnd
If
r=2
Then
1346852790→C
IfEnd
If
r=3
Then
852456→C
IfEnd
If
r=4
Then
1234567→C
IfEnd
If
r≠5
Then
“PLEASE INPUT KET:”
?→B
If
B=C
Then “KEY
IS PASS!” ◢
Else “KEY
IS WRONG!” ◢
0→r
“
”
“
”
“
”
“
”
“
”
“
”
“
”
IfEnd
IfEnd
/---------------------------------------------------------------------------------------------------------/
/以下为游戏主程序/
LpWhile
r≠1 And r≠2 And r≠3 And r≠4 And r≠5
INT
(RAN#×10)→A
/自动生成随机数/
INT
(RAN#×10)→B
INT
(RAN#×10)→C
A×100+B×10+C→E
0→R
“
”
“
”
“
”
“
”
“
”
“
”
Do
Do
“INPUT A
NUM IN[0,999]”
“TIMES:”
(R+1) ◢
/---------------------------------------------------------------------------------------------------------/
?→D
/玩家输入所猜的数字/
0→θ
If
D=3.1415926
/本游戏的隐藏秘籍,输入圆周率可进行作弊,直接胜利,但个人成绩不会更新/
Then
1→θ:E→D
IfEnd
LpWhile
(D-INT D≠0) OR D≥1000
OR D<-1
If
D≠-1
/输入-1认输可看到答案/
Then
INT(D÷100)→M
INT
((D-100×M)÷10)→N
D-100×M-10×N→O
0→P
0→Q
0→V
0→W
If
M=A
Then
P+1→P
Q+1→Q
If
M=N
Then
1→V
IfEnd
If
M=0
Then
1→W
IfEnd
Else If
M=B OR M=C
Then
Q+1→Q
If
M=N
Then
1→V
IfEnd
If
M=O
Then
1→W
IfEnd
IfEnd
IfEnd
If
N=B
Then
P+1→P
If
V≠1
Then
Q+1→Q
IfEnd
If
N=O
Then
1→W
IfEnd
Else If
N=A OR N=C
Then If
V≠1
Then
Q+1→Q
IfEnd
If
N=O
Then
1→W
IfEnd
IfEnd
IfEnd
If
O=C
Then
P+1→P
If
W≠1
Then
Q+1→Q
IfEnd
Else If
O=A OR O=B
Then If
W≠1
Then
Q+1→Q
IfEnd
IfEnd
IfEnd
/---------------------------------------------------------------------------------------------------------/
“C:”
/每猜一次计算机给玩家的线索提示/
P◢
“U:”
Q◢
R+1→R
“L:”
D◢
/---------------------------------------------------------------------------------------------------------/
If D=E
And θ≠1
/游戏结束后的计分系统/
Then If
R≤3
Then
50→Z
Else If
R≤6
Then
10→Z
Else If
R≤10
Then
1→Z
Else If
R≤15
Then
-10→Z
Else
-50→Z
IfEnd
IfEnd
IfEnd
IfEnd
If
r=1
Then
Z+S→S
If
R<G
Then
R→G
IfEnd
IfEnd
If
r=2
Then
Z+T→T
If
R<H
Then
R→H
IfEnd
IfEnd
If
r=3
Then
Z+K→K
If
R<I
Then
R→I
IfEnd
IfEnd
If
r=4
Then
Z+U→U
If
R<J
Then
R→J
IfEnd
IfEnd
IfEnd
LpWhile
D≠E
/---------------------------------------------------------------------------------------------------------/
If
R<9
/游戏结束后的不同结局/
Then
“CONGRATULATIONS!”
“YOU ARE
CLEVER!”
Else If
R≥11
Then If
R≤15
Then “YOU
ARE FOOL!”
Else
“YOU’VE TRIED:”
R
“BECAUSE
YOU ARE TOO STUPID ,SO THE SYSTEM WILL BE CRAZY!”
◢
While
0=0
“FOOL”
“
FOOL”
WHILEEND
IfEnd
Else “YOU
SHOULD WORK HARDER!”
IfEnd
IfEnd
“YOU’VE
TRIED:”
R◢
“THE RIGHT
NUM IS:”
E◢
Else “OH
NO, YOU LOST!”
“YOU’VE
TRIED:”
R◢
“THE RIGHT
NUM IS:”
E◢
/---------------------------------------------------------------------------------------------------------/
Prog
“[GAME]”
/重新载入游戏/
IfEnd
“
”
“
”
“
”
“
”
“
”
“
”
“
”
/---------------------------------------------------------------------------------------------------------/
/程序结束/
【程序小结】
游戏实现了简单的游戏操作和基本的可视化界面。
添加了玩家登陆系统和积分系统,还有重置系统。
另外还添加了游戏秘籍等附加功能。
【小结与反思】
在计算器中实现这种程序非常有限制,存储单元有限,所以程序会略显麻烦。
通过用计算器编程,帮我建立了更为完整和全面的思维体系,对于数学逻辑思维的强化可以使我们把这种思维方式运用到今后更广泛的学习领域去,可以使我受益匪浅!