クラスの数が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 件のコメント:
コメントを投稿