このたびは皆さんのおかげでエラーを直すことが出来ました。
しかしまたエラーが出でしまいました。
エラーの内容が
「代入できない変数名を指定しています。」です。
初めてのパターンのエラーだったので色々といじってみましたが、どうしても直せません
「代入できない変数」
がさしている行が「goto *main」なんです。goto命令は指定したラベルにジャンプする命令で
あって、変数では無いと思います。どこがわるいんでしょうか?エラーの行は45行目です。
あつかましいようで申し訳ありませんがご協力おねがいします。
*スクリプト
;---------------------------------------
;
;ゲームプログラムサンプル No.5
; (c) dA
;---------------------------------------
;ゲームの初期設定(No.5で追加)
buffer 1 ;バッファのID1を制御対象にする
picload "smp1.bmp" ;バッファのID1にsmp1.bmpの絵をロードする
;制御を0(表示ウインドウ)に切り替える
screen 0,320,400,4 ;ウインドウのIDを0、サイズを320×400に設定し、固定ウインドウにする
title "sample5" ;ウインドウのタイトルを設定
;変数(No.5で追加)
jx=0 ;プレイヤーの座標変数
jy=350 ;プレイヤーの座標変数
#const pic_w 52 ;プレイヤーの画像サイズ(横)
#const pic_h 14 ;プレイヤーの画像サイズ(縦)
bx=0 ;ボールの座標変数
by=0 ;ボールの座標変数
bvx=0 ;ボールのスピード変数
bvy=0 ;ボールのスピード変数
bflag=1 ;ボールが手放されているかどうかのフラグ
#const bpic_w 5 ;ボールの画像サイズ(横)
#const bpic_h 5 ;ボールの画像サイズ(縦)
;ゲームのメインループ
*main
;ゲームの処理をここ以下に書く
gosub *key
gosub *paint5
if(bflag=1){b=1} gosub *paint5
await 1 ;windowsに処理を返す
ここ!→ goto *main
;キー操作関数(No.5で追加)
*key
int keycode ;int型宣言
stick keycode,1+4 ;キーコードをkeycodeという変数に読み込む(キーコード1と4をトリガに設定)
if(keycode&1){ ;左キーが押された場合
jx-=3 ;プレイヤーを左に移動(3はスピード)
}
if(keycode&4){ ;右キーが押された場合
jx+=3 ;プレイヤーを右に移動(3はスピード)
}
;移動の制限をつける
if(jx<0){ ;横の座標が左端以上はいけない
jx=0
}
if(jx>(320 - pic_w)){ ;横の座標が右端以上はいけない <注意>条件式の()に注意
jx = 320 - pic_w
}
;ボールを手放すかどうか
if(bflag=1){ ;ボールを手放してないなら
bx=jx+((pic_w-bpic_w)/2) ;ボールがプレイヤーにくっついている座標
by=jy-bpic_h ;ボールがプレイヤーにくっついている座標
if(keycode&16){ ;スペースを押したら
bflag=0 ;フラグを手放した状態にする
rnd rtmp,2 ;0〜2までのランダムの数字をrtmpに格納する
bvx=rtmp+1 ;ボールの横のスピードを設定する
if(bx<160){ ;ボールがプレイヤーの座標により進む方向が変わる
bvx=-1*bvx
}
bvy=-1*(rtmp+1) ;ボールの縦のスピードを設定する
}
}
return
;描画関数(No.5で追加)
*paint5
redraw 0 ;画面の描画を実際のウインドウに反映させない(ちらつき防止)
color 255,255,255 ;オブジェクトの色を白色に設定
boxf 0,0,320,400 ;画面中を白い四角で塗りつぶす
pos jx,jy ;プレイヤーの座標を指定する
gcopy 1,0,0,pic_w,pic_h ;ID1に保存してある画像を0,0から52×14だけ抜き出し表示
pos bx,by ;ボールの座標を指定する
gcopy 1,0,14,bpic_w,bpic_h ;ボールの表示
redraw 1 ;画面の描画を反映させる(ちらつき防止)
return
;ボールの動作関数(No.5で新規追加)
*bmove
bx+=bvx ;ボールのX座標(横)に加速をさせる
by+=bvy ;ボールのY座標(縦)に加速をさせる
if(bx<0){ ;左端でバウンドさせる
bx=0
bvx=-1*bvx
}
if(bx>(320-bpic_w)){ ;右端でバウンドさせる
bx=320-bpic_w
bvx=-1*bvx
}
if(by<0){ ;上端でバウンドさせる
by=0
bvy=-1*bvy
}
if(by>(400-bpic_h)){ ;下端でバウンドさせる(デバッグ用なので後で不必要になる)
by=400-bpic_h
bvy=-1*bvy
}
return