課題2 モンスターのHPを0にすることができた!
■ゲームの流れ
1. モンスターが現れる。
2. 勇者はどのモンスターを攻撃するか選ぶ。
3. 勇者の攻撃が実行される。
4. 全てのモンスターのHPが0になった場合ゲーム終了。
そうでない場合、1に戻る。
※モンスターからの攻撃はない。
※モンスターは複数体現れる。
※ダメージは(攻撃力 - 防御力)である。
■実装条件
・生物クラス、モンスタークラス、勇者クラスをつくる
・モンスタークラス、勇者クラスは生物クラスを継承する
・オーバーライドを使う
・複数のモンスターを管理するのにListクラスを使う
HP0にするまで攻撃はfor文を使って実行してみました。
モンスターを複数体作ってListクラスを使うですね、
Listクラスとは使ってことありませんが、何かを並列で管理るために便利なものでしょう。
やってみます!
Main
public class Main {
public static void main(String[] args) {
//勇者を作成
Character c = new Character();
c.name = "やっつん";
System.out.println("生物" + c.name + "が第一世界に召喚された。");
Hero h = new Hero();
h.name = "マッサル";
h.hp = 100;
h.power = 20;
Goblin g1 = new Goblin();
g1.name = "ゴブリン";
g1.hp = 50;
g1.defence = 10;
g1.suffix = 'A';
System.out.println("ゴブリン" + g1.suffix + "が現れた!!");
g1.dance();
g1.die();
h.damage = h.power - g1.defence;
h.sleep(10);
h.attack(g1);
h.finish();
h.Status();
g1.Status();
}
public static void main(String[] args) {
//勇者を作成
Character c = new Character();
c.name = "やっつん";
System.out.println("生物" + c.name + "が第一世界に召喚された。");
Hero h = new Hero();
h.name = "マッサル";
h.hp = 100;
h.power = 20;
Goblin g1 = new Goblin();
g1.name = "ゴブリン";
g1.hp = 50;
g1.defence = 10;
g1.suffix = 'A';
System.out.println("ゴブリン" + g1.suffix + "が現れた!!");
g1.dance();
g1.die();
h.damage = h.power - g1.defence;
h.sleep(10);
h.attack(g1);
h.finish();
h.Status();
g1.Status();
}
}
Character
public class Character {
String name;
int hp;
int power;
int damage;
int defence;
int recover;
String name;
int hp;
int power;
int damage;
int defence;
int recover;
}
Hero
public class Hero extends Character {
void sleep(int hour){
recover = 10 * hour;
this.hp += recover;
System.out.println(this.name + "は、" + hour + "時間眠って" + recover + "回復した。");
System.out.println(this.name + "の現在のHPは" + this.hp + "です。");
}
void attack(Goblin g1){
for(int i=0; i<g1.hp; i++){
System.out.println(this.name + "は、" + g1.name + "に" + damage + "ダメージを与えた");
g1.hp -= damage;
System.out.println(g1.name + "の現在のHPは" + g1.hp + "です。");
System.out.println("-----------------------------");
if(g1.hp>0){
System.out.println("激しい戦いは続く");
}else{
System.out.println("ゴブリン死亡");
}
}
}
void finish(){
System.out.println("マッサルは次の冒険へと旅立った。");
}
public void Status(){
System.out.println("###ステータス###");
System.out.println("勇者:"+this.name+" HP:"+this.hp);
}
//読み込み可能
public int getHp(){
return this.hp;
}
//書き込み可能
public void setHp(int hp){
this.hp=hp;
}
void sleep(int hour){
recover = 10 * hour;
this.hp += recover;
System.out.println(this.name + "は、" + hour + "時間眠って" + recover + "回復した。");
System.out.println(this.name + "の現在のHPは" + this.hp + "です。");
}
void attack(Goblin g1){
for(int i=0; i<g1.hp; i++){
System.out.println(this.name + "は、" + g1.name + "に" + damage + "ダメージを与えた");
g1.hp -= damage;
System.out.println(g1.name + "の現在のHPは" + g1.hp + "です。");
System.out.println("-----------------------------");
if(g1.hp>0){
System.out.println("激しい戦いは続く");
}else{
System.out.println("ゴブリン死亡");
}
}
}
void finish(){
System.out.println("マッサルは次の冒険へと旅立った。");
}
public void Status(){
System.out.println("###ステータス###");
System.out.println("勇者:"+this.name+" HP:"+this.hp);
}
//読み込み可能
public int getHp(){
return this.hp;
}
//書き込み可能
public void setHp(int hp){
this.hp=hp;
}
}
Goblin
public class Goblin extends Character{
char suffix;
void dance(){
System.out.println("ゴブリンは無我夢中でダンスした");
}
void die(){
if(hp<0){
System.out.println("ゴブリンは動かなくなった。");
}
}
public void Status(){
System.out.println("###ステータス###");
System.out.println("ゴブリン:"+this.name+" HP:"+this.hp);
}
//読み込み可能
public int getHp(){
return this.hp;
}
//書き込み可能
public void setHp(int hp){
this.hp=hp;
}
char suffix;
void dance(){
System.out.println("ゴブリンは無我夢中でダンスした");
}
void die(){
if(hp<0){
System.out.println("ゴブリンは動かなくなった。");
}
}
public void Status(){
System.out.println("###ステータス###");
System.out.println("ゴブリン:"+this.name+" HP:"+this.hp);
}
//読み込み可能
public int getHp(){
return this.hp;
}
//書き込み可能
public void setHp(int hp){
this.hp=hp;
}
}