Jeu sur console [Résolu]

Signaler
Messages postés
3
Date d'inscription
jeudi 17 novembre 2011
Statut
Membre
Dernière intervention
29 novembre 2011
-
Messages postés
3
Date d'inscription
jeudi 17 novembre 2011
Statut
Membre
Dernière intervention
29 novembre 2011
-
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

Messages postés
15035
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
14 mai 2021
94
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...
Messages postés
3839
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
15 avril 2021
121
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
Messages postés
3
Date d'inscription
jeudi 17 novembre 2011
Statut
Membre
Dernière intervention
29 novembre 2011

[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 ?
Messages postés
3839
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
15 avril 2021
121
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
Messages postés
15035
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
14 mai 2021
94
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...
Messages postés
15035
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
14 mai 2021
94
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...
Messages postés
3
Date d'inscription
jeudi 17 novembre 2011
Statut
Membre
Dernière intervention
29 novembre 2011

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é