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


HSPTV!掲示板


未解決 解決 停止 削除要請

2008
0822
Nマリオのようなゲームで、ジャンプがうまくできません。7未解決


N

リンク

2008/8/22(Fri) 23:47:58|NO.18634

ジャンプをしても、一番上まであがらないうちに落ちてきてしまいます。
どうも、途中で、dropという変数が1になっちゃっているようなのですが・・・

お手数ですが、教えてください。


#enum m_block #enum m_hatena #enum m_star #enum m_kuri #enum m_tubure ;#enum jump ;#enum drop ;#enum stp #const WINDOWX 180 #const WINDOWY 180 #const CIRCLEX 30 #const CIRCLEY 113 #const CIRCLESIZE 30 #const BLOCKSIZE 30 *top screen 0,WINDOWX,WINDOWY cirx=CIRCLEX ciry=CIRCLEY dontp=0 dontm=0 ;ddim block,33 ;ddim blockx,33 ;ddim blocky,33 ;ddim mode,33 ;ddim work,33 repeat 33 //配列を初期化 block(cnt)=0 work(cnt)=0 blockx(cnt)=200 blocky(cnt)=200 mode(cnt)=m_block loop gosub *block_ichi// ブロックの座標指定 font "MS ゴシック",CIRCLESIZE repeat 200000 if cnt >=(200000-10):else:if cnt >=(200000-100):font "MS ゴシック",20:else:font "MS ゴシック",10 pos 0,0:print "time"+(200000-cnt) //残り時間表示 pos x,y:picload "haikei.bmp",1 //背景表示 font "MS ゴシック",CIRCLESIZE:pos cirx,ciry:mes "●" stick key,23 //キー入力 if dontp=0:if key=1|key=3:x+=5 if dontp=0:if key=17|key=19:x+=10 if dontm=0:if key=4|key=6:x-=5 if dontm=0:if key=20|key=22:x-=10 if key&2:/*if jcnt=0:*/jump=1/*c_mode=jump*/ repeat 33 if work(cnt)=1:block(cnt)-=3 //きのこの動き if (x+block(cnt)+BLOCKSIZE)>=0 & (x+block(cnt))<=WINDOWX:blockx(cnt)=(x+block(cnt)):if mode(cnt)=m_kuri:work(cnt)=1 if (x+block(cnt)+BLOCKSIZE)>=0 & (x+block(cnt))<=WINDOWX:else:blockx(cnt)=3000/*画面の外へ*/ loop dontp=0:dontm=0 gosub *wblock;73 if jcnt=6:jcnt=0:/*c_mode=drop*/drop=1:jump=0:else:if jump=1/*c_mode=jump*/:ciry-=10:jcnt++ //ジャンプ if drop=1/*c_mode=drop*/:ciry+=10:if ciry>=CIRCLEY:/*c_mode=stp:*/jump=0:drop=0:jcnt=0 if x<0:else:dontp=1 //端で進めなくする if (x+2580)>=0:else:dontm=1 wait 1 loop cls:mes "GAME OVER";時間切れ stop *wblock repeat 33 pos blockx(cnt),blocky(cnt) if mode(cnt)=m_block:picload "block.bmp",1 if mode(cnt)=m_hatena:picload "hatena.bmp",1 if mode(cnt)=m_kuri:picload "kuri.bmp",1 if (blockx(cnt)-CIRCLESIZE)<cirx & cirx<(blockx(cnt)+BLOCKSIZE)/*幅*/:if (blocky(cnt)+BLOCKSIZE)>ciry & ciry>(blocky(cnt)+SIRCLESIZE)/*下の高さ*/:hikisu=cnt/*cntを引き渡す*/:gosub *shita if (blockx(cnt)-CIRCLESIZE)<cirx & cirx<(blockx(cnt)+BLOCKSIZE)/*幅*/:if blocky(cnt)>(ciry+CIRCLESIZE-5) & (ciry+CIRCLESIZE+5)>blocky(cnt)/*ブロックの上*/:hikisu=cnt:gosub *ue if onblock=0:if (blockx(cnt)-CIRCLESIZE)<=cirx & cirx<=(blockx(cnt)+BLOCKSIZE):else:if blocky(cnt)>(ciry+(CIRCLESIZE-5)) & (ciry+(CIRCLESIZE+5))>blocky(cnt)/*ブロックの上→それ以外*/:hikisu=cnt:gosub *out_b if (blockx(cnt)-CIRCLESIZE-5)<cirx & cirx<(blockx(cnt)+(BLOCKSIZE/2)-CIRCLESIZE)/*幅*/:if blocky(cnt)<(ciry+(CIRCLESIZE-5)) & ciry<(blocky(cnt)+BLOCKSIZE):hikisu=cnt:gosub *hidari /*左から横を通り抜けられなくする*/ if (blockx(cnt)+(BLOCKSIZE/2+1))<cirx & cirx<(blockx(cnt)+BLOCKSIZE)/*幅*/:if blocky(cnt)<(ciry+(CIRCLESIZE-5)) & ciry<(blocky(cnt)+BLOCKSIZE):hikisu=cnt:gosub *migi /*右から横を通りぬけられなくする*/ loop onblock=0 return *shita if mode(hikisu)=m_block | mode(hikisu)=m_hatena:/*c_mode=drop*/drop=1:jump=0:if mode(hikisu)=m_hatena:mode(hikisu)=m_star:gosub *hatena_touch if mode(hikisu)=m_kuri:mode(hikisu)=m_tubure return *ue if mode(hikisu)=m_block | mode(hikisu)=m_hatena:/*c_mode=stp*/drop=0:onblock=1:jcnt=0 if mode(hikisu)=m_kuri:mode(hikisu)=m_tubure return *hidari if mode(hikisu)=m_block | mode(hikisu)=m_hatena:dontm=1 if mode(hikisu)=m_kuri:goto *hit return *migi if mode(hikisu)=m_block | mode(hikisu)=m_hatena:dontp=1 if mode(hikisu)=m_kuri:goto *hit return *out_b if mode(hikisu)<=m_tubure:/*c_mode=drop*/drop=1 return *hatena_touch repeat 30 if mode(cnt)=m_star:pos blockx(cnt),(blocky(cnt)-30):print "☆":mode(cnt)=m_block:goto *clear loop return *hit mes "ゲームオーバー" stop *block_ichi block(0)=240:blocky(0)=80 block(1)=280:blocky(1)=60 block(2)=400:blocky(2)=90 block(3)=520:blocky(3)=60 block(4)=560:blocky(4)=60 block(5)=480:blocky(5)=60 block(6)=440:blocky(6)=60//:mode(6)=m_hatena block(7)=0:blocky(7)=500 block(8)=0:blocky(8)=600 block(9)=0:blocky(9)=700 block(10)=0:blocky(10)=700 block(11)=0:blocky(11)=400 block(12)=0:blocky(12)=300 block(13)=0:blocky(13)=700 block(14)=0:blocky(14)=700 block(15)=0:blocky(15)=300 block(16)=0:blocky(16)=300 block(17)=400:blocky(17)=50:mode(17)=m_kuri block(18)=600:blocky(18)=110:mode(18)=m_kuri block(19)=1000:blocky(19)=110:mode(19)=m_kuri block(20)=3180:blocky(20)=110:mode(20)=m_kuri block(21)=2980:blocky(21)=110:mode(21)=m_kuri block(22)=2780:blocky(22)=110:mode(22)=m_kuri block(23)=2580:blocky(23)=110:mode(23)=m_kuri block(24)=2380:blocky(24)=110:mode(24)=m_kuri block(25)=2030:blocky(25)=110:mode(25)=m_kuri block(26)=1980:blocky(26)=110:mode(26)=m_kuri block(27)=1780:blocky(27)=110:mode(27)=m_kuri block(28)=1580:blocky(28)=110:mode(28)=m_kuri block(29)=1380:blocky(29)=110:mode(29)=m_kuri //block(30)=240:blocky(30)=110:mode(30)=m_kuri //block(31)=280:blocky(31)=110:mode(31)=m_kuri block(32)=1180:blocky(32)=110:mode(32)=m_kuri return *clear wait 100 cls mes "クリア!" stop



