投稿
ASA fusuian
棒人間ボウタ君の冒険! カニ歩きマンとよく似てますが違う人です。ボウタ君は超能力者で、画面の端から端へ瞬間移動します。音がかっこいい! あと地面に穴が空いてますが落ちません。 これは超能力ではない!
5そうだね
プレイ済み
返信[1]
親投稿
ASA fusuian
プログラムリスト。カニ歩きマンとほとんど同じなので前に打ち込んだ人は楽をしましょう。 これから落下とジャンプを追加します。
0そうだね
プレイ済み
返信[2]
親投稿
お願いします!!
0そうだね
プレイ済み
返信[3]
親投稿
ASA fusuian
落下。 ボウタ君の足元、座標(X,Y+1)の文字がスペースなら、Y座標を増やします。 CLSのあと画面が0文字で埋まるため、落下判定にはスペースとCHR$(0)の両方が必要でした。
0そうだね
プレイ済み
返信[4]
親投稿
ASA fusuian
ジャンプ! 縦の移動量を表す変数Vを変化させて、ジャンプと落下の両方をコントロールします。 さっき最後に足したENDIFを結局削除したのは、ジャンプ中に左右移動したかったからですね(^^;
0そうだね
プレイ済み
返信[5]
親投稿
ASA fusuian
ここで変数Vの動きを追ってみましょう。 起動時はV=0です。 メインループ、34行、V==0かつAボタンオンで、V=-1.5。 ループ回って21行、Y(25)にV(-1.5)を足し23.5にします。 24〜26行、C$は空白なのでVに0.3を足し-1.2。 34行、ここでまだAボタンがオンでもVが-1.2なので条件成立しません。 35〜36行、左右ボタンは有効ですが==判定なのでAボタン押してると動きません(これマズイね!) 40〜41行、X,Yにボウタ君を表示。
0そうだね
プレイ済み
返信[6]
親投稿
ASA fusuian
次のループ、21行で今度はY(23.5)にV(-1.2)を足し22.3。 26行、Vに0.3を足し-0.9。 34〜36行飛ばしてX,22にボウタ君。 また次のループではY(22.3)にV(-0.9)を足して21.4、 Vに0.3足して-0.6、ボウタ君の座標はX,21。 次のループでY=20.8、V=-0.3、 その次のループでY=20.5,V=0、 そのまた次のループはY変わらず、V=0.3、 そのまた次のループでY=20.8、V=0.6、 この次のループでY=21.4、V=0.9。下降が始まります。 ここまでボウタ君のY座標は25,23,22,21,20,20,20,20,21と変わります。
0そうだね
プレイ済み
返信[7]
親投稿
ASA fusuian
下降ループが続き、Y=22.3、V=1.2。 次のループでY=23.5、V=1.5。 次のループの21行でY=25、初めの値に戻ります。 このときC$は床のブロックの文字になるため、24行の条件は成立せず、27行のELSE節に飛び着地音を鳴らしてVを0にします。 このときAボタンを押しっぱなしだと即次のジャンプが始まりますね。
0そうだね
プレイ済み
返信[8]
親投稿
ASA fusuian
ジャンプの初期値-1.5と、ループごとに足される0.3の数値を変えるとジャンプ力が上がったり、滞空時間が伸びたりしますが一つ問題があります。落下中にVが2を超えると床をスリ抜けて落下死します(笑)
0そうだね
プレイ済み
返信[9]
親投稿
ASA fusuian
もうひとつ問題があって、穴を走り抜けることができます。 穴を通ったら即落下が始まるよう、26行でVが0なら+0.3ではなく1を入れましたが、隣の床にメリ込んでから落下します。 これは変な小細工せずに、小さな穴なら走り抜けられる方がリアルかも。
0そうだね
プレイ済み
返信[10]
親投稿
ジャンプしながら落ちたりするとエラーになるのですが直せませんか??
1そうだね
プレイ済み
返信[11]
親投稿
ASA fusuian
あっそうか、高いとこから落ちるとやっぱりVが2を超えますね。ちょっと待っててくださいね。
0そうだね
プレイ済み
返信[12]
親投稿
ASA fusuian
Vが大きいとスリ抜ける問題は、結局Vを1より大きくしないという消極的な方法で解決(^^; あと穴が大きかったり山を作ったり。 山にトンネルが掘れちゃいますが!
0そうだね
プレイ済み
返信[13]
親投稿
穴が、できちゃわない用にしてください!!
1そうだね
プレイ済み
返信[14]
親投稿
ASA fusuian
明日まで待って! おやすみなさい!
1そうだね
プレイ済み
返信[15]
親投稿
ASA fusuian
空白チェック関数CHKSPCを作ります。あと足場をふやします。
0そうだね
プレイ済み
返信[16]
親投稿
ASA fusuian
CHKSPCで床チェックを書き直し、ついでに左右移動にもCHKSPCを追加します。 これでうっかり山にトンネルを掘らなくなります。 ただし、足場の下でジャンプすると、まだ足場をブチ抜いちゃうことがある!
0そうだね
プレイ済み
返信[17]
親投稿
ASA fusuian
ジャンプ中、一度に3~4文字分の高さを上がり下がりすると、足場を消したりスリ抜けたりしてしまいます。 そこでJUMPFALL関数を作って、Vの値に応じて1マスずつ空白をチェックします。 JUMPFALL関数は何もなければVをそのまま返し、足場があったら0を返します。
0そうだね
プレイ済み
返信[18]
親投稿
ASA fusuian
JUMPFALL関数の使いどころ。 これでジャンプの初速度や落下速度の上限に、3や4を指定できます。 いやもう落下速度制限いらんか。
0そうだね
プレイ済み
返信[19]
親投稿
ASA fusuian
マネマネさんのリクエストで、扉記号に着いたらゴールとして終了、という機能を追加します。 まず扉を壁と区別できるよう、CHKSPCを修正します。扉なのに空白扱いは不思議ですがその方が都合がいいのです。 あと画面上に扉をPRINTします。
0そうだね
プレイ済み
返信[20]
親投稿
ASA fusuian
ジャンプの計算や移動の処理が終わってボウタ君の位置が確定したら、ボウタ君をPRINTする前にその位置の文字をとり、それが扉だったら@GOALへ飛びます。 @GOALでは単にメッセージを出して終了。
0そうだね
プレイ済み