HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2011
0907
あるぺじお配列変数の連続代入について6解決


あるぺじお

リンク

2011/9/7(Wed) 17:45:59|NO.41172

多数のオブジェクトの情報を配列変数で管理しようと思っています。
例えば、n個のボールを管理するとして、
ball(n,0)にx座標、ball(n,1)にy座標、ball(n,2)に速度の数値を格納しようとする場合、
二次元目の要素のみに連続代入する事はできるでしょうか?

これが一次元のみの配列の場合は
ball=a,b,c
で連続代入が可能ですが、
これを
ball(n,0)=a,b,c
に置き換えると、 上記の様な望むような結果になりません。


repeat n ball(cnt.t\3)=rnd t++ loop
二次元目の要素が全てrndや同じ数値なら↑で処理できますが、
例えばシューティングゲームの敵キャラ等、
ball(n,1)、ball(n,2)、ball(n,3)それぞれに異なる変数が入るような場合、

repeat n ball(cnt,0)=a ball(cnt,1)=b ball(cnt,2)=c . . loop
の様に要素の数だけ式を作らなければいけないのでしょうか。
これだとあまりスマートとは思えなかったので、
もっと効率的な解決法があればと思い質問させていただきました。
解かり難い説明かと思いますが、どなたか御教授願えればと思います。



この記事に返信する


ぬこ

リンク

2011/9/7(Wed) 17:50:58|NO.41173

repeatを2回やればいいのです。

repeat i i=cnt repeat j j=cnt ball(i,j)=a loop loop



レノス

リンク

2011/9/7(Wed) 18:34:45|NO.41181

そういうマクロを作って、簡単にしたように見せるのも一つの手。


// 定義 #define assigns_2D(%1, %2, %3, %4, %5) \ %1(%2, 0) = %3 :\ %1(%2, 1) = %4 :\ %1(%2, 2) = %5 : // ...要素数は適当に // 使う側 assigns_2D ball, n, a, b, c

最初の2つのパラメータ(ball, n)は複数回実行されるので注意
添字は変数に入れてから assigns_2D を呼ぶべし



あるぺじお

リンク

2011/9/7(Wed) 20:03:54|NO.41191

ぬこさん、レノスさん、ありがとうございました。
マクロを使うのが一番効率的のようですね。



unkwon

リンク

2011/9/7(Wed) 22:36:46|NO.41202

ちなみに余計かと思いますがloopなどを使うときは
かならずwait かawaitなど、使うことをオススメします。

余計でしたらスイマセン。



晩御飯

リンク

2011/9/7(Wed) 23:04:04|NO.41213

ゲームループならともかく初期化なんぞにwaitはさむ人はかなり稀有な存在だと思うのです個人的に



TTRUKO

リンク

2011/9/8(Thu) 13:24:56|NO.41231

以下のスレが参考になるのではないでしょうか

【二次元配列変数 入力の省略】
http://hsp.tv/play/pforum.php?mode=all&num=38730

要約すると、こういう代入ならできます

dim ball, 5, 3 n = 1 ball(0,n) = 1,2,3,4,5 mes ball(0,n) mes ball(1,n) mes ball(2,n) mes ball(3,n) mes ball(4,n)
ボール番号は一番上の次元に置くのが自然なので
ball(n,0)ではなくball(0,n)にしたほうがいいのかもしれませんね
まぁ、あくまでHSPの配列の構造上は、の話ですけども^^;



ONION software Copyright 1997-2023(c) All rights reserved.