public class POOFight{
    public static void main(String argv[]){
	String pet1_class = argv[0];
	String pet2_class = argv[1];
	String arena_class = argv[2];
	POOPet pet1, pet2;
	POOArena arena;

	try{
	    pet1 = (POOPet)(Class.forName(pet1_class).newInstance());
	    pet2 = (POOPet)(Class.forName(pet2_class).newInstance());
	    arena = (POOArena)(Class.forName(arena_class).newInstance());	    
	}
	catch(Exception e){
	    System.out.println(e);
	    return;
	}

	pet1.join(arena);
	pet2.join(arena);
	
	while(pet1.getHP()>0 && pet2.getHP()>0){
	    arena.draw();
	    
	    //the pet with higher AGI could act faster
	    if( pet1.getAGI() >= pet2.getAGI()){
		pet1.act(arena);
		pet2.act(arena);
	    }
	    else{
		pet2.act(arena);
		pet1.act(arena);
	    }
	}

	//shows something like "CharlieL wins"
	if(pet1.getHP()>0)
	    System.out.println(pet1 + " wins");
	else if (pet2.getHP()>0)
	    System.out.println(pet2 + " wins");
	else
	    System.out.println("TIE");
    }
}

