今日はちょっと分からないことがあったので質問します。
以下のプログラムを作成してみました。
しかし途中からおかしくなってしまいました。
それは
・左右の壁判定
・ジャンプ中に天井にぶつかったら落下
この二つがわかりません。
スクリプトが長くてすいません。
////////////////////////////////////////プログラム処理 #packopt name "GAME" mes"準備中…" repeat 200 , 0 wait 1 getkey NP,27 if NP=1 : N=1 loop ////////////////////////////////////////変数表 ;PX=プレイヤー横 ;PY=プレイヤー縦 ;F=0未ジャンプ 1=ジャンプ中 ;C=ジャンプカウンター ;r,g,b=カラー取得 ;V=プレイヤー左下壁 ;V2=プレイヤー右下壁 ;K=落下中か ;N=デバックモードか(Escキーを押しながらで) ;NP,KI1,KI2,KI3=キーチェック ; ; ; ////////////////////////////////////////設定 cls screen 0 , 640 , 480 PX=40:PY=0 title "GAME-スペース:ジャンプ 左右:移動" ////////////////////////////////////////基本(プレイヤー移動処理) *KIHONNPY if N=1 : title "デバックモード PX:"+PX+" PY:"+PY+" r:"+r+" g:"+g+" b:"+b+" f:"+f+" k:"+k+" C:"+c cls getkey KI1,37 getkey KI2,39 getkey KI3,32 if KI1=1 : PX=PX-2:gosub *HIDARI if KI2=1 : PX=PX+2:gosub *MIGI if KI3=1 : gosub *ZYANPU if PX<=0 : PX=0 if PX>=625 : PX=625 pos PX,PY color 255,255,0 mes"●" await 20 if F=1 : PY=PY-3:C=C+1 if C=20 : F=0 if F=1 : gosub *UE ////////////////////////////////////////書き込み処理へ gosub *KAKIKOMI ////////////////////////////////////////プレイヤーの真下に壁があるか pget PX+0,PY+17 r = ginfo_r g = ginfo_g b = ginfo_b //壁がなかったら下へ K=0:V=0:V2=0 if r=255 { if g=255 { if b=255 { V=1 } } } pget PX+10,PY+17 r = ginfo_r g = ginfo_g b = ginfo_b if r=255 { if g=255 { if b=255 { V2=1:K=1 } } } if V=1 : if V2=1 : PY=PY+2:K=1 ////////////////////////////////////////下へ落ちたか(ミス) if PY>=480 : dialog "ミス!":stop goto *KIHONNPY //メインループここまで////////////////////////////////////////////////// ////////////////////////////////////////ジャンプ *ZYANPU if F=1 : return if K=1 : return F=1:C=20:K=0 return ////////////////////////////////////////壁横判定 *HIDARI //プレイヤーの左に壁があるか pget PX,PY+10 r = ginfo_r g = ginfo_g b = ginfo_b //壁があったらもどす if r=0 { if g=0 { if b=0 { PX=PX+2 } } } return *MIGI //プレイヤーの右に壁があるか pget PX+15,PY+10 r = ginfo_r g = ginfo_g b = ginfo_b //壁があったらもどす if r=0 { if g=0 { if b=0 { PX=PX-2 } } } return ////////////////////////////////////////ジャンプ中上判定 *UE pget PX+5,PY+0 r = ginfo_r g = ginfo_g b = ginfo_b //壁があったら下へもどす if r=0 { if g=0 { if b=0 { F=0:K=1 } } } return ////////////////////////////////////////書き込み処理 *KAKIKOMI color 0,0,0 boxf 40,200,80,90 boxf 20,200,100,210 boxf 20,164,100,160 return <pre/>