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


HSPTV!掲示板


未解決 解決 停止 削除要請

2007
1224
急行1分遅れ当たり判定ができない……5未解決


急行1分遅れ

リンク

2007/12/24(Mon) 11:33:19|NO.12890


#define WX 640 #define WY 480 #define TIP 32 #define ido 8 #define TIPX (20-2) #define TIPY (15-2) sdim map,3200 map ="555555555555555555" map+="531111111111111115" map+="511111111111111115" map+="522222222222225115" map+="511111111111111115" map+="511111111111111115" map+="511522222222222225" map+="511111111111111115" map+="511111111111111115" map+="522222222222225115" map+="511111111111111115" map+="511111111111111115" map+="555555555555555555" x=64 y=384 buffer 2 TIPXX=0 : TIPYy=0 color : boxf color 1,1,1 : boxf TIPXx,TIPYy,TIPXx+31,TIPYy+31 : TIPXx+=32 color ,255,255 : boxf TIPXx,TIPYy,TIPXx+31,TIPYy+31 : TIPXx+=32 color 100,150,200 : boxf TIPXx,TIPYy,TIPXx+31,TIPYy+31 : TIPXx+=32 color 230,100,100 : boxf TIPXx,TIPYy,TIPXx+31,TIPYy+31 : TIPXx+=32 color 230,230,230 : boxf TIPXx,TIPYy,TIPXx+31,TIPYy+31 : TIPXx+=32 TIPXX=0 : TIPYY+=32 color ,200 : boxf TIPXx,TIPYy,TIPXx+31,TIPYy+31 : TIPxX+=32 color 150,230,230 : boxf TIPXx,TIPYy,TIPXx+31,TIPYy+31 : TIPXx+=32 color 100,100,100 : boxf TIPXx,TIPYy,TIPXx+31,TIPYy+31 : TIPXx+=32 color 100,50,20 : boxf TIPXx,TIPYy,TIPXx+31,TIPYy+31 : TIPXx+=32 color 200,150,100 : boxf TIPXx,TIPYy,TIPXx+31,TIPYy+31 buffer 3;べつにbuffer 2と併用する気なんだけどね… TIPXX=0 : TIPYy=0 color : boxf color 1,1,1 : boxf TIPXx,TIPYy,TIPXx+31,TIPYy+31 : TIPXx+=32 color ,255,255 : boxf TIPXx,TIPYy,TIPXx+31,TIPYy+31 : TIPXx+=32 color 100,150,200 : boxf TIPXx,TIPYy,TIPXx+31,TIPYy+31 : TIPXx+=32 color 230,100,100 : boxf TIPXx,TIPYy,TIPXx+31,TIPYy+31 : TIPXx+=32 color 230,230,230 : boxf TIPXx,TIPYy,TIPXx+31,TIPYy+31 : TIPXx+=32 TIPXX=0 : TIPYY+=32 color ,200 : boxf TIPXx,TIPYy,TIPXx+31,TIPYy+31 : TIPxX+=32 color 150,230,230 : boxf TIPXx,TIPYy,TIPXx+31,TIPYy+31 : TIPXx+=32 color 100,100,100 : boxf TIPXx,TIPYy,TIPXx+31,TIPYy+31 : TIPXx+=32 color 100,50,20 : boxf TIPXx,TIPYy,TIPXx+31,TIPYy+31 : TIPXx+=32 color 200,150,100 : boxf TIPXx,TIPYy,TIPXx+31,TIPYy+31 buffer 4,WX,WY ; 背景描画用に用意 gmode 2 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; color 192,32,32:boxf color 128,255,255:boxf 32,32,wx-32,wy-32 repeat TIPX*TIPY TIPid=peek(map,cnt) ; チップ情報を取得 if TIPid=0 : break ; もしデータ終端が来たら終了 TIPID=int(TIPid): TIPid-=48 ; IDを数値化する pos cnt\TIPX*TIP+32,cnt/TIPX*TIP+32 : gcopy 3,TIPid\5*TIP,TIPid/5*TIP,TIP,TIP:mes TIPid ; 5はチップX方向のチップ数 loop ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; gsel 0 pos 0,0 : gcopy 4,0,0,WX,WY ; まとめて描画 screen 0,wx,wy gmode 2 kyara=0 asi=0 ataT=0 ataB=0 ataL=0 ataR=0 repeat redraw 0 gosub *backload stick key,31 if key&1:x-ido:kyara=0:asi+ if key&4:x+ido:kyara=1:asi+ if asi>2:asi=0 gosub *atari;当たり判定 if key&16{ if jump=0:jump=1:j=30 };jump=じゃんぷ状態 0=していない1=あがり中2=落ち中 j=のこりじゃんぷ力 if jump=1{ y-=(ido*2) j- if j=0:jump=2 if ataT=1:jump=2 } if jump=2{ ;重力があるためidoをたさなくてよい if ATAB=1:jump=0 } y+=ido;重力 ; x=limit(x,32,wx-64) y=limit(y,32,wy-64) gosub *kykaiga redraw 1 await 1 loop *backload pos 0,0 gcopy 4,0,0,wx,wy return *kykaiga pos x,y gcopy 2,asi*32,kyara*32,32,32 return *atari ;上判定 kix=x+16:kiy=y gti=((kiy/32)*10)+(kix/32) TTIP=peek(map,gti) ; チップ情報を取得 TTIP-=48 if TTIP=2|TTIP=5:ataT=1:else:ataT=0 ;下判定 kix=x+16:kiy=y+32 gti=((kiy/32)*10)+(kix/32) TTIP=peek(map,gti) ; チップ情報を取得 TTIP-=48 if TTIP=2|TTIP=5:ataB=1:else:ataB=0 return
こういうプログラムの下の方にあります、あたり判定がうまくできません。
どうすればいいでしょうか?
おしえてください



この記事に返信する


ANTARES

リンク

2007/12/24(Mon) 22:40:27|NO.12897

 このままではわかるわけがないので、デバッグルーチンを追加してみました。
その結果、gtiがまるで見当違いの値になっていることがわかったので、
そのデバッグルーチンを示します。
拙作anthspex.dllを使っています。

【修正前】
#define WX 640
【修正後】
#include "anthspex3.as"
#define WX 640

【修正前】
map+="555555555555555555"   (下の方)
【修正後】
map+="555555555555555555"
screen 31,640,480,,0,0
x=0
repeat 13
s=strf("%3d",x)
mes ""+s+" "+strmid(map,x,18)
x+=18
loop

【修正前】
screen 0,wx,wy
【修正後】
screen 0,wx,wy,,200,100

【修正前】
TTIP-=48   (上の方)
【修正後】
TTIP-=48
debug "x="+x+" y="+y+" kix="+kix+" kiy="+kiy+" gti="+gti+" TTIP="+TTiP



急行1分遅れ

リンク

2007/12/25(Tue) 11:24:55|NO.12903

dllなしでできますでしょうか?



ANTARES

リンク

2007/12/25(Tue) 23:36:10|NO.12912

 debugを以下のように変えればdllなしでもできます。

dialog "x="+x+" y="+y+" kix="+kix+" kiy="+kiy+" gti="+gti+" TTIP="+TTIP,2
if stat==7: end



急行1分遅れ

リンク

2007/12/26(Wed) 08:46:07|NO.12913

ANTARES
さんの言いたいことがよくわかりません
もう少し教えてください



ANTARES

リンク

2007/12/26(Wed) 22:31:20|NO.12914

 debugというのは、NO.12897の最後の行のことです。



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