Jeu sur console

Résolu
cs_hdx75 Messages postés 3 Date d'inscription jeudi 17 novembre 2011 Statut Membre Dernière intervention 29 novembre 2011 - 17 nov. 2011 à 19:01
cs_hdx75 Messages postés 3 Date d'inscription jeudi 17 novembre 2011 Statut Membre Dernière intervention 29 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 ?

7 réponses

BunoCS Messages postés 15479 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 juin 2024 103
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és 3839 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 29 juin 2024 124
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/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
cs_hdx75 Messages postés 3 Date d'inscription jeudi 17 novembre 2011 Statut Membre Dernière intervention 29 novembre 2011
18 nov. 2011 à 16:30
[quote]Je dois faire un jeu sur console[...]



Laquelle? Nintendo DS? /quote

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és 3839 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 29 juin 2024 124
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/portfolio http://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 ?

Posez votre question
BunoCS Messages postés 15479 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 juin 2024 103
18 nov. 2011 à 16:51
Non enfin vous savez ce qui s'affiche quand on tape cmd.exe

Euh..ok..
Je vais aller me coucher, hein?

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
BunoCS Messages postés 15479 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 juin 2024 103
18 nov. 2011 à 16:56
A ma décharge, on dit plutôt "en mode console" et non "sur console"


@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
cs_hdx75 Messages postés 3 Date d'inscription jeudi 17 novembre 2011 Statut Membre Dernière intervention 29 novembre 2011
29 nov. 2011 à 23:11
C'est bon j'ai réussi !! en effet il fallait utiliser la récursivité

on dit plutôt "en mode console" et non "sur console"


C'est noté
Rejoignez-nous