import java.util.Random;

public class FightersUniverse {
private static final int N = 4;
private static int numbers[] = new int[N];
private static Random random = new Random();
private static void shuffle(){
for(int i=0; i<N; i++){
int j = random.nextInt(N);
int temp = numbers[i];
numbers[i] = numbers[j];
numbers[j] = temp;
}
}
public static void main(String []args){
int ap= 0;
Player player1 = new Player("Ho Yin", 10);
Player player2 = new Player("Justin", 10);
BossPlayer player3 = new BossPlayer("Boss Janice",10);
BossPlayer player4 = new BossPlayer("Boss Florence",10);
Player Players[]={player1,player2,player3,player4};

int round=1;
int d= 1;//attack point random from 0-d
System.out.println( "Java Fighters' Universe! v20071112");
do
{
for(int i=0; i<N; i++)
numbers[i] = i;// i=0/1/2/3
shuffle();
		System.out.println( "== Round " + round + " ==");
	 int w=Players[numbers[1]].getpower();// mark down the ord power
	 //player1 is 0, player2 is 1, player3 is 2, player4 is 3
	 int x=Players[numbers[2]].getpower();// mark down the ord power
    Random randomNumbers = new Random();			
			int e=0 + randomNumbers.nextInt( 2);//attack win or lose	
				ap = 2*(1 + randomNumbers.nextInt( d )) ;//attack point, it must be2,4,6,8,10....if ap=1,3,5,7,9...... 1/2=0
				d=d+1;//increase the random of c in next round
System.out.println(Players[numbers[1]].getname()+ " attacks "+Players[numbers[1]].getname()+"!");		
if (e ==0){
			Players[numbers[1]].attack(+ap); //player1 attack +ap
			Players[numbers[2]].attack(-ap);//player2 attack - ap 
				
			System.out.println(Players[numbers[1]].getname()+" wins");}
				
else{
			Players[numbers[1]].attack(-ap);
			Players[numbers[2]].attack(+ap);
			System.out.println(Players[numbers[1]].getname()+" loses");}
				
if (Players[numbers[1]].getpower()<0)//if player1 power<0
			System.out.println( Players[numbers[1]].getname()+" is killed!");
			else if(Players[numbers[2]].getpower()<0)//if player2 power <0 
			System.out.println( Players[numbers[2]].getname()+" is killed!");		
			
			System.out.println("*** "+ Players[numbers[1]].getname()+": "+w+" -> " +Players[numbers[1]].getpower());
			System.out.println("*** "+ Players[numbers[2]].getname()+": "+x+" -> " +Players[numbers[2]].getpower());	
round++;}		
		while(player1.getpower()>0&&player2.getpower()>0&&player3.getpower()>0&&player4.getpower()>0);//one player power<=0,the game break
		
		System.out.println( "== Game over ==");
		System.out.println( player1.getname()+"'s power = " + player1.power);
		System.out.println( player2.getname()+"'s power = " + player2.power);
		System.out.println( player3.getname()+"'s power = " + player3.power);
		System.out.println( player4.getname()+"'s power = " + player4.power);
	}
}
