クラスの数が13個もあるので、主要なものだけアウトプットする。
コードの解説は夫である「さとし」が書きました。
コードの解説は夫である「さとし」が書きました。
FinalJudgement クラス
package diablo; import java.util.Scanner; public class FinalJudgement { public static void main(String[] args) { // TODO 自動生成されたメソッド・スタブ int totalLuckyPoint = 0; totalLuckyPoint = apprise() + isUseKeys() + calcLegendaryLuckyPoints() + calcSetItemLuckyPoints(); decide(totalLuckyPoint); FinalJudgement f = new FinalJudgement(); } static int input() { return new Scanner(System.in).nextInt(); } /** * 味方を判定してラッキーポイントを返却します。 * * @return 味方から算出したラッキーポイントの合計 */ static int apprise() { System.out.println("味方の職を入力してください"); int totalLuckyPoint = 0; for (int i = 0; i < 3; i++) { System.out.println ("1,Wizard 2,WitchDoctor 3,Monk 4,Barbarian 5,DemonHunter 6,Crusader"); int heroNumber = input(); if (heroNumber == 1) { totalLuckyPoint += new Wizard().getLucky(); } else if (heroNumber == 2) { totalLuckyPoint += new WitchDoctor().getLucky(); } else if (heroNumber == 3) { totalLuckyPoint += new Monk().getLucky(); } else if (heroNumber == 4) { totalLuckyPoint += new Barbarian().getLucky(); } else if (heroNumber == 5) { totalLuckyPoint += new DemonHunter().getLucky(); } else if (heroNumber == 6) { totalLuckyPoint += new Crusader().getLucky(); } } return totalLuckyPoint; } static int isUseKeys() { System.out.println("RiftKeyを使いましたか?"); System.out.println("1,Yes 2,No"); int selectUseKeys = input(); if (selectUseKeys == 1) { return -3; } else { return 3; } } static int calcLegendaryLuckyPoints() { System.out.println("拾ったレジェンダリーアイテムの数を入力してください"); int legendarys = input(); legendarys = legendarys * new Legendary().getLucky(); return legendarys; } static int calcSetItemLuckyPoints() { System.out.println("拾ったセットアイテムの数を入力してください"); int setItems = input(); setItems = setItems * new SetItem().getLucky(); return setItems; } static void decide(int totalLuckyPoint) { System.out.println("あなたは" + totalLuckyPoint + "点でした"); if (totalLuckyPoint < -3) { System.out.println("イライラしていますね"); } else if (totalLuckyPoint < 0) { System.out.println("マシ"); } else if (totalLuckyPoint < 3) { System.out.println("珍しい"); } else { System.out.println("おめでとう"); } } }
メインクラス。この中でラッキーポイントの算出などを行っている。
このあたりはデザインパターンを使えばもっとかっこよくかけるはず。
input メソッドは本を見て私が書いた(夫)
Hero も数字で判定しているだけなので、もうちょっと Java っぽくかけなくもないが
それをやると妻が混乱するのでやめた。(generics で書くとかできそう)
このあたりはデザインパターンを使えばもっとかっこよくかけるはず。
input メソッドは本を見て私が書いた(夫)
Hero も数字で判定しているだけなので、もうちょっと Java っぽくかけなくもないが
それをやると妻が混乱するのでやめた。(generics で書くとかできそう)
AbstractHerot クラス
package diablo; public abstract class AbstractHero implements Hero { int luckyPoint; public AbstractHero(int luckyPoint) { this.luckyPoint = luckyPoint; } @Override public int getLucky() { // TODO 自動生成されたメソッド・スタブ return luckyPoint; } }
Hero の抽象クラス。
Hero ごとにポイントを保持しているのみ。
共通の処理があったらこのクラスに記述する予定で作成した。
Hero クラス
package diablo; public interface Hero { int getLucky(); }
Hero のインタフェース。
全 Hero が持つべきメソッドをこのインタフェースに記述する予定で作成した。
Barbarian クラス
package diablo; public class Barbarian extends AbstractHero { public Barbarian() { super(-5); } }バーバリアンのクラス。 各 Hero のコンストラクタにラッキーポイントを渡してインスタンスを生成する。
本当は各 Hero ごとに複雑な条件でラッキーポイントの増減をさせるつもりでいたが
面倒になったのと、入力項目が増えすぎるので頓挫した。自動化できるならやりたい
プログラミング初心者がJavaでいちばん初めに作ったもの その1「構想編」
0 件のコメント:
コメントを投稿