cs_hdx75
Messages postés3Date d'inscriptionjeudi 17 novembre 2011StatutMembreDernière intervention29 novembre 2011
-
17 nov. 2011 à 19:01
cs_hdx75
Messages postés3Date d'inscriptionjeudi 17 novembre 2011StatutMembreDernière intervention29 novembre 2011
-
29 nov. 2011 à 23:11
Bonjour je suis en seconde et je débute en C
Je dois faire un jeu sur console sous forme de tableau 10x10 du genre jewels où il faut faire des groupes de même diamants pour les supprimer (sauf qu'ici c'est des chiffres de 1 à 5).
Quand le joueur appuie sur entrée le groupe de chiffres devient un groupe de 0. Pour l'instant j'ai réussi à tester si le chiffre est isolé (dans ce cas il se passe rien) et à tester les 4 chiffres adjacents à celui qui est sélectionné. Après pour les groupes plus gros j'y arrive pas
Voila ce que ça donne pour le test
if (grille[a][b] != 0)
{
char contenu = grille[a][b]
while (grille[a+1][b]==contenu || grille[a-1][b]==contenu || grille[a]
[b+1]==contenu || grille[a][b-1]==contenu) selection(a,b,contenu);
// Fait entrer les coordonnées et le chiffre dans la selection tant qu'à coté c'est la même chose
}
void selection(int x, int y, char val) // x et y coordonnées, val caractère sélectionné
{
if (grille[x][y] != '0')
{
grille[x][y] = '0'; // Case centrale
if (grille[x+1][y]==val) grille[x+1][y]='0'; // Gauche
if (grille[x-1][y]==val) grille[x-1][y]='0'; // Droite
if (grille[x][y+1]==val) grille[x][y+1]='0'; // Haut
if (grille[x][y-1]==val) grille[x][y-1]='0'; // Bas
}
}
Est-ce que vous auriez des pistes pour m'aider svp ?
BunoCS
Messages postés15368Date d'inscriptionlundi 11 juillet 2005StatutModérateurDernière intervention12 mai 2023102 18 nov. 2011 à 14:23
Hello,
Le problème est que tu ne vois pas "assez loin". Connais-tu le principe de généralisation, ou récursivité? Tu dis que tu trouves les 4 proches voisins d'un chiffre, ce qui est le "principe élémentaire", je dirais. Du coup, en généralisant, tu es capable de trouver les voisins de ces 4 premiers voisins, et ainsi de suite...
D'ailleurs, tu dis 4...mais il n'y a pas 8 voisins? A moins que tu ne te limites aux alignements horizontaux et verticaux.
Je dois faire un jeu sur console[...]
Laquelle? Nintendo DS?
@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
cptpingu
Messages postés3837Date d'inscriptiondimanche 12 décembre 2004StatutModérateurDernière intervention28 mars 2023124 18 nov. 2011 à 13:06
Bonjour.
C'est avec plaisir que nous aimerions t'apporter notre aide, mais malheureusement ta question est assez vague. Il est difficile de cerner quel est ton problème.
Peux-tu rééxpliquer ce qui te bloque précisement ? Ce que tu cherches à réaliser, et le résultat que tu as la place ?
________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfoliohttp://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
Non enfin vous savez ce qui s'affiche quand on tape cmd.exe
Tout d'abord c'est bien les 4 voisins qu'il faut prendre en compte en non pas 8 j'aurai dû le préciser. Quand j'exécute ça marche 'à moitié' je dirais pour les groupes simples de quelques chiffres ça marche mais quand le groupe est plus grand ou s'étend sur plusieurs lignes ou colonnes ils ne sont pas tous pris en compte. J'ai essayé de généraliser avec une boucle while mais comment dire qu'il faut recommencer à chaque fois que qu'à coté c'est la même chose mais pas quand c'est différent ?
Ça fait 1 mois et demi qu'on a commencé le C y a peu être d'autres fonctions que for, while ou do while que je devrais utiliser ?
cptpingu
Messages postés3837Date d'inscriptiondimanche 12 décembre 2004StatutModérateurDernière intervention28 mars 2023124 18 nov. 2011 à 16:33
Non, je pense que tu as les bons outils mais que tu as un bug classique. C'est-à-dire qu'une erreur s'est glissé dans ton code, et que tu ne la vois pas.
Pour pouvoir t'aider, il va falloir que tu postes ton code (s'il n'est pas trop long) afin que l'on puisse voir ce qui ne fonctionne pas.
Avant cela, as-tu tenté de passer un coup de débuggeur ?
As-tu tenté d'afficher les valeurs à chaque étape de ton calcul ?
________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfoliohttp://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
Vous n’avez pas trouvé la réponse que vous recherchez ?