プレイ日記
けんた nishisab
質問のトピックでも、回答を待っているのですが、文字が、決まった場所にカーソルが来て、決まったボタンを押すと文字が1列うごくのは、どうすればいいでしょうか? 本題:今、RPGを作っています。プレイしている時、敵を倒すと、体力が回復してしまいます。どうすればいいでしょうか?
0そうだね
プレイ済み
返信[1]
親投稿
あんど AND1GOUKI
文章から何がしたいのか理解できませんが、、、 「もし 決まった場所にカーソルが有り、決まったボタンが押されたら、文字が一列動く」的な、質問の文面通りのプログラムを書くことになるかと思います。 一発実現便利命令は無いハズです。 無いと思っているとカユイ所に手が届く便利命令が有ったりするのがプチコンのコワイ所ではありますが、知らない命令があるのは仕方がないので知っている命令の組み合わせで実装してしまいましょう。 プログラムなんてパズルみたいなモノです。想定通りに動けば御の字デス。 本題の件は、プログラムの体力を回復する部分を修正すれば良いと思います。としか、言えないです。 敵を倒した後の処理で体力回復の処理をしているハズなのでソコを修正するしかないですね。
0そうだね
プレイ済み
返信[2]
親投稿
けんた nishisab
倒したあとではないみたいです。・・・コマンドを選んだ瞬間でもないので、他に、どこがあると思いますか?
0そうだね
プレイ済み
返信[3]
親投稿
あんど AND1GOUKI
え?・・・「敵を倒すと、体力が回復する」のですよね?? 「倒したあとではないみたい」と、なると、そもそも「敵を倒すと、体力が回復する」が勘違いですかね? まず、どのタイミングで体力が回復するのか、今現在起こっている現象をハッキリさせないといけませんね。 体力の値がどの様に変化するのか等、細かく考えると原因が分かりやすいカモです。 たとえば、 「スタート時100有った体力が、戦闘で80に減った後、戦闘終了後に100になる。」 コレを「敵を倒すと体力が回復する」と表現するか「敵を倒すと体力が初期値に戻る」と表現するかで、原因がつかみにくくなったりしますよ?
0そうだね
プレイ済み
返信[4]
親投稿
けんた nishisab
体力は、敵と戦っていて、確か、16になり、また、戦うと、10になっていて、次に戦うと、12回復していて、また、戦うと、12回復していると言う問題です。(敵を倒す処理までに、すでに回復しています。)
0そうだね
プレイ済み
返信[5]
親投稿
あんど AND1GOUKI
文面から状況が読み取りにくいのですが、 敵に出会う。 戦う。 ダメージ受ける。体力16 戦う。 ダメージ受ける。体力10。 ここまでは、このような流れかな~と想像します。 で、「次に戦うと」からが、どのような状況なのかイマイチ伝わって来ないです。 一度戦闘が終了した後ですか? 戦闘状態が継続した状態ですか? 戦う以外の何か、条件が変わってないですか? 「戦う」と言うのは何かを選択して「戦う」ルーチンが実行されるのですか? なんにしても、「戦う」ルーチンの何処かで体力の変数を+12しているのだと思います。 プログラムで書いた命令、流れを意識して実行中の手順を考えると良いでしょう。
0そうだね
プレイ済み
返信[6]
親投稿
けんた nishisab
次に戦うとは、一度戦闘が終わってからで、また、戦うと言う所も、戦闘が終わってからです。
0そうだね
プレイ済み
返信[7]
親投稿
あんど AND1GOUKI
あやしい場所がだんだんと絞れてきましたね。 ここまでの事から、 「戦闘状態に入る時に体力が12回復する。」 と、言った症状なようなので、ソコのプログラムを見直すと体力の変数を12増やす記述が有るのではないかと推測します。
0そうだね
プレイ済み
返信[8]
親投稿
けんた nishisab
ありがとうございました!
0そうだね
プレイ済み
返信[9]
親投稿
あんど AND1GOUKI
解決出来たのなら良かったです。
0そうだね
プレイ済み
返信[10]
親投稿
けんた nishisab
言い忘れましたが、教えてくれて、ありがとうございましたという意味です。 今、考えているのですが、回復するのは、「こうげき」コマンドを選んだ瞬間から、敵が攻撃してくる瞬間だと思うのですが、変数を使う所で、回復しているのではないかと考えたのですが、ありませんでした・・・ どのように対処すればいいでしょうか・・・
0そうだね
プレイ済み
返信[11]
親投稿
あんど AND1GOUKI
ソコまでアヤシイ所が絞られても変数をいじっている所が見つからないとなると、ナニカ根本的な所でミスが有るような気がします。 「攻撃」以外にのコマンドに「回復」が有ったりしませんか? 有ると想定して、その回復値が「+12」だったりしませんか? たとえば、サブルーチンで組んであると想定すると、「攻撃」の下に「回復」のルーチンがあり、「攻撃」のルーチンに「RETURN」が無いため、そのまま「回復」のルーチンを通り、「回復」のルーチンの「RETURN」で戻っている。。そんな可能性も考えられます。 対処としては、要所要所に体力の変数を確認表示するプログラムを書いて、チェックしてみる手も有ります。 表示が速くて分らなかったらWAITも入れて下さいね。 変数の値が想定通りなら、「表示の部分で違う数値を表示している」可能性もありますよ?
0そうだね
プレイ済み
返信[12]
親投稿
けんた nishisab
回復のコマンドは入れていないので、体力を表示させてみます! ありがとうございます! 今からやってみます!
0そうだね
プレイ済み
返信[13]
親投稿
けんた nishisab
体力を表示させると、1どだけ、見えた体力と一致していなくて、他は、全て一致していました。 コマンドを選ぶ前に、体力の最大値を超えると最大値になるようにしても、そこまで到達するまでに、36か39で、止まります。 どの様にすれば、体力が変わらなくなるでしょうか?
0そうだね
プレイ済み
返信[14]
親投稿
あんど AND1GOUKI
重要なのは、「表示した体力の数値が想定した通りの数値になっているか?」です。 想定した数値が表示されたのであれば、他の場所に原因が有るってことですし、どこかで想定外の数値が表示されたのでれば、その表示をするプログラムとひとつ前に表示したプログラムの間に原因が有るってことです。 39と表示されているのが想定外だとしたら、何処から39の表示になるのかが重要になります。 想定の数値から39と表示される間に変数の値が変更されているハズなのでソコを修正すれば、体力が変わらなくなると思いますよ。
0そうだね
プレイ済み
返信[15]
親投稿
けんた nishisab
敵が攻撃してきて、体力の変数を減らす時に、「A[1]=A[1]ー受けるダメージ」と書いてあったのですが、「A[1]ーー受けるダメージ」と書けば、全く減らなくなりました! 今までありがとうございました!
0そうだね
プレイ済み
返信[16]
親投稿
あんど AND1GOUKI
えっと(汗) だいじょうぶ? ソレでいいのかなぁ? A[1]=A[1]--QRN って、A[1]から「-QRN」を引く、つまりA[1]にQRNを足すのと同じだけど? QRN=A[4]-GKO の方にナニカ問題を含んでいそうな気もしますが・・・ で、気になったのが「ASD」の値です。 RND(2)で代入だと「0」か「1」なので、直後のIF文が「1」か「2」で判定しているのが変ですね。 例外処置もしていないので「0」が入った時に、どちらのIF文にも引っかからず、そのまま直後の処理に入りますが、直後は攻撃失敗処理みたいなので結果オーライで動いているのかな? とりあえず、頭からプログラムの流れを追いかけ、変数の値の変化を紙に書き出してみるといいカモです。 流れを追いかける時は「こう動くハズ」といった思い込みを捨て、書いてある通りに追いかけてね。 健闘を祈る!
0そうだね
プレイ済み
返信[17]
親投稿
けんた nishisab
ありがとうございました!
0そうだね
プレイ済み
返信[18]
親投稿
けんた nishisab
プログラムを見ていると、守備力の変 数より、敵の攻撃力の変数の方が大きかったみたいで、回復していたのだと思います。 RNDの部分も直しておきました。
0そうだね
プレイ済み