忍者ブログ

からすまる日誌 java

実践2(3) (自習)

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

実践2(3) (自習)

自習

まだ考えるところ:
スライムA、B、Cという名前を付けるには??

 
先生に解決してもらったエラー:
1.
主人公がおなくなりになるpublic void death() をstaticにしていた。(ばってんがついてエクリプスがstaticにしましょうといった)
ここはstaticだと、主人公パーティーヒーロー全滅になるらしい。なぜだかまだわからない。staticでまずいのはわかった
実はstaticの説明を読んでもよくわかってない。要再考。
2.
1.に関連し、Slimeのpublic void attack(Hero h) { で、
 h.death();に直す。ここはHero.death();としていた。


とりあえずもう一度自分で1から作ってみる。
 
package hukusyu;

public class Main01 {

 public static void main(String[] args) {
  //主人公生成
  Hero h = new Hero();
  h.name = "みなと";
  h.hp = 25;
  h.ap = 100;
  System.out.println("Hero "+h.name+"生成しました");
  System.out.println("hp:"+h.hp+" ap:"+h.ap);
  System.out.println("");

  //モンスター生成
  Monster[] monsters = new Monster[3];
  monsters[0] = new Slime();
  monsters[1] = new Slime();
  monsters[2] = new Slime();
 
//おそらくこの前に武器装備とかの選択がある。
//目的地に移動(選択)
//主人公がフィールドにいればランダムで敵に遭遇する
//別の町で新たな装備ゲット
//とかか。

  System.out.println("モンスターに遭遇、戦闘開始します---");
  for(Monster m : monsters) {
   h.attack(m);
   m.attack(h);
  }
 }

}
 


package hukusyu;

public class Hero {
 //基本フィールド

 String name;
 int hp;
 int ap;

 Hero(){//何も設定されてないテスト用主人公なら
  this.hp = 10000;
  this.ap = 10000;
  this.name = "テスト用主人公";

 }

 //voidは戻り値なしの意味
 //publicは事実上の制限範囲なし
 //public voidの次にメソッド名を記述する

 public void attack(Monster m) {
  System.out.println(this.name+"の攻撃!");
  System.out.println(this.ap+"のダメージ!");
  m.hp -= this.ap;
 }

 //staticはnewされなくてもメモリに生成される

 public void death() {
  System.out.println(this.name+"はしんでしまった!");
  System.out.println("game over");
 }

 //自動生成
 public String getName() {
  return name;
 }

 public void setName(String name) {
  this.name = name;
 }

 public int getHp() {
  return hp;
 }

 public void setHp(int hp) {
  this.hp = hp;
 }

 public int getAp() {
  return ap;
 }

 public void setAp(int ap) {
  this.ap = ap;
 }
}


package hukusyu;

public abstract class Monster{
 //Monsterに関する「ざっくりした」設定
 //abstractは抽象メソッドの意味
 //すなわち通常下位になにかある

 int hp;
 int ap;
 String name;

 public void attack(Hero h) {
  System.out.println(this.name + "の反撃!");
  System.out.println("主人公側に10ポイントのダメージをあたえた!");
  h.hp -= 5;
 }

 public void run(Monster m) {
  System.out.println(m + "は逃げ出した!");

 }
}


package hukusyu;

public class Slime extends Monster{
 String name = "スライム";
 int hp = 120;
 int ap = 10;//スライムの攻撃力
 //char suffix;

 public void attack(Hero h) {//override
   System.out.println(this.name + "のでろでろ攻撃!");
   System.out.println(h.name+"に"+this.ap+"のダメージをあたえた!");
   h.hp -= this.ap;
   if(h.hp <= 0) {
    h.death();
   }
 }

 //getter/setter自動生成
 public String getName() {
  return name;
 }

 public void setName(String name) {
  this.name = name;
 }

 public int getHp() {
  return hp;
 }

 public void setHp(int hp) {
  this.hp = hp;
 }

 public int getAp() {
  return ap;
 }

 public void setAp(int ap) {
  this.ap = ap;
 }
}

PR

コメント

ブログ内検索

P R