IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C++ Discussion :

Puissance4: petite question rapide


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2012
    Messages : 11
    Par défaut Puissance4: petite question rapide
    Bonjour: voila j'ai créé le jeu puissance 4 avec forms.NET,
    mon Puissance 4 est en 7*7, avec Y=1 la ligne tout en haut, et y=7 la ligne du bas
    Voici ma boucle, qui se trouve dans la fonction clicCase (lorsque qu'on clic sur une case pour inserer un pion):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    if ( coordonnees.Y != 7 ) // si ce n'est pas la dernière ligne
                    {
                            if ( grille [ coordonnees.X, coordonnees.Y+1 ] == nullptr  ) // si il n'y a pas de pion à la ligne du dessous
                            {
                                    return; // ici //
     
                            }
                            else
                                    grille [ coordonnees.X, coordonnees.Y ] = joueurCourant; // si ce n'est pas la dernière ligne mais qu'il y a un pion en dessous = OK
     
     
                    }
                    else // si on est sur la dernière ligne
                         //attribue la case au joueur courant
                            grille [ coordonnees.X, coordonnees.Y ] = joueurCourant;
    Voila, pour l'instant, on met un pion, et s'il n'y a pas de pion en dessous, il y à "return" et ça quitte la fonction
    Je voudrai que: si il n'y a pas de pion en dessous, que le programme fasse "descendre" le pion jusqu'en bas

    par exemple: il y a un pion en Y=7 et un en Y=6. Et que l'utilisateur clique sur la ligne Y=2, que le programme fasse "descendre" ce pion en Y=5

    Voila, j'espère que je me fais comprendre :s

  2. #2
    Invité
    Invité(e)
    Par défaut
    salut,

    t'es très clair, il te suffit d'avoir une fonction qui de dit donne la case sur laquelle tu peux aller.
    Par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    allowed=1;//au lache le jeton sur la premiere ligne.
    for(y=allowed; y<=7; ++y){
     si grille[y]==joueurCourant ou grille[y]==lautreJoueur
       allowed=y-1;//on est descendu un pion trop bas
     break:
    }
    bien sur, faudrait pas que t'aies déjà un pion dans la ligne 1...

  3. #3
    Membre Expert
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Par défaut
    Salut,

    j'ai l'impression que tu t'embêtes pour rien. Il te suffit d'avoir un tableau de taille égale au nombre de colonnes du jeu pour t'en sortir facilement. Ce tableau doit contenir le nombre de jetons présent dans chaque colonne. Appelons le TAB. Alors TAB(1) contient le nombre de jetons dans la colonne 1, TAB(2) le nombre de jetons dans la colonne 2, etc.

    Au début du jeu, TAB ne contient que des zéros puisqu'aucun jeton n'a encore été mis dans aucune colonne. Ensuite, à chaque fois qu'un jeton doit être ajouté, on suit les étapes :
    1. on récupère le numéro j de la colonne dans laquelle le jeton doit être inséré;
    2. si TAB(j)=7, la colonne est pleine et on ne peut pas mettre le jeton;
    3. sinon, on fait descendre le jeton en Y=TAB(j)+1 et on incrémente TAB(j) de un.

    Je pense qu'en procédant ainsi tu vas te simplifier la vie.

    EDIT : il faut adapter un peu car j'ai naturellement numéroté les lignes du bas vers le haut alors que tu sembles avoir fait le contraire. Il faut donc soustraire au nombre de lignes la formule. Pour 7 lignes, on obtient Y=7-TAB(j) si je ne me trompe pas.

  4. #4
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    @Aleph69: J'ai l'impression que ton système ne marche que si on joue au Puissance 4 à un seul joueur.

    Les pions ne peuvent pas être simplement "comptés" car leur appartenance compte.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Membre Expert
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Par défaut
    Cette information est déjà contenue dans le tableau grille dans le code initial.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Pourquoi pas une fonction récursive, du type :

    fonction mettrePion(int x, int y)
    Si Case en dessous non pleine et Case en dessous existante
    mettrePion(x, y--)
    Sinon
    Grille[x][y] = joueurActuel
    Fin si

    et tu appelle cette fonction avec les x, y de ton formulaire

    En espérant t'avoir aidé

Discussions similaires

  1. petite question rapide sur boucle for
    Par KateA dans le forum C
    Réponses: 15
    Dernier message: 08/03/2010, 23h59
  2. Réponses: 15
    Dernier message: 03/08/2009, 23h08
  3. Petite question rapide sur allocation mémoire
    Par adn013 dans le forum Langage
    Réponses: 5
    Dernier message: 11/06/2007, 16h10
  4. [Visuel XP] Petite question sur le theme XP...
    Par ZoumZoumMan dans le forum C++Builder
    Réponses: 12
    Dernier message: 20/01/2005, 14h41
  5. Petite question sur les performances de Postgres ...
    Par cb44 dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 13/01/2004, 13h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo