Un jeu ou il faut aligner 4 couleurs pour casser des blocks - exemple algorithme de diffusion

Soyez le premier à donner votre avis sur cette source.

Vue 9 345 fois - Téléchargée 743 fois

Description

Bonjour à tous,

Vous devez surement connaitre le jeu puyo puyo ou le principe est de mettre au moins 4 blocks de même couleur ensemble, étant fan de ce jeu(j'y joue casiment tout les jours), je me suis mis au défit de le refaire. J'ai fais ce programme en 2 jours sans trop m'attarder dessus, donc il doit surement exister encore des bugs. Ce programme utilise l'algorithme de diffusion pour calculer le nombre de block de même couleur qui se touchent.

Source / Exemple :


//voila la principale fonction qui détermine les collisions entre couleur.

        float FallingSpeed = 0.05f;//Vitesse de chute des blocks
        bool canfall = false;//gachette qui indique si on peut faire tomber les block
        bool fallfinished = true;//gachette qui indique si le block a finit de tomber
        int MaxColor = 5;//nombre de couleur maximale avec lesquelles jouer peut aller jusqu'à 10
        int ContactNeeded = 4;//nombre de contacte a établir avant de faire disparaître les blocks

        private void MakeLink(int x, int y, ref List<Point> PointList)
        {
            Block mBlock = Plateau[x, y];
            if (mBlock.Color == BlockColor.Aucun || mBlock.Checked) return;
            PointList.Add(new Point(x, y));
            Plateau[x, y].Checked = true;
            if (x + 1 < Bx)
                if (Plateau[x + 1, y].Color == mBlock.Color)
                {
                    Plateau[x, y].Liens |= BlockLink.Droite;
                    MakeLink(x + 1, y, ref PointList);
                }
            if (y + 1 < By)
                if (Plateau[x, y + 1].Color == mBlock.Color)
                {
                    Plateau[x, y].Liens |= BlockLink.Bas;
                    MakeLink(x, y + 1, ref PointList);
                }
            if (x - 1 >= 0)
                if (Plateau[x - 1, y].Color == mBlock.Color)
                {
                    Plateau[x, y].Liens |= BlockLink.Gauche;
                    MakeLink(x - 1, y, ref PointList);
                }
            if (y - 1 >= 0)
                if (Plateau[x, y - 1].Color == mBlock.Color)
                {
                    Plateau[x, y].Liens |= BlockLink.Haut;
                    MakeLink(x, y - 1, ref PointList);
                }
        }

Conclusion :


Ne supprimez pas le fichier Block.png dans le dossier debug, ce sont les sprites du jeu.
Ce jeu est tout en Gdi donc l'accuracité n'est pas la meilleur, mais c'est un choix que j'ai fait parceque tout le monde peut l'utiliser. Je le poste pour permettre a ceux qui ont eu envie de le programme de voir comment je m'y suis pris et pour voir tout les commentaires/conseils et avis que vous pourrez me donner. N'hésitez pas j'attends vos commentaire.

Merci.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
41
Date d'inscription
samedi 13 août 2011
Statut
Membre
Dernière intervention
21 mai 2012

Bonjour à tous! J'aimerais bien savoir comment lançer le jeu! Merci :-)
Messages postés
7
Date d'inscription
vendredi 23 mai 2003
Statut
Membre
Dernière intervention
23 octobre 2008

Ouais, vive puyo puyo !
Qu'est-ce qu'on aurait fait sans ce jeu pendant nos cours d'info ? On serait devenu de bons développeurs peut-être... ^^
Messages postés
860
Date d'inscription
jeudi 4 mars 2004
Statut
Membre
Dernière intervention
19 août 2014
17
Juste une petite question ^^
Pour ton fichier "Block.png", pourquoi ne l'as tu pas mis à la racine de ton projet avec comme la propriété "Copy To Output Directory" en "Copy Always" ou "Copy if newer" ?
Ca aurait été plus simple que de devoir le mettre dans le répertoire Debug qui sera effacé en cas de Clean ou Rebuild.


Billou_13

PS: je regarderai ton code dès que j'aurai résolu mon bug ^^
Messages postés
305
Date d'inscription
lundi 7 janvier 2002
Statut
Membre
Dernière intervention
10 août 2011
4
Faudra que je regarde ton jeu ! Je suis moi aussi un grand grand fan de puyo puyo !
Avec des potes, on a même fait un puyo puyo en 3D (DirectX) pour notre projet de fin d'année !
Enfin je regarderais, mais dès lors, un grand bravo pour l'idée : à ce que je vois, certains on quand même bons goûts en matière de jeux vidéo ;-)
Petite question : as-tu implémenté le système des blocs de glace ? Un mode réseau ? Un mode 2 joueurs ?
Nous, on aurait eu plus de temps, on aurait bien implémenté des options pour rendre le jeu encore un peu plus zinzin... bref, tu fais un max de lignes, tu as la possibilité de retourner le plateau de jeu de ton adversaire, ce genre de trucs... mais bon, en 4 semaines à 4, pas évident de faire ce genre de truc : le jeu était développé en C++ avec directX, de la musique, des menus, la possibilité de jouer au pad, bref, on avait fait pas mal de boulot quand même ;-)

Bonne continuation à toi !
Messages postés
48
Date d'inscription
jeudi 18 décembre 2003
Statut
Membre
Dernière intervention
29 mars 2010

Je pense que le problème vient du fait que je l'ai dévelloper sous C# 2008 express(je ne suis plus étudiant).
Afficher les 7 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.