簡體   English   中英

如何測試列表中所有字符的長度,並根據長度調整Output()的位置?

[英]How can I test the length of all the characters in a list and adjust the location of Output( based on the length?

我編寫了一個程序來統計D&D 5e角色的統計信息。 它滾動4d6並放下最低值,然后將該值添加到列表中。 總共重復6次,然后將結果輸出到屏幕。 我希望能夠使輸出居中,使其看起來不錯,並刪除列表中的{}括號以及數字之間的逗號。 我遇到的問題是我不能只在所有位置輸出空格,因為第二個字符之后的所有內容都是可變的。

這是我正在使用的代碼。

0→dim(∟STATS
For(I,1,6,1
0→dim(∟ROLLS
randInt(1,6,4)→∟ROLLS
1+sum(not(cumSum(∟ROLLS=min(∟ROLLS))))→X
∟ROLLS(X)-min(∟ROLLS)→∟ROLLS(X)
sum(∟ROLLS)→∟STATS(1+dim(∟STATS
End
ClrHome
While not(getKey
Output(5,4,∟STATS
End
ClrHome

輸出示例如下所示:

___{8,10,9,10,9,15}_______| 

另一個可能看起來像這樣

___{13,9,14,11,9,10}______|

(|代表屏幕的結尾,_代表空格,但出於寬度原因而顯示)

請注意,它總是從一個位置開始,而其他位置則在不同位置。

如果出於屏幕尺寸的考慮,這是TI-84 Plus CE

弦樂是你的朋友!

我和一位朋友談過,她給我一個想法,將列表元素存儲到字符串中,然后輸出字符串而不是列表。 訣竅是弄清楚如何將數字存儲在字符串中。 我找到了toString(函數對此有所幫助。

這是工作代碼段。

toString(∟STATS(1))→Str0
For(I,2,6,1
Str0+" "+toString(∟STATS(I))→Str0
End

那給了我一串數字和空格,格式很好。 我的最后一個問題是如何將它居中,我的朋友再次來此求救,建議將字符串/ 2的長度作為列坐標。 我嘗試使用它,並且偏離了中心,所以我減去2得到一個列。 我這樣做的方式在下面的代碼中。

ClrHome
While not(getKey
Output(5,(int(length(Str0)/2-2)),Str0
End

所以完整的工作代碼是

0→dim(∟STATS
For(I,1,6,1
0→dim(∟ROLLS
randInt(1,6,4)→∟ROLLS
1+sum(not(cumSum(∟ROLLS=min(∟ROLLS))))→X
∟ROLLS(X)-min(∟ROLLS)→∟ROLLS(X)
sum(∟ROLLS)→∟STATS(1+dim(∟STATS
End
toString(∟STATS(1))→Str0
For(I,2,6,1
Str0+" "+toString(∟STATS(I))→Str0
End
ClrHome
While not(getKey
Output(5,(int(length(Str0)/2-2)),Str0
End
ClrHome
SetUpEditor

自從我使用TI以來已經有很多年了,但是我認為您必須遍歷數組並依次輸出每個數字。 根據索引和數字的大小定位每個位置。 就像是

For (X, 1, dim(STATS), 1)
Output (5,floor(1+3X+∟STATS(X)/2),∟STATS(X)
End

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM