2016-10-05 3 views
1

저는 TI-BASIC 게임을 만들고 있는데, 플레이어는 홈 화면에서 2D 맵을 이동할 수 있습니다. 나는 각 맵에 대한 8 × 16 매트릭스합니다"함수"로 행렬을 전달하는 방법

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

지금, 나는 여러 맵 (매트릭스)를 가지고와 "전화"해야

[[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]] 

...이 "기능"을 표시 매번 그 코드를 다시 타이핑하지 않고 다른 행렬로 기능합니다. 이것을 할 수있는 방법이 있습니까?

답변

0

Ans 변수를 사용하여 메소드에 인수를 전달할 수 있습니다. 당신은 다음과 같이, 메인 프로그램에서 prgmDISPLAY를 호출하여이 메소드를 호출 할

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

:

[[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 

또는 경우 여기는 (당신의 주어진 표시 기능을 기반으로 prgmDISPLAY 포함) 예입니다 행렬은 [A]에 저장됩니다.

[A] 
prgmDISPLAY 
+1

이것은 정확히 내가 찾고 있었던 것입니다. 저는 Ans가 프로그램 전체에서 사용될 수 있다는 것을 모르고 있었고 서브 프로그램에서 사용하는 것이 좋은 해결책이었습니다. 특히 Lbl과 Goto가 느려질 수 있기 때문에. –

1

불행히도 TI-84에는 방법이 없습니다.

나는 그 "함수"만있는 다른 프로그램을 만들고 필요할 때마다 주 프로그램 내에서 "서브 프로그램"을 실행하는 것이 가장 좋습니다. 이것은 메서드를 호출 할 수있는 가장 가까운 방법입니다. LblGoto 명령을 사용하면 엉망이 될 수도 있지만 더 큰 프로그램에서 사용하는 것은 더 까다 롭고 느릴 수 있습니다.