【问题标题】:The program I am writing ends before it is supposed to (TI-Basic)我正在编写的程序在它应该结束之前结束(TI-Basic)
【发布时间】:2016-01-19 20:32:22
【问题描述】:

我正在尝试在计算器中创建 Frogger,但是当程序运行时,它在完成游戏之前就结束了。有人知道 TI Basic 吗?

 :Menu("FROGGER","START",S,"QUIT",Q 
:Lbl Q 
:ClrHome 
:Pause "BYE 
:ClrHome 
:Output(1,1," 
:Return
:Lbl S 
:ClrHome 
:‾1→S 
:Lbl 1 
:ClrHome 
:S+1→S 
:8→A
:8→B
:randInt(3,14→C 
:randInt(3,14→D 
:randInt(3,14→E 
:randInt(3,14→F 
:randInt(3,14→G 
:randInt(3,14→H 
:While 1
:getKey→K 
:If max(K=24,25,26,34 
:Output(A,B,"  
:Output(2,C+1,"  
:Output(3,D+1,"  
:Output(4,E+1,"  
:Output(5,F+1,"  
:Output(6,G+1,"  
:Output(7,H+1,"  
:For(N,1,7 
:Output(N,1,"  
:End 
:A-(K=25)(A>1)+(K=34)(A<8→A 
:B-(K=24)(B>3)+(K=26)(B<14)→B 
:Output(A,B,"^ 
:Output(2,C,"< 
:Output(3,D,"< 
:Output(4,E,"< 
:Output(5,F,"< 
:Output(6,G,"< 
:Output(7,H,"< 
:C-1→C 
:D-1→D 
:E-1→E 
:F-1→F 
:G-1→G 
:H-1→H 
:If not(C 
:14→C 
:If not(D 
:14→D 
:If not(E 
:14→E 
:If not(F 
:14→F 
:If not(G 
:14→G 
:If not(H 
:14→H 
:If A=2 and B=C or A=3 and B=D or A=4 and B=E or A=5 and B=F or A=6 and B=G or A=7 and B=H:Goto 2 
:If A=1 
:Goto 1 
:End 
:Lbl 2 
:ClrHome 
:Disp "SCORE:",S 
:Pause 
:ClrHome 
:Output(1,1," 
:DelVar ADelVar BDelVar CDelVar DDelVar EDelVar FDelVar GDelVar HDelVar KDelVar S

它会一直正常运行,直到您单击开始,此时它会结束并显示分数。不知道具体是哪一部分出错了。

【问题讨论】:

    标签: ti-basic


    【解决方案1】:

    您的 While 循环在 Goto 2 处退出,所以我认为您的 If 语句是错误的。我无法想象所有相邻的andor 都能正常工作;尝试用括号分隔它们。

    例如,If (A=2 and B=C) or (A=3 and B=D) or (A=4 and B=E) 而不是If A=2 and B=C or A=3 and B=D or A=4 and B=E

    另外,下次请解释您的代码和您使用的所有变量。直接转储原始代码并询问“为什么它不起作用”通常是不受欢迎的。

    【讨论】:

    • and 的优先级高于 or
    • @ThomasKwa 不知道,谢谢。尽管原始代码仍有很多不足之处。
    【解决方案2】:

    我手动对代码进行了正则表达式,使其适合SourceCoder,并得到this .8xp。第24行有个小错误:

    :If max(K=24,25,26,34
    

    应该是

    :If max(K={24,25,26,34 
    

    除此之外,代码似乎运行良好,尽管它的代码风格和速度有待改进。

    如果您想了解如何改进游戏,请考虑在Code Review 上发帖。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-03-01
      • 2019-04-03
      • 1970-01-01
      • 2021-04-12
      • 1970-01-01
      • 1970-01-01
      • 2016-06-14
      相关资源
      最近更新 更多