プレイ日記
カービィ★KIRBY Kirbystar_Nin751
タッチエミュレーションの実装テスト。 最終的にDATファイルから読み出せるようにする。 配列の要素数って0に戻せないんかな… メモリ問題が。
5そうだね
プレイ済み
返信[1]
親投稿
moh6an moh6an
pop命令をforで廻すぐらいしか思いつかない、速度的にどうなのかわからないけど
2そうだね
プレイ済み
返信[2]
親投稿
プチコンコミュで既知の方法 1)処理をするDEF内で配列定義する。  DEFの処理が終わればメモリが解放される。 2)DEF内でサイズ0の配列定義し、参照を代入する。  注意:グローバル配列変数の場合は問題ありませんが、ローカル配列変数の場合、参照を戻りに指定して呼び元の参照を書き換える必要があります。特に、DEFの呼び出しが複数にわたる場合は、途中のDEFで引き数、戻りにその配列変数を指定する必要があります。 例)DEF CLR_ARY%():DIM A%[0]:RETURN A%:END   DIM X%[10]:X%=CLR_ARY%():PRINT LEN(X%) <つづく>
3そうだね
プレイ済み
返信[3]
親投稿
<つづき> 3)参照先の要素を捨てる。 例)DEF CLR_ARY A:WHILE LEN(A):NULL POP(A):WEND:END   DEF NULL X:END   DIM A$[10]:CLR_ARY A$:PRINT LEN(A$) 4)配列定義をサブルーチンにする。  注意:DIM/VARを使う前に書く必要がある。 例)GOTO @MAIN   @CLR_ARY   DIM X[0]   RETURN   @MAIN   GOSUB @CLR_ARY このまま使えるかどうかはわかりませんが、参考になれば。
2そうだね
プレイ済み
返信[4]
親投稿
moh6an moh6an
コータさんそれネタバレにするところじゃないような
0そうだね
プレイ済み
返信[5]
親投稿
myu314 myu314
DEF ARRAY% N OUT A%[] VAR X%[N] A%=X% END みたいな関数を一通り作っておくと便利っすよ、動的確保っぽくできるし。 VAR X%[100],Y%[0] X%=ARRAY%(0) Y%=ARRAY%(100)
3そうだね
プレイ済み
返信[6]
親投稿
Godot orz_127
myu314さん 多分それ ↓これでよい気が。 DEF ARRY%(N) DIM A%[N] RETURN A% END
0そうだね
プレイ済み
返信[7]
親投稿
MIKI ifconfig
de最近作ったもの def malloc(n) var w[n] return w end def realloc(v,n) var w[n] if len(v) then copy w,v,0,min(n,len(v)) end if return w end 使い方は c の同名関数に準拠
0そうだね
プレイ済み
返信[8]
親投稿
myu314 myu314
>Godotさん 何を返すかが解りやすいので関数定義の時は大体OUT使ってます。 あと値を返すかどうかでカッコの有無が変わるのが統一感無くてあんまり好きじゃないというのもあります。 値を返さない関数(?)の定義仕方で引っかかった人ちらほら見かけたし、混乱させただけじゃないかなーみたいな。 まあ要するに趣味ですね:)
1そうだね
プレイ済み
返信[9]
親投稿
Godot orz_127
myu314さん しつこくてすみませんが OUTで定義したなら以下のように使用した方が、定義時と同じになって分かりやすくて良いのではと。 ARRY% 0 OUT X% ARRY% 100 OUT Y% OUTで定義したのに()で使っていたのでちょっと気になりました。 ()で使うなら最初から()で定義した方が良いのでは?と思ったのが前のコメントの意図です。
1そうだね
プレイ済み
返信[10]
親投稿
myu314 myu314
>Godotさん そこは統一しきれなくて妥協したところですね。 OUTにすると式の中で使えず、同じ関数が使われる場所で見た目変わるのも微妙…ということで定義時のみOUTを使うのが現在の俺々ルールとなっております:) ちなみに確か10万回くらい回して数ミリ秒程度ですが、OUT版の方が遅くなったはずです。 この負荷が気になるような所ではそもそも関数使わないだろうということで気にしないことにしてます。 というか俺々ルール長々と語ってすみません!
0そうだね
プレイ済み