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; }
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; }