今ブロック崩しを作っています。でもどうしても42行目の
「if(bflag=0)gosub *bmove ;(No.5で追加)」
で パラメーター式の記述が無効です と出ます。
自分はどうしたらいいかさっぱりわかりません。どうしたらいいでしょうか。
教えてください。
スクリプトがコレです。
;ゲームの初期設定(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=0)gosub *bmove ;(No.5で追加)
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で追加)
*paint
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