void AsignarAccionesDefault(Lista<TipoLista> & lstAliados,Lista<TipoLista> & lstEnemigos, int TurnoActual, int MaximoTurno, int EnergiaInicial)	
{				
		int SumaEnergiaAliados=SumaEnergia(lstAliados);
		int SumaEnergiaEnemigos=SumaEnergia(lstEnemigos);
				
		double FactorEnergia=(double)SumaEnergiaAliados/SumaEnergiaEnemigos;
				
		Nodo<TipoLista> *NodoAux=lstAliados.ObtenerComienzoLista();
							
		while(NodoAux)
		{
			int Energia=(NodoAux->ObtenerDato()).ObtenerEnergia();
			if(Energia>FACTOR_VIDA_MAX*(EnergiaInicial))
				(NodoAux->ObtenerDato()).AsignarAccion(DEFENSA);
			else if(Energia<FACTOR_VIDA_MIN*(EnergiaInicial))
				(NodoAux->ObtenerDato()).AsignarAccion(ATAQUE);
			else
			{
				double FactorTurno=(double)(TurnoActual)/MaximoTurno;
						
				if((FactorTurno>=FACTOR_TURNO_DEFECTO)&&(FactorEnergia<1))
					(NodoAux->ObtenerDato()).AsignarAccion(ATAQUE);
				else if((FactorTurno>=FACTOR_TURNO_DEFECTO)&&(FactorEnergia>1))
					(NodoAux->ObtenerDato()).AsignarAccion(DEFENSA);
				else
				{
					if(FactorEnergia>FACTOR_ENERGIA_DEFECTO)
						(NodoAux->ObtenerDato()).AsignarAccion(DEFENSA);
					else if(FactorEnergia<(double)1/FACTOR_ENERGIA_DEFECTO)
						(NodoAux->ObtenerDato()).AsignarAccion(ATAQUE);
					else
					{
						srand(time(NULL));
						int AuxRandom=rand()%LIMITE_RANDOM;
							
						if(!AuxRandom)
							(NodoAux->ObtenerDato()).AsignarAccion(DEFENSA);
						else
							(NodoAux->ObtenerDato()).AsignarAccion(ATAQUE);
					}
				}	
			}
			NodoAux=NodoAux->ObtenerSiguiente();			
		}
		NodoAux=lstAliados.ObtenerComienzoLista();
				
}
int SumaEnergia(Lista<TipoLista> lst)
{
	int Suma=0;
	Nodo<TipoLista> *aux=lst.ObtenerComienzoLista();
			
	while(aux)
	{
		Suma+=(aux->ObtenerDato()).ObtenerEnergia();
		aux=aux->ObtenerSiguiente();
	}
			
	return Suma;
}	
void Estrategia<TipoLista>::BuscarCercanos(int InfGranadaX, int InfGranadaY, int PosX, int PosY, int InfX, int InfY, 	
						Lista<TipoLista> lst, Lista<TipoLista> & lstCercanos, 
						int Precision,bool Aliado)	
						
						/*BuscarCercanos(InfGranadaX,InfGranadaY,PosX,PosY,InfX,InfY,
								lstEnemigos,lstEnemigosCercanos,PRECISION_DEFENSA,false);	*/	
{
		/*[PosX,PosY] es la posicion de nuestro soldado, y se recibe la lista de soldados 
		  enemigos para devolver una lista donde quedan seleccionados nada mas los soldados
		  enemigos que pueden afectar a este soldado. */
		 
		 Nodo<TipoLista> *aux=lst.ObtenerComienzoLista();
		 	 
		 while(aux)
		 {
		 	TipoLista Dato= aux->ObtenerDato();
		 	if(EstaCerca(InfGranadaX,InfGranadaY,PosX,PosY,InfX,InfY,Dato,Aliado,Precision))
		 		lstCercanos.Insertar(Dato);
		 	
		 	aux=aux->ObtenerSiguiente();
		 }
}