Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

UN JEU OU IL FAUT ALIGNER 4 COULEURS POUR CASSER DES BLOCKS - EXEMPLE ALGORITHME DE DIFFUSION


Information sur la source

Catégorie :Jeux Source .NET ( DotNet ) Classé sous : algorithme, diffusion, bloc, tetris, jeu Niveau : Initié Date de création : 21/10/2008 Date de mise à jour : 22/10/2008 13:07:25 Vu / téléchargé: 2 509 / 204

Note :
Aucune note

Commentaire sur cette source (6)
Ajouter un commentaire et/ou une note

Description

Cliquez pour voir la capture en taille normale
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

  • //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);
  • }
  • }
//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.
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

21 octobre 2008 23:42:02 :
Ajout de pas mal de commentaire
22 octobre 2008 13:04:52 :
Ajout d'effet d'explosion
22 octobre 2008 13:05:36 :
Ajout d'effet d'explosion
22 octobre 2008 13:06:16 :
Ajout effet d'explosion
22 octobre 2008 13:07:25 :
Ajout d'effet d'explosion et Changement de nom

Commentaires et avis

signaler à un administrateur
Commentaire de Mokost le 21/10/2008 23:51:38

j'ai oublié si vous décidez de le tester
Utiliser la touche "S" pour  commencer,
Gauche, Droite , Bas pour déplacer les blocks
W et X pour faire tourner les blocks

signaler à un administrateur
Commentaire de billou_13 le 22/10/2008 09:44:02

Bonjour,

Pour moi, impossible de charger ton projet. Dès que j'essai de rajouter le projet à la solution (Microsoft Visual Studio .Net 2005 pro), un message apparaît:
Unable to read the project file 'PuyoPuyo.csproj'
C:\Projets\Samples\PuyoPuyo\PuyoPuyo.csproj(82,11): The imported project "C:\Microsoft.Csharp.targets" was not found. Confirm that the path in the <Import> declaration is correct, and the file exists on disk.

Ca viendrait donc du projet 'Microsoft.Csharp.targets', quel est-il ?
Peux-tu l'inclure dans ta source ?

Merci,


Billou_13

signaler à un administrateur
Commentaire de Mokost le 22/10/2008 13:09:28

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

signaler à un administrateur
Commentaire de yoannd le 22/10/2008 15:49:57

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 !

signaler à un administrateur
Commentaire de billou_13 le 22/10/2008 15:53:50

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 ^^

signaler à un administrateur
Commentaire de glom le 23/10/2008 11:53:55

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... ^^

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Je comprends pas cette algorithme [ par kaiwoo ] private bool AUneVirgule (double nb){long tmp = (long)nb;if (tmp == nb)return false;elsereturn true;}Pour info, il a été fait par un super membre du f lancement d'une appli [ par rintchu ] salut a tous,voila, je voudrais mettre dans mon programme un jeu secret comme ceux que l'on trouve dans Word ou Excel. Comment dois je faire pour reli Algorithme de placement [ par oberown ] Je cherche des noms d'algorithmes ou des idées, pour résoudre ce genre de problème.On a trois jours, et chaque jours 2 personnes peut se présenter. On Changer l'image d'un label ... [ par Baelorn ] Bonjour,je suis actuellement en train de réaliser un jeu en C# mode graphique et je rencontre un problème au niveau du changement de l'image d'un labe jeu vache taureau language c [ par cafou ] est ce que quelqu'un pourrait me donner la solution du jeu vache taureau en language cmerci d'avanceCAFOU Jeu de cartes en reseau [ par PeterG ] J'ai créer un jeu de Black Jack (2 joueur et +) avec visual studio dans mon cours de programmation 1, et j'aimerai pouvoir y jouer contre un ami chacu Jeu en réseau local [ par CMatt ] Bonjour à tous!J'ai développé un petit jeu en C# qui possède une "base de données" plutôt complexe, par ex. : - une classe Systeme contient un tabl Algorithme Mot Caché [ par nuns ] Salut tout le monde,Je voudrais savoir si il y a quelqu ' un qui aurait un générateur de mot Caché, le jeux, avec les grille ou il faut chercher les m Remoting et "sécurité" [ par CMatt ] Bonjour tout le monde!J'ai commenc&#233; &#224; d&#233;velopper un jeu en temps r&#233;el&nbsp;et j'essaie d'impl&#233;menter un mode multijoueurs (pa algorithme génétique programmé en c# [ par johelle ] slt,je veux savoir si'il ya quelqu'un dans ce forum qui a un programme d'un algorithme g&#233;n&#233;tique en c#et merci.


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,406 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.