|
package personaggame;
class WrongState extends Exception{}
enum State{
normal,weak,dead;
}
enum Raca{
human,gnom,elf,ork,drakon;
}
class Person{
private final String name;
private final Raca raca;
private final int max_health;
private State state;
private int health;
Person(String name,Raca raca,int max_health)
{
this.name=name;
this.raca=raca;
this.max_health=max_health;
state=State.normal;
health=max_health;
}
public String getName(){
return name;
}
public Raca getRaca(){
return raca;
}
public State getState(){
return state;
}
public void setState(State state){
this.state=state;
}
public int getHealth(){
return health;
}
public void addHealth(int health){
this.health+=health;
}
public int getmaxHealth(){
return max_health;
}
public int equals(Person tmp){
if((float)((health/max_health)*100)>((float)(tmp.health/tmp.max_health)*100))
return 1;
if((float)((health/max_health)*100)<((float)(tmp.health/tmp.max_health)*100))
return -1;
else
return 0;
}
public void attack(Person tmp){
if(raca==tmp.raca)tmp.health-=10;
if(raca!=tmp.raca)tmp.health-=15;
if((((float)tmp.health/(float)tmp.max_health)*100)<10)
tmp.state=State.weak;
if(tmp.health<=0){
tmp.health=0;
tmp.state=State.dead;
}
}
public void livingWater()throws WrongState{
if(state==State.dead)
throw new WrongState();
else{
health+=5;
if(health>max_health)
health=max_health;
}
if((((float)health/(float)max_health)*100)>=10)
state=State.normal;
}
public String toString(){
return "Имя:"+name+" Раса:"+raca+" состояние:"+state
+" health:"+(((float)health/(float)max_health)*100)+"% max_health:"+max_health;
}
}
class Mag extends Person{
private final int max_mana;
private int mana;
Mag(String name,Raca raca,int max_health,int max_mana){
super(name,raca,max_health);
this.max_mana=max_mana;
mana=max_mana;
}
public void magHealth(Person tmp)throws WrongState{
if(tmp.getState()==State.dead)
throw new WrongState();
if(mana>60)
for(int i=0;i<30;i++){
if(tmp.getHealth()<tmp.getmaxHealth()){
tmp.addHealth(1);
mana-=2;
if(mana<0)mana=0;
}
}
if((((float)tmp.getHealth()/(float)tmp.getmaxHealth())*100)>=10)
tmp.setState(State.normal);
}
public String toString(){
return "МАГ Имя:"+super.getName()+" Раса:"+super.getRaca()+" состояние:"+super.getState()
+" health:"+(((float)super.getHealth()/(float)super.getmaxHealth())*100)
+"% max_health:"+super.getmaxHealth()
+" мана:"+mana+" max_mana:"+max_mana;
}
}
public class PersonagGame {
public static void equalsHealth(Person tmp1,Person tmp2){
if(tmp1.equals(tmp2)==0)
System.out.println("у "+tmp1.getName()+" и "+tmp2.getName()+" проценты здоровья равны");
if(tmp1.equals(tmp2)==1)
System.out.println("у "+tmp1.getName()+" больше здоровья чем у "+tmp2.getName());
if(tmp1.equals(tmp2)==-1)
System.out.println("у "+tmp1.getName()+" меньше здоровья чем у "+tmp2.getName());
}
public static void main(String[] args) {
Person p1=new Person("Денис",Raca.human,200);
System.out.println(p1);
Person p2=new Person("Андрей",Raca.drakon,400);
System.out.println(p2);
equalsHealth(p1,p2);
p2.attack(p1);
for(int i=0;i<24;i++)
p1.attack(p2);
System.out.println(p1);
System.out.println(p2);
try{
p2.livingWater();
}
catch(WrongState e){
System.err.println(e);
}
System.out.println("\n"+p2);
Mag m1=new Mag("Деня",Raca.human,250,300);
System.out.println(m1);
try{
m1.magHealth(p2);
}
catch(WrongState e){
System.err.println(e);
}
System.out.println(p2);
for(int i=0;i<24;i++)
p1.attack(m1);
System.out.println(m1);
try{
m1.magHealth(m1);
}
catch(WrongState e){
System.err.println(e);
}
System.out.println(m1);
}
}
Дата добавления: 2015-11-04; просмотров: 16 | Нарушение авторских прав
<== предыдущая лекция | | | следующая лекция ==> |
import java.awt.event.ActionListener; | | | package point; //создаем собственный пакет |