Forums Développement Multimédia

Aller au contenu

- - - - -

[exercice] Le Bejeweled

TUTO

3 réponses à ce sujet

#1 Monsieur Spi

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 7017 messages

Posté 31 July 2013 - 13:18 PM

Bonjour,

Voici un petit exercice pratique pour créer un jeu de type Bejeweled.

Je vous laisses jeter un œil ici : http://forums.mediab...ice_-_bejeweled

Puis on en cause si vous le souhaitez ;-)

#2 lilive

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 2993 messages

Posté 31 July 2013 - 17:41 PM

Je proteste !!!
Je viens de passer je ne sais combien de temps à laborieusement chercher le prochain mouvement, en te faisant confiance et en me disant que puisque le jeu continait c'est forcément qu'il y avait une solution. Mais non ! J'ai pas trouvé. Alors je suis allé voir ta fonction qui cherche si une solution est possible. Et soit quelque chose m'échappe complètement (dans ce cas tu auras droit à mes plus plates excuses) soit c'est n'importe quoi cette fonction qui se contente de vérifier que 2 pièces de même type sont à proximité sans s'occuper d'une éventuelle troisième. Remboursez !!!!!!!!

#3 Monsieur Spi

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 7017 messages

Posté 31 July 2013 - 18:11 PM

Ha oui, tu as parfaitement raison, j'ai pris un peu trop de raccourcis sur ce coup désolé.

Je viens d'essayer de refaire le chemin qui m'a amené là et j'en suis là :

// cherche une solution
function solutions() {
        for (C=0; C<8; C++){
                for (L=0; L<8; L++){
                        if (trouveCombis(C, L, [1,0], [[-2,0],[-1,-1],[-1,1],[2,-1],[2,1],[3,0]])) return true;// horizontal deux + un
                        if (trouveCombis(C, L, [2,0], [[1,-1],[1,1]])) return true;// horizontal milieu
                        if (trouveCombis(C, L, [0,1], [[0,-2],[-1,-1],[1,-1],[-1,2],[1,2],[0,3]])) return true;// vertical deux + un
                        if (trouveCombis(C, L, [0,2], [[-1,1],[1,1]])) return true;// vertical milieu
                }
        }
        return false;// pas de solution
}
               
function trouveCombis(C:int,L:int, obligatoire:Array, complement:Array) {
       
        var type:int = stock[C][L].type;
                       
        // y a t'il la pièce obligatoire pour créer une combi
        if (!compareType(C+obligatoire[0], L+obligatoire[1], type)) return false;
                       
        // et au moins une pièce pour faire le complément
        for(i=0;i<complement.length;i++) {
                if (compareType(C+complement[i][0], L+complement[i][1], type)) return true;
        }
        return false;
}

J'ai bien l'impression que je n'ai laissé que la détection de la pièce obligatoire et zappé la pièce complémentaire et réduit tout le code à une simple fonction ....... du coup totalement inutile.

Je vérifie que ma nouvelle version marche et je corrige, merci et désolé du bug.




[EDIT] Ok je viens de tester et ça marche, par contre je n'ai rien rajouté pour signaler que la partie est perdue et relancer un jeu, en gros si il n'y a plus de combi possible le plateau se vide et on reste sur un cadre noir. Ca se rajoute en deux secondes pour ceux qui veulent faire une vraie partie (quitte à faire ça autant rajouter les scores multiples, les bonus, etc.... bref finir le jeu quoi). Je corrige l'exercice de suite, et merci de l'avoir vu.

#4 lilive

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 2993 messages

Posté 31 July 2013 - 20:15 PM

Aaaaah, je respire ! :mrgreen:



1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)