Javaのeclipseを利用しております。
今動かしてみて疑問に感じたことを質問させてください。
実行を選択した場合と、デバッグを行った場合では、結果に違いがでるのですが、それは何故でしょうか?
仕様だとするなら仕方がないので諦めますが、デバッグしても正確な情報が得られず困っております。
いくつも質問して申し訳ないですが、よろしくお願い致します。
Java1
1package application; 2class Actor extends Thread{ 3 private int hitpoint; 4 private int offence; 5 private int deffence; 6 private String name; 7 private Actor target; 8 private int deley = 1; 9 10 public int getHitPoint() { 11 return hitpoint; 12 } 13 14 public int getOffence() { 15 return offence; 16 } 17 18 public int getDeffence() { 19 return deffence; 20 } 21 public Actor getTarget() { 22 return target; 23 } 24 25 public void setHitPoint(int hitpoint) { 26 this.hitpoint = hitpoint; 27 } 28 public void setAttack(int offence) { 29 this.offence = offence; 30 } 31 public void setDeffence(int deffence) { 32 this.deffence = deffence; 33 } 34 35 public void setTarget(Actor target) { 36 this.target = target; 37 } 38 public boolean isDead() { 39 return target.hitpoint<=0; 40 } 41 42 public Actor(String name,int hitpoint,int offence,int deffence) { 43 this.name = name; 44 this.hitpoint = hitpoint; 45 this.offence = offence; 46 this.deffence = deffence; 47 } 48 49 public void attack(Actor pActor) { 50 int damage = offence - pActor.getDeffence(); 51 if(damage >= 0) { 52 pActor.setHitPoint(pActor.getHitPoint()-damage); 53 System.out.println(name+"は"+pActor.getName()+"に"+damage+"のダメージを与えた!"); 54 55 }else if(damage<=0) { 56 System.out.println("ダメージを受けない"); 57 } 58 59 60 } 61 62 public void run() { 63 while(true) { 64 try { 65 sleep(0 * deley); 66 67 }catch(InterruptedException e) { 68 } 69 if(isDead()) { 70 System.out.println(target+"を倒した!"); 71 break; 72 } 73 attack(target); 74 75 } 76 } 77}
html
1package application; 2 3public class MyMain { 4 5 6 public static void main(String[] args) { 7 8 Actor Hero = new Actor("主人公",100,25,15); 9 10 Actor Enemy1 = new Actor("敵1",60,30,5); 11 12 Hero.setTarget(Enemy1); 13 Enemy1.setTarget(Hero); 14 Hero.start(); 15 Enemy1.start(); 16} 17 }
実行時の結果
敵1はThread-0に15のダメージを与えた!
主人公はThread-1に20のダメージを与えた!
敵1はThread-0に15のダメージを与えた!
主人公はThread-1に20のダメージを与えた!
敵1はThread-0に15のダメージを与えた!
主人公はThread-1に20のダメージを与えた!
敵1はThread-0に15のダメージを与えた!
敵1はThread-0に15のダメージを与えた!
Thread[Thread-1,5,main]を倒した!
敵1はThread-0に15のダメージを与えた!
敵1はThread-0に15のダメージを与えた!
Thread[Thread-0,5,]を倒した!
デバッグ時の結果主人公はThread-1に20のダメージを与えた!
主人公はThread-1に20のダメージを与えた!
主人公はThread-1に20のダメージを与えた!
Thread[Thread-1,5,main]を倒した!
敵1はThread-0に15のダメージを与えた!
敵1はThread-0に15のダメージを与えた!
敵1はThread-0に15のダメージを与えた!
敵1はThread-0に15のダメージを与えた!
敵1はThread-0に15のダメージを与えた!
敵1はThread-0に15のダメージを与えた!
敵1はThread-0に15のダメージを与えた!
Thread[Thread-0,5,]を倒した!