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


HSPTV!掲示板


未解決 解決 停止 削除要請

2013
0613
turuyasou配列の要素が無効ですって?5未解決


turuyasou

リンク

2013/6/13(Thu) 21:04:37|NO.54868

;☆★☆★☆★☆★画像読み込み☆★☆★☆★☆★
buffer 1 :picload "heri.gif" ;自キャラ画像読み込み
buffer 2 :picload "tama.gif" ;弾画像読み込み
buffer 3 :picload "teki.jpg" ;敵1画像読み込み
buffer 4 :picload "teki2.jpg" ;敵2画像読み込み
buffer 5 :picload "haikei.jpg" ;背景画像読み込み
buffer 6 :picload "zitama.jpg" ;自弾読み込み
;☆★☆★☆★☆★その他初期設定☆★☆★☆★☆★
screen 0,1350,800 ;画面サイズを1350× 800に変更
MX=240:MY=160 ;自キャラの初期位置
randomize ;使うかどうかわからないけど乱数初期化
cls 4 ;画面の色を黒に設定
TAMA=0
stick KY,31
;☆★☆★☆★☆★メインループ☆★☆★☆★☆★
*madoka
redraw 0 ;書き換え停止
stick KY,31 ;キー入力判定の初期値
pos 271,0 :gcopy 5,10,10,1350,800 ;背景表示
pos 0,0 :gcopy 5,10,10,350,800 ;余白を背景の左端の部分で埋める

;▲△▲自キャラの移動△▲△
if (KY&1)=1 :MX=MX-4 :if MX<0 :MX=0 ;自キャラの左移動判定
if (KY&4)=4 :MX=MX+4 :if MX>1280 :MX=1280 ;自キャラの右移動判定
if (KY&2)=2 :MY=MY-4 :if MY<0 :MY=0 ;自キャラの上移動判定
if (KY&8)=8 :MY=MY+4 :if MY>799 :MY=799 ;自キャラの下移動判定
pos MX,MY ;自キャラの位置決定
gmode 2 ;黒い部分を表示させない
gcopy 1,0,0,80,50 ;自キャラコピー            
pos MX,MY-20 ;1P文字位置決定
color 255,255,255 ;文字色を白に
mes "1P↓" ;1P文字表示

repeat 10 ;10回サブルーチンを作る
gosub *TAMA2 ;サブルーチンへ移動
;▲△▲弾発射▲△▲
*TAMA2
if (KY&16)!=0 & TAMA(cnt)=0 ;スペースキー判定
TAMA(cnt)=1 ;弾を発射している状態にする
TX(cnt)=MX+24 :TY=MY+12 ;弾の初期位3置設定

if TAMA=1 { ;弾の発射射
TX(cnt)=TX+12 ;弾の移動
pos TX(cnt),TY(cnt) ;弾の座標
gmode 2 ;黒い部分を表示させない
gcopy 2,0,170,25,21 ;自弾画像表示
if TX(cnt)>1349 :TAMA(cnt)=0
}
loop ;ルーチンを戻す

redraw 1 ;画面書き換え
await 30 ;待機
goto *madoka ;ループ



を実行すると配列の要素が無効ですとでてきます
どうやら39行目のようですがどうすればいいですか?



この記事に返信する


turuyasou

リンク

2013/6/13(Thu) 21:14:45|NO.54872

test氏
ありがとうございます
画像のことは気を付けます

初期化といいますがどのように初期化すればいいのですか?



test

リンク

2013/6/13(Thu) 21:16:03|NO.54873

申し訳ありません。返事が来たのに気づかず投稿を消してしまいました。投稿は以下のとおりです。


画像を使うスクリプトは、画像が無くても動くように変えてから投稿したほうが、他の人が簡単に試せるのでいいと思います。
コピー&ペーストしただけで動かせないスクリプトは見るのが面倒で、回答がつきにくくなります。

さて、エラーの原因ですが、TAMAを配列として使おうとしているのに、TAMAを配列として初期化し忘れています。



turuyasou

リンク

2013/6/13(Thu) 21:18:56|NO.54874

test氏
ありがとうございます
画像のことは気を付けます

初期化といいますがどのように初期化すればいいのですか?



test

リンク

2013/6/13(Thu) 21:21:50|NO.54875

turuyasouさんはこのソースを自分で書いたのだと思いますが、複数の弾を表現するのに配列を使おうとしたのだと思います。
配列の初期化が分からないというのは配列に対する理解が多少欠けているので、復習したほうがいいかと思います。
プログラミングマニュアルを参照してみましょう。スタートメニューのHSPのフォルダの中に「マニュアルインデックス」というのがあるので、それを開けばマニュアルを参照できます。

一度投稿を消したのは、サブルーチン*TAMA2がrepeatの中に入っていることを指摘するためです。そのうえreturnもありません。これも直さないと、配列の問題を直しても正しく動作しません。プログラミングマニュアルのサブルーチンのところもあわせて見てみましょう。



turuyasou

リンク

2013/6/13(Thu) 21:26:16|NO.54877

回答ありがとうございます

さっそく復習します



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