예제 #1
0
int main (){
	int i;
	PP_Pos pos;
	
	Groupe mesPions;
	Groupe pionsEnnemis;
	
	/* Initialisation de la bibliothèque Prog&Play */
	PP_Initialisation();
	
	while (!PP_PartieTerminee()){
		/* Obtenir les pions du jeu */
		PP_ObtenirPions(mesPions.membres, &mesPions.nbMembres,
		                pionsEnnemis.membres, &pionsEnnemis.nbMembres);
		printf("%d\n", pionsEnnemis.nbMembres);
		if (pionsEnnemis.nbMembres > 0){
			/* Ordonner aux pions qui n'attaquent pas d'attaquer le premier pion
			   ennemi */
			for (i = 0 ; i < mesPions.nbMembres ; i++)
				if (!PP_EnAttaque(mesPions.membres[i], NULL))
					PP_Attaquer(mesPions.membres[i], pionsEnnemis.membres[0]);
		}
		else{
			/* Ordonner à chaque pion en attente de commande de se déplacer vers une
			   position aléatoire sur la carte */
			for (i = 0 ; i < mesPions.nbMembres ; i++)
				if (PP_EnAttente(mesPions.membres[i])){
					pos.x = PP_NombreAleatoire(CARTE_L);
					pos.y = PP_NombreAleatoire(CARTE_H);
					PP_Deplacer(mesPions.membres[i], pos);
				}
		}
	}
	/* Fermer la bibliothèque Prog&Play */
	PP_Fin();
	return 0;
}
예제 #2
0
int main (){
	int i, j;
	PP_Pos pos;
	PP_Pion old, select;
	bool attaquer;
	float distance, dx, dy;
	
	Groupe mesPions;
	Groupe pionsEnnemis;
	
	/* Initialisation de la bibliothèque Prog&Play */
	PP_Initialisation();
	
	while (!PP_PartieTerminee()){
		/* Obtenir les pions du jeu */
		PP_ObtenirPions(mesPions.membres, &mesPions.nbMembres,
		                pionsEnnemis.membres, &pionsEnnemis.nbMembres);
		
		if (pionsEnnemis.nbMembres > 0){
			/* Ordonner à chaque pion d'attaque le pion ennemi le plus proche de lui
			   */
			for (i = 0 ; i < mesPions.nbMembres ; i++){
				/* Récupérer la position de mon ième pion */
				pos = PP_Position(mesPions.membres[i]);
				/* Calcul de la distance au premier octet */
				dx = pos.x - PP_Position(pionsEnnemis.membres[0]).x;
				dy = pos.y - PP_Position(pionsEnnemis.membres[0]).y;
				distance = dx*dx+dy*dy;
				/* Sélectionner le premier pion ennemi */
				select = pionsEnnemis.membres[0];
				/* Rechercher s'il y en a un de plus proche */
				for (j = 1 ; j < pionsEnnemis.nbMembres ; j++){
					dx = pos.x - PP_Position(pionsEnnemis.membres[j]).x;
					dy = pos.y - PP_Position(pionsEnnemis.membres[j]).y;
					if (dx*dx+dy*dy < distance){
						distance = dx*dx+dy*dy;
						select = pionsEnnemis.membres[j];
					}
				}
				/* Déterminer si l'attaque est necessaire (c'est inutile d'ordonner à un
				   pion d'attaquer un pion ennemi s'il l'attaque déjà) */
				attaquer = true;
				if (PP_EnAttaque(mesPions.membres[i], &old))
					if (old == select)
						attaquer = false;
				/* Ordonner l'attaque à proprement dit si besoin */
				if (attaquer)
					PP_Attaquer(mesPions.membres[i], select);
			}
		}
		else{
			/* Faire une recherche aléatoire des pions adverses */
			for (i = 0 ; i < mesPions.nbMembres ; i++)
				if (PP_EnAttente(mesPions.membres[i])){
					pos.x = PP_NombreAleatoire(CARTE_L);
					pos.y = PP_NombreAleatoire(CARTE_H);
					PP_Deplacer(mesPions.membres[i], pos);
				}
		}
	}
	/* Fermer le jeu */
	PP_Fin();
	return 0;
}