跳转到内容

TI-Basic Z80 编程/编程游戏

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

可以使用 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

这些第一行将变量初始化为特定值。AB 变量是球的坐标。C 使整个循环保持运行。DE 会改变我们的球坐标。它们允许我们使用比使用 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 编程

华夏公益教科书