如何将矩阵传递给 "Function"

How to Pass Matrix into "Function"

我正在制作一款 TI-BASIC 游戏,玩家可以在主屏幕上的二维地图上移动。我为每张地图制作了一个 8x16 矩阵:

    [[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]
     [1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]
     [1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,1]
     [1,0,1,0,1,1,1,1,1,1,1,1,1,1,0,1]
     [1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1]
     [1,0,1,1,1,1,1,1,1,1,1,1,1,1,0,1]
     [1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]
     [1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]]

...和这个 "function" 来显示它:

    For(A,1,8)
    For(B,1,16)
    Output(A,B,sub(" I",[A](C,D)+1,1))
    End:End

现在,我有多个映射(矩阵)并且需要 "call" 使用不同的矩阵来发挥作用,而无需每次都重新键入该代码。有办法吗?

很遗憾,TI-84 没有方法。

我认为你最好的选择是创建另一个程序,其中只有 "function",并在你需要的时候在你的主程序中执行那个 "subprogram",这是你可以得到的最接近的东西调用一个方法。您也可以乱用 LblGoto 命令,但在较大的程序中使用它可能会更棘手(也更慢)。

可以使用 Ans 变量将参数传递给方法。 这是一个示例(prgmDISPLAY 基于您给定的显示函数):

prgmDISPLAY
For(A,1,8
For(B,1,16
Output(A,B,sub(" I",Ans(C,D)+1,1
End
End

然后您可以通过从主程序调用 prgmDISPLAY 来调用此方法,如下所示:

[[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1][1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1][1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,1][1,0,1,0,1,1,1,1,1,1,1,1,1,1,0,1][1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1][1,0,1,1,1,1,1,1,1,1,1,1,1,1,0,1][1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1][1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
prgmDISPLAY

或者,如果矩阵存储在 [A] 中,只需执行:

[A]
prgmDISPLAY