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
15256
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
17 mai 2022
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...
3
cptpingu
Messages postés
3834
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
20 octobre 2021
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
0
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 ?
0
cptpingu
Messages postés
3834
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
20 octobre 2021
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
BunoCS
Messages postés
15256
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
17 mai 2022
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...
0
BunoCS
Messages postés
15256
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
17 mai 2022
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...
0
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é
0