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


HSPTV!掲示板


未解決 解決 停止 削除要請

2007
0805
竹の子マップの表示プログラム3解決


竹の子

リンク

2007/8/5(Sun) 08:08:55|NO.10120

すいません。わかる方、教えてください。
map_aという配列変数にデータを入れて表示したいのですが、
なぜか「;mmx=mmx+1 //これがあるとエラー」このmmx=mmx+1を実行させると配列の要素エラーになります
何が間違っているのか、解決策をお教えください。

plx=14: ply=14 //PL開始座標 dim mmx : dim mmy dim map_a,99,99 //マップサイズ map_a(4,4)=11 //動作確認のためのデータ map_a(10,12)=22 //動作確認のためのデータ screen 0,992,758,0 color 223,223,223 boxf color 0,0,0 gosub *map_space stop *map_space redraw 2 mmx=plx-10 mmy=ply-10 repeat 21 cty=(cnt*33) i=0 repeat 21 pos (i*33),cty mes ""+map_a(mmx,mmy)+"" i=i+1 ;mmx=mmx+1 //これがあるとエラー loop mmy=mmy+1 loop redraw 1 return



この記事に返信する


tks

リンク

2007/8/5(Sun) 10:26:59|NO.10125

問題のあるスクリプトをもっと簡単にしてみましょう。

dim mmx dim map_a,99,99 mmx=4 repeat 21 repeat 21 mes ""+map_a(mmx,mmy) ;mmx=mmx+1 //これがあるとエラー loop loop stop

mmxは最大4+21*21=441、
それに対しmap_aの一次部分の取り得る範囲は0から98、
当然存在しない部分を参照しようとしますからエラーになります。

デバッグウィンドウを表示しておけば、エラーになったとき
mmxが99になっていますから、そこを見ていれば気づくかも。



tks

リンク

2007/8/5(Sun) 10:30:10|NO.10126

> mmxは最大4+21*21=441、
445です…



竹の子

リンク

2007/8/5(Sun) 11:06:38|NO.10128

ああああああああ、ほんと、そうですね。
理解できました。ありがとうございます。
指摘いただいた点から、こうするとよかったんだとわかりました。

plx=14: ply=14 //PL開始座標 dim mmx : dim mmy dim map_a,99,99 //マップサイズ map_a(4,4)=11 //動作確認のためのデータ map_a(10,12)=22 //動作確認のためのデータ screen 0,992,758,0 color 223,223,223 boxf color 0,0,0 gosub *map_space stop *map_space redraw 2 ;mmx=plx-10 //こいつを mmy=ply-10 repeat 21 cty=(cnt*33) i=0 repeat 21 pos (i*33),cty mes ""+map_a(mmx,mmy)+"" i=i+1 mmx=mmx+1 loop mmx=plx-10 //ここにもってきた mmy=mmy+1 loop redraw 1 return



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