前提・実現したいこと
「レベルが40以上なら魔王を倒す」という
プログラミングを実現させたい
発生している問題・エラーメッセージ
「2」を押すと修行してレベルが5ずつ増えるのですが 40以上になっても、「GAME CLEAR!」が表示されません。
該当のソースコード
public class Maougame { static String name = "勇者"; static int lv = 30; // 最初のレベル public static void main(String[] args) throws java.io.IOException { putJoshou(); putCommand(); if(lv<40) { putGameOver(); } else { putGameClear(); } } public static void putCommand() throws java.io.IOException { System.out.println("1.魔王を倒しに行く"); System.out.println("2.修行する"); int c = System.in.read(); if( c=='1' ) { System.out.println("魔王が現れた"); }else if( c=='2' ) { lv += 5; System.out.println("レベルが" +lv + "になった"); putCommand(); } else { System.out.println("正しく入力しろこのタコ"); putCommand(); } } //序章の表示 public static void putJoshou() { System.out.println("魔王が世界を滅ぼそうとしています"); System.out.println(name + "はレベル" + lv + "のツワモノです"); } //ゲームオーバー public static void putGameOver() { System.out.println(name + "は魔王に負けました"); System.out.println("Game Over"); } //ゲームクリア public static void putGameClear() { String s0 = name + "は魔王を倒しました"; put(s0); System.out.print("レベル" + lv); if(lv > 200) { put("なので瞬殺でしたwww"); } else if(lv>120) { put("なので楽勝でした"); }else if(lv>80) { put("なのでトントンでした"); }else if(lv>50) { put("なので苦労しました"); }else { put("なので死ぬかと思いました"); } System.out.println("GAME CLEAR!"); } public static void put(String str) { System.out.println(str); } }
試したこと
このサイトで勉強しています。
https://www.youtube.com/watch?v=VOgJReIXcng
動画の最後にコードの全文が表示されて、一応確認はしました。
何度見ても、間違っているように思えないのですが・・・。
補足情報(FW/ツールのバージョンなど)
作業はeclipseでやっています
ゲームクリアは表示できなくてもゲームオーバーは表示できてるんですか?
インデントはきちんと揃えてください。
インデントぐちゃぐちゃのコードはバグの温床です。デバッグもしづらくなります。
(質問に提示するためではなく自身のコードをそろえてから質問に提示してください。
仕様を勘違いしてるのでは…?
2を押し続けて40超えたらクリアではなく、40超えた状態で1を押したらクリアですよ。
>40超えた状態で1を押したらクリアですよ
・・・あ・・・あれ!?汗
もしかして自分、とっても恥ずかしい勘違いしていたのかも???
延々と修行するとどこまでレベルが上がるでしょう^^;
>imatya999さん
勘違いは誰にでもあるので別に気にはなりません。
lv2147483647ぐらいになったら魔王が勝手に現れて勝手に倒れ
put("なのでトントンでした");というのも良い手かもしれません。
>40超えた状態で1を押したらクリアですよ
つまり、41以上じゃないと倒せないのに「レベルが40以上なら魔王を倒す」というプログラミングっていってるところ(表現)が気になる。
回答2件
あなたの回答
tips
プレビュー