3 réponses
Cela dépend de ton type de données (comment est faite ta grille, commente tu représentes un bateau...) et ce que tu entends par "bien positionné" mais si tu sais qu'une case 'contient' un bateau, il te suffit de regarder les cases voisines...
Les bateaux sont représentés par des 1 et le reste du tableau par des 0.
Pour bien positionné c'est regarder si le bateau est droit dans le tableau, occupe bien le bon nombre de cases, si il n'y a pas d'autres bateau qui le touche,....
Merci.
Pour bien positionné c'est regarder si le bateau est droit dans le tableau, occupe bien le bon nombre de cases, si il n'y a pas d'autres bateau qui le touche,....
Merci.
Et bien comme je te disais, tu considère une case à 1 et tu regardes les voisins.
Si ils sont à 0 pas de problème, si ils sont à 1 tu t'assures que c'est bien soit en hauteur, soit en largeur.
Remarque : si tu fais un jeu de bataille navale, tu n'as normalement pas besoin de faire ce genre de vérification sur la grille, tu dois juste t'assurer au départ lorsque tu ajoutes tes bateaux qu'ils ne se chevauchent pas, mais du coup tu garantis déjà au départ la bonne configuration des bateaux.
Et il te faudra surement d'autre valeurs (touché=2, coulé=3, eau=4 par exemple)
Si ils sont à 0 pas de problème, si ils sont à 1 tu t'assures que c'est bien soit en hauteur, soit en largeur.
Remarque : si tu fais un jeu de bataille navale, tu n'as normalement pas besoin de faire ce genre de vérification sur la grille, tu dois juste t'assurer au départ lorsque tu ajoutes tes bateaux qu'ils ne se chevauchent pas, mais du coup tu garantis déjà au départ la bonne configuration des bateaux.
Et il te faudra surement d'autre valeurs (touché=2, coulé=3, eau=4 par exemple)
D'accord mais pour regarder les cases voisines on forme comment la boucle, parce que je ne peux pas utiliser de if?
Merci.
Merci.
Et pourquoi tu ne pourrais pas utiliser de if ? Faire un programme sans if c'est absurde...
D'ailleurs tu n'auras même pas besoin de boucles pour regarder les cases voisines d'une autre !
Voici un code qui regarde si une case est voisine d'un bateau (je l'ai fait sans if et sans boucle ^^)
D'ailleurs tu n'auras même pas besoin de boucles pour regarder les cases voisines d'une autre !
Voici un code qui regarde si une case est voisine d'un bateau (je l'ai fait sans if et sans boucle ^^)
#define DIMX 10
#define DIMY 10
// renvoie true ssi (x,y) est une coordonnée valide et grille[x][y] est un bateau
bool estVoisin(int grille[DIMX][DIMY],int x,int y)
{
return x>=0 && x<DIMX && y>=0 && y<DIMY && grille[x][y]==1;
}
// renvoie true ssi l'une des cases voisines valides est un bateau
bool aVoisin(int grille[DIMX][DIMY],int x,int y)
{
return estVoisin(grille,x-1,y-1) // NO
|| estVoisin(grille,x-1,y ) // O
|| estVoisin(grille,x-1,y+1) // SO
|| estVoisin(grille,x ,y-1) // N
|| estVoisin(grille,x ,y+1) // S
|| estVoisin(grille,x+1,y-1) // NE
|| estVoisin(grille,x+1,y ) // E
|| estVoisin(grille,x+1,y+1);// SE
}