可以使用 TI-Basic 编程简单的游戏。这里给出的示例的解释旨在简单说明,而不是技术指南。
以下程序是使用 TI-Basic 编写的简单乒乓球游戏。我们首先定义游戏代码
:DelVar C :DelVar G :7→A :8→B :1→D :-1→E :6→F :While not(C :ClrHome :Output(A,B,".") :Output(8,F,"--") :If A=1 :-D→D :If A=7 :Then :If B≥F and B≤F+1 :-D→D :End :If B=1 or B=16 :-E→E :(A=8)→C :A+D→A :B+E→B :getKey→K :F+(K=26 and F<13)-(K=24 and F>1)→F :End :Pause "U LOSE" :ClrHome :Output(1,1,"")
这里,我们开始解释代码
:Delvar C :Delvar G :7→A :8→B :1→D :-1→E :6→F
这些第一行将变量初始化为特定值。A
和 B
变量是球的坐标。C
使整个循环保持运行。D
和 E
会改变我们的球坐标。它们允许我们使用比使用 1 和 -1 更有效的编码。F
是我们桨的水平坐标,因此它可以来回移动。
:While not(C
在not(命令返回 1(真),如果条件等于 0。这等效于使用 While C=0
,但减少了一个字节。
:ClrHome
每次有东西移动时(或至少每次循环重复时)刷新屏幕。
:Output(A,B,".") :Output(8,F,"--")
这将符号打印到屏幕上。
:If A=1 :-D→D
这告诉球通过反转其方向来“反弹”天花板。
:If A=7 :Then :If B>=F and B<=F+1 :-D→D :End
这里,这个步骤在很小的空间内做了一些事情。第一行检查球是否在屏幕底部。如果是,那么它检查球是否在桨上。如果桨在那里,那么球就会反弹。
:If B=1 or B=16 :-E→E
这告诉球反弹右侧和左侧的墙壁。
:If A=8 :1→C
这是触发损失的原因。这会检查球是否击中了屏幕底部。如果是,那么程序将终止循环。
:A+D→A :B+E→B
此步骤通过更改坐标使球在屏幕上移动。
:getKey→K :F+(K=26 and F<13)-(K=24 and F>1)→F
这是使游戏运行的原因。这是用户输入步骤。getkey→K
将用户按键存储到 K
中。然后,在下一行中,F
(桨的水平坐标)会增加一,如果用户按下 ⯈ (26) 并且小于 13(屏幕右侧 = 16 - 3(用于桨的大小))
一个等式如果为真总是变为 1,如果为假则变为 0,因此如果为真,那么它将在那个方向移动一格,如果用户按下 ⯇ (24) 则同样原则适用。
:End
此行定义了程序主要部分运行所在的循环的结束。
:Pause "U LOSE" :ClrHome :Output(1,1,"")
这些行在您失败时运行。它将显示一条消息,清除屏幕并阻止显示“完成”。
以下是更优化的版本
PROGRAM:PONG :7→A:8→B :DelVar C1→D :-1→E:6→F :Repeat C :If A=1 :-D→D :E-2Emax({A=7,B>=F,B<=F+3→ :E-2E(B=1 or B=16)→E :A=8→C :Output(A,B," //")1 space :A+D→A :B+E→B :Output(A,B,"." :getKey :F+(Ans=26)-(Ans=24 :If 15<=Ans :1 :If 0>=Ans :13 :Output(8,F," //") :Ans→F :Output(8,F,"--") :End :ClrHome :Output(1,1,"U LOSE")
可以添加计分系统和其他功能,但将在后面的文章中解释。这个程序运行得很好,只是光标移动不够快。为了使平台移动得更快,请更改
:getKey→K :F+(K=26 and F<13)-(K=24 and F>1)→F
为
:getKey→K :If (K=26 and F<13) :F+2→F :If (K=24 and F>1) :F-2→F
也可以写成以下形式
:getKey→K :F+2(K=26 and F<13)-2(K=24 and F>1)→F
这将使平台跳过一个空间,使平台更快。
前一个:高级编程
下一个:命令列表
目录:TI-Basic Z80 编程