dポイントプレゼントキャンペーン実施中!

http://codepad.org/MlYD8zXy
上記は製作途中のゲームのソースコードです、作りが雑なのは全くの初心者なのでご了承くださいm(_ _)m

要望が3つあります

・プレイヤーかモンスターのどちらかのHPが0になった時に、このゲームを終了させたい。

・攻撃の選択肢を増やしたい。(魔法や必殺技など)

・「急所に当たった」という表現を追加したい。

これらを実現させるにはどう書けば良いでしょうか?

上記3つのうちのいずれかでもコードを作成できる方で、
お時間がよろしければ下記サイトに例としてコードを書いていただけないでしょうか。
http://codepad.org/
(一からでも、コピーして改変、少し手を加えて頂けるだけでも嬉しいです)

よろしく願い致します><

A 回答 (1件)

ここは質問するところなんですけど、そこのところはご理解いただいているという認識でよろしいでしょうか?



>要望が3つあります

要望以前にちゃんと動作するコードにする必要がありそうですが。

>int x = 0, a = 11, b = 17, c = 50;
>printf("あなたの運勢を二桁以内の半角英数字で入力してください:");
>scanf("%d",x);

数字の入力は出来ませんね。
少なくとも入力文字の先頭に数字を入力してはいけないコードです。
「先に進ませる」ためには。
# 理由はご丁寧にコンパイル時の警告メッセージとして出力されています。
数字を入力するとプレイヤーとモンスターの戦闘は神により禁止されます。
# SegmentationFaultかアクセス違反という神罰により平和な世界が訪れる。

で、数字に入力できないので…ここでのxは常に0になり以降の計算式も毎回同じ値を返すことが確定します。
# ゲーム的要素ないですね…。

>printf("(Ctrl+cで終了します。先頭を続けるにはEnterキーを押してください)\n");

Ctrl+cでやはり神を召喚します。
結果として「先頭は無かった」ことにされ、プレイヤーもモンスターも死なない平和が実現されます。
# プロセスの強制終了。
環境によっては世界の裏側でプレイヤーとモンスターが神からの時間停止呪文の解放を待ち続けます。
# フォアグランドにならないとgetchar()から先進めないでしょうしね。

>・プレイヤーかモンスターのどちらかのHPが0になった時に、このゲームを終了させたい。

>while(1){
のループの継続条件を整理してみてください。
ちなみに、「0」になる確率にも注意が必要です。
# 25-30は0ではありませんから。

まぁ、ループの継続条件だけでなく中断判定も入れないとアンデットになったプレイヤーがモンスターに攻撃可能だったりします。
さすが勇者!死んでもただでは死にません!
# そして、最初のループ継続条件をミスするとアンデットになったプレイヤーとモンスターがえいえんの戦闘を繰り広げます。
えいえんの戦闘の果て、アンデットから体力バカに転生します。
# えいえんはあるよ。ここにあるよ。

とりあえず、疑似乱数ってものがあることは勉強しましょう。
# あと、種が必要であることも。

>・攻撃の選択肢を増やしたい。(魔法や必殺技など)

getchar()での入力内容によって分岐する処理でも追加すればよいでしょう。
「想定外の入力」についても考慮は必要でしょうが。
# MPやら必殺技の使用条件とか考える必要もあるでしょうねぇ。

>・「急所に当たった」という表現を追加したい。

乱数で判定でしょうかねぇ。
行動選択できるなら判定処理ちゃんと考えないとアホな結果になるのでご注意を。

プレイヤーは回復の呪文を唱えた!
プレイヤーのHPが34回復。
モンスターの急所に当たった!!
モンスターに74のダメージ!!
みたいな。
# いつ攻撃したよ?
ちなみに何度か指摘しているループ継続条件をミスると、回復呪文でプレイヤーの負けになる場合もあります。
# アンデットから生者になれるわずかな隙間で。


>お時間がよろしければ下記サイトに例としてコードを書いていただけないでしょうか。

謹んでお断りいたします。
「こういうコードにして、こういう結果を望んだけど違う結果になる。どこが悪いの?」みたいな質問でしたら回答してくれる人はそれなりに居るでしょうが。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!