この記事に返信する


たこ

リンク

2008/8/23(Sat) 01:12:51|NO.18639

Nさんのいう「一番上」とはどういう意味ですか?



GENKI

リンク

2008/8/23(Sat) 01:34:01|NO.18643

質問するには長いスクリプトですね。haikei.bmpですか…。

ご自分でデバッグ作業はやりましたか?
デバッグにはコツのようなものがあります。
下記アドレスに書いてあることが役に立つと思います。ご一読ください。
http://quasiquote.org/hspwiki/%E3%83%87%E3%83%90%E3%83%83%E3%82%B0%E3%81%AE%E4%BB%95%E6%96%B9



Quiet

リンク

2008/8/23(Sat) 01:40:19|NO.18644

>Nさんのいう「一番上」とはどういう意味ですか?
加速度が0になった時、という意味ではないでしょうか。

ジャンプについて

http://hsp.tv/play/pforum.php?mode=all&num=17107


scriptを張るなら必要な分だけ切り取って下さい。
見づらかったです。



SYAM

リンク

2008/8/23(Sat) 03:39:02|NO.18650

ちょっとキビしいことを言うようですが、
正直、このスクリプトを直すよりは、先にQuietさんが紹介しているリンク先を参考にして一から書き直したほうがいいと思います。
その方が結果的に時間もかからない可能性が高いですし、応用しやすいものになると思います。

別に現状のスクリプトを削除したりする必要はないんですから、試しにやってみてはどうでしょう。。



ANTARES

リンク

2008/8/23(Sat) 07:45:47|NO.18653

>どうも、途中で、dropという変数が1になっちゃっているようなのですが・・・
 そこまでわかっているなら、dropを検索して「drop=1」を1つずつ
コメントアウトしてみれば、どれがまずいのかわかるでしょう。

 画像はいちいちpicloadするのではなくbufferに読み込んで
gcopyで表示しましょう。
このとき、redrawを使うとちらつかなくなります。

 1行が長すぎるのはバグの元です。
特に、複雑な条件判断はわかりやすく書かないと
バグの温床になります。



ANTARES

リンク

2008/8/23(Sat) 07:56:24|NO.18654

>ご自分でデバッグ作業はやりましたか?
 デバッグしないで下の文が書けますかね?

>どうも、途中で、dropという変数が1になっちゃっているようなのですが・・・

 なんかひとりをよってたかって叩く2チャンみたいな掲示板になってきたなあ。
ひとりが批判的なことを書いたら他の人は批判的なレスを控えるみたいな
配慮はできないもんですかね?



S&R(楓)

リンク

2008/8/23(Sat) 08:27:05|NO.18655

最近のANTARESさんって暴走気味じゃない?



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