コミュニティアイコン プチコン 非公式コミュニティ トピック

アバター
はやピー ◆cNXcKm243Rna
2019/9/27 19:20
質問
プチコン4 GRPデータについて
プチコン4の話です。
LOADVでGRPデータを配列にできるじゃないですか。
その配列は、どのような内容ですか?(配列[1,1]はこんな内容、配列[1,2]はあんな内容、などということです)
分かりにくい説明ですが、分かる方、いらっしゃいますか?
よろしくお願いいたします

この問題は解決しました。
ありがとうございます!

コメント

アバター
Na 2019/9/27 19:28 ◆QoELVrBXBQCI
3号では配列[Y,X]にその座標の色コードが入ってます。
4も同じだと思います(違ってたらすみません)
アバター
高原のな 2019/9/27 19:29 ◆bY8RViwvoODw
実際にテストプログラムを書いて,どんな風になっているのか確かめてみるのが一つの方法だと思うので,紹介しておきます(これは,すぐにプチコン4で試せないから逃げるためにこのような方法をとるだけです.とはいえ,他のことにも応用が利くのでご紹介)

さて,LOADV命令のリファレンスには「・DAT,GRPを指定した場合、DAT,GRPファイル内のデータを格納した配列を返す」とありますから,たぶん一個一個の要素にはRGB命令で取得できる色が入っていると推測して,次のようなコードを書きます

CONST #WIDTH=???,#HEIGHT=???
VAR X,Y
DIM D[#WIDTH,#HEIGHT]
D = LOADV("<GRPファイル名>")

FOR X=0 TO #WIDTH-1
 FOR Y=0 TO #HEIGHT-1
  GPSET X,Y,D[X,Y] 'Dの[x,y]に画像上の座標(x,y)の色情報が入っていると推測
 NEXT
NEXT

予定の画像と縦横が反転しているケースもあるので,その際にはDの添字の設定を色々入れ替えてみるといいかもしれません.それ以外にもトラブルが発生したら,様々な可能性を考えつつこのテストプログラムをどんどん改変していき,結論に達すると良いです.こういう解析テクニックを持っておくと,困った時に調べやすいかも?
あとで試した結果を書いておきたいと思います.二連続で回答が推測的なものとなってごめんなさい
アバター
高原のな 2019/9/27 19:42 ◆bY8RViwvoODw
テスト結果:
先ほどのプログラムでいうと,GPSETの行が次のようになります
GPSET X,Y,D[Y,X]
つまり,画面上の座標(x,y)のデータはD[y,x]となる.Naさんが言っているのが正解です.

さらに突っ込んで実験をした結果,Dを一次元配列とすると次のようなプログラムで画面上の座標(X,Y)のデータを取得可能です.
GPSET X,Y,D[Y * #WIDTH + X]

ここから逆に,2次元配列やそれ以上の高次元配列のデータの並び順なども予想がつきますが,とりあえずここまで.
アバター
はやピー 2019/9/27 19:45 ◆cNXcKm243Rna
なるほど
わざわざ調べていただきありがとうございます
アバター
はやピー 2019/9/27 20:01 ◆cNXcKm243Rna
手元にあるスイッチでコードを打ち込んでみました。
うまくできました。
ありがとうございます!

コメントを書く

この投稿にはコメントできません。

- WEB PATIO -