跳转到内容

TI-Basic 程序/猜猜我

来自维基教科书,开放的书籍,开放的世界

程序描述

[编辑 | 编辑源代码]

GuessMe 是一款妙趣横生的游戏,其核心玩法是猜数字。在游戏中,玩家会与计算器进行对话般的互动。程序启动后,会打开主菜单,玩家有五个选项:

  1. 1,000
  2. 10,000
  3. 100,000
  4. 最高分数
  5. 退出

选项 4 会显示一个屏幕,上面列出了三种难度级别的当前最高分数,选项 5 则直接退出程序,返回到计算器的主输入屏幕。如果玩家选择选项 1、2 或 3,游戏将开始。游戏开始时,计算器会随机选择一个数字让玩家猜。如果玩家选择了选项 1,那么计算器选择的数字将是 1 到 1000 之间的任意数字。选项 2 的最大数字是 10000,选项 3 的最大数字是 100000。这意味着玩家可以选择三种难度级别,计算器会为每个难度级别保存单独的最高分数,这些分数都可以在主菜单中选择选项 4 查看“最高分数”页面。在选择一个数字让玩家猜之后,计算器会告诉玩家游戏规则并提示他输入第一个猜测。它会显示以下消息:“我正在想一个 1 到 1,000 之间的数字...”(在难度级别 2 中会显示“10,000”,在难度级别 3 中会显示“100,000”),“它是什么?”玩家然后可以输入他的第一个猜测。

在每次猜测之后,计算器会显示一条消息,如果玩家的猜测太低则显示“更高”,如果玩家的猜测太高则显示“更低”。在难度级别 3 中,计算器还可能显示“高很多”或“低很多”。
如果玩家猜测的数字小于 1 或大于最大值,计算器会显示“嘿!我说过它在 1 到 1,000 之间!”(和之前一样,最后这个数字取决于选择了哪个选项)。
如果玩家的猜测与答案相差 1,计算器会显示“你太接近了!再高一点!”或“你太接近了!再低一点!”
经过 20 次猜测后,计算器会用“快点!”的消息嘲笑玩家。
经过 30 次猜测后,计算器会显示“天哪!你真慢!!!”
计算器可能会向玩家显示的唯一其他消息是:如果玩家在第一次尝试时作弊来猜出答案,或者他恰巧在第一次尝试时猜中了秘密数字。如果这样做,计算器会简单地说“你是个骗子!”,程序就会突然结束。

当玩家最终猜到正确的数字时,会显示一系列消息。第一个是:“你猜对了!!!”,接着是正确的答案,然后是“用了这么多尝试:”,接着是玩家猜到数字所用过的次数。然后,如果玩家打破了该难度级别的最高分数,他会看到消息“最高分!!!”。

注意:计算器用于运行 GuessMe 的变量存储在 [J] 矩阵中。

程序代码

[编辑 | 编辑源代码]
PROGRAM:GUESSME
:ClrHome
:{3,9}→dim([J])
:0→X
:If 0=[J](3,7)
:Then
:100→[J](1,8)
:100→[J](2,8)
:100→[J](3,8)
:End
:Lbl 6
:Menu("MAIN MENU","1,000",1,"10,000",2,"100,000",3,"HI SCORES",5,"QUIT",Z)
:Lbl 5
:Output(2,3,"HI     1:     SCORES:  2:)
:Output(4,10,"3:)
:Output(2,13,[J](1,8)
:Output(3,13,[J](2,8)
:Output(4,13,[J](3,8)
:Output(7,3,"PRESS ENTER")
:Pause 
:ClrHome
:Goto 6
:Lbl 1
:1000→C
:Goto 4
:Lbl 2
:10000→C
:Goto 4
:Lbl 3
:100000→C
:Lbl 4
:randInt(1,C)→B
:ClrHome
:Disp "Im thinking of a","number between 1","and"
:If 3=log(C)
:Output(3,5,"1,000...")
:If 4=log(C)
:Output(3,5,"10,000...")
:If 5=log(C)
:Output(3,5,"100,000...")
:Lbl A
:Input "What is it",A
:X+1→X
:If X=20
:Disp "  Hurry it up!
:If X=30
:Disp " Gosh! You take","   forever!!!"
:If A<1 or A>C
:Then
:Disp " Hey! I said it"," was between 1"," and"
:If 3=log(C)
:Output(7,6,"1,000!")
:If 4=log(C)
:Output(7,6,"10,000!")
:If 5=log(C)
:Output(7,6,"100,000!")
:Goto A
:End
:If A<B-1 and A>B-25000
:Then
:Disp " Higher"
:Goto A
:End
:If A>B+1 and A<B+25000
:Then
:Disp " Lower"
:Goto A
:End
:If A≥B-1 and A<B
:Then
:Disp " Youre SO close!"," Just a little","    higher!"
:Goto A
:End
:If A≤B+1 and A>B
:Then
:Disp " Youre SO close!"," Just a little","     lower!"
:Goto A
:End
:If A≤B-25000
:Then
:Disp " Much higher"
:Goto A
:End
:If A≥B+25000
:Then
:Disp " Much lower"
:Goto A
:End
:If A=B and X=1
:Then
:Disp "  YOU CHEATER!"
:Output(1,1,"")
:Stop
:Else
:Disp "  You got it!!!",B,"","In this many","     tries:",X
:Output(2,1,"")
:End
:If X<[J](log(C)-2,8)
:Then
:X→[J](log(C)-2,8)
:Output(8,3,"HIGH SCORE!!")
:1→[J](3,7)
:Lbl Z
:Output(1,1,"")
:Stop
华夏公益教科书