C
Fermé
Utilisateur anonyme
-
31 juil. 2011 à 17:37
KX Messages postés 16754 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 2 août 2011 à 13:57
KX Messages postés 16754 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 2 août 2011 à 13:57
3 réponses
KX
Messages postés
16754
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
31 juil. 2011 à 17:42
31 juil. 2011 à 17:42
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...
Utilisateur anonyme
31 juil. 2011 à 18:00
31 juil. 2011 à 18:00
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.
KX
Messages postés
16754
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
31 juil. 2011 à 18:20
31 juil. 2011 à 18:20
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)
Utilisateur anonyme
2 août 2011 à 11:56
2 août 2011 à 11:56
D'accord mais pour regarder les cases voisines on forme comment la boucle, parce que je ne peux pas utiliser de if?
Merci.
Merci.
KX
Messages postés
16754
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
2 août 2011 à 13:57
2 août 2011 à 13:57
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 }