プレイ日記
行17のところ添列が範囲外? ……説明難し過ぎるぞ。 分かりやすく言ってくれ。
0そうだね
プレイ済み
返信[1]
親投稿
しろ sshiro1shiro
Mが不定値だからループが配列外までいくのでは?
1そうだね
プレイ済み
返信[2]
親投稿
ツララ LongIceSword
うぉ、しろさんにしては珍しい見落とし。 配列の添字が範囲外エラーってことはDIMで宣言している添字の最大値越えか、マイナスの数が使われている可能性も考慮ですよん。 この場合、DIMで宣言時のサイズが0なので0でも範囲外エラーになってるんですな。 DIM A[1] でやっとA[0]が使えるみたいに。 19行目での0とOの打ち間違えもこっそり指摘しといたり・・・
6そうだね
プレイ済み
返信[3]
親投稿
スー thanks_0u0
配列X,Y,Vの個数が0なので、このままではアクセス出来ません。 DIMで配列を作るときは「何個の箱を用意するか」を指定します。 DIM A[0]だと箱が用意されません。 DIM A[1]だと箱0番が1つ用意されます。 DIM A[2]だと箱0番と箱1番の2つが用意されます。 そして、配列にアクセスする場合は「何番の箱か」を指定します。DIMで作った個数-1、の番号までが使えます。
7そうだね
プレイ済み
返信[4]
親投稿
しろ sshiro1shiro
今までDIM A[0]なんかを適当に使ってたが先で配列サイズを自動で変えてくれる関数だったのか、GSAVEとかサイズが足りないと自動で配列サイズを変えてくれる。
1そうだね
プレイ済み
返信[5]
親投稿
SilverBlue Corei72630QM
(わかってる人多いと思いますが、配列サイズの変更の他に要素数を0にするとメモリを解放できます。)
2そうだね
プレイ済み
返信[6]
親投稿
ツララ LongIceSword
メモリを解放っていうのはちょっとニュアンス違うんじゃないです? POP関数とかでサイズを0にしても同じ名前の配列を定義しようとすると二重定義エラー出ますよね?
1そうだね
プレイ済み
返信[7]
親投稿
おちゃめ ochame_nako
変数を箱に例えた場合には配列変数は番号で管理するロッカーのようなものに相当します。 DIM X[10]とした場合にはロッカーを置く場所として確保された土地にX[0]からX[9]の10個が設置されます。 DIM X[0]とすると0個のロッカーが設置されます。これはどういうことかというとロッカーを置く申請を出した状態を示します。 ただし、まだロッカーそのものが存在しないのでそこに情報を入れることはできません。
0そうだね
プレイ済み
返信[8]
親投稿
おちゃめ ochame_nako
実はプチコン3号ではDIM X[10]として10個のロッカーを確保した後にそのロッカーを無い状態(DIM X[0]の状態)にすることができます。 これがSilverBlueさんが書かれているメモリ解放の状態でロッカーだと使用されていた土地が解放されて他のことに使える状態に戻っているわけです。しかし、完全に無かったことになるわけではない(ロッカーは無いけどXという名前のロッカーを作ることは申請済み)ので新たにDIM X[0]とすると二重申請となり怒られてしまう(二重定義エラーが発生してしまう)のです。
1そうだね
プレイ済み
返信[9]
親投稿
17行のエラーはおかげさまで消えてくれました。 だけど、今度は敵弾が出なくなりました。どうすればいいでしょうか
0そうだね
プレイ済み
返信[10]
親投稿
SilverBlue Corei72630QM
すみません、言葉足らずでしたね。
1そうだね
プレイ済み
返信[11]
親投稿
otta777 otta777a
17行目のFOR命令の終了値が変数Mから変数Nに置き換えられています。 変数NはFOR~NEXTの中の18行目で値が書き換えられてしまうので エラーは出なくなっても思った通りの動作をしてないように見受けられます。 変数Mの値を増やす部分でPUSH命令を使って配列変数X,Y,Vを 要素数を増やして敵弾を増やそうと考えてますか? 変数Mの値を増やしてる部分のプログラムがあると原因が分かるかも しれません。
1そうだね
プレイ済み