Bonsoir à tous,
Nous souhaitons développer un jeu se déroulant dans plusieurs labyrinthes, seulement pour éviter de créer 65 murs on voudrait associer chaque couleur du labyrinthe à une zone clé.
C'est-à-dire:
Noir = Mur
Jaune = Spawn
Vert = Objectif
Nous voulons savoir si une méthode pour effectuer cela existe et si possible un peu d'aide pour l'appliquer.
Merci beaucoup! ![]()
Et vous utilisez quelle librairie du coup ?
java.awt.Color
java.awt.Font
java.awt.Graphics
java.awt.Image
java.awt.Toolkit
Je sais pas si ça peut aider..
Je pense que tu veux plutôt affecter une couleur à un objet.
Tu met un attribut color sur tes objets et au moment de faire le rendu graphique bah tu inspecte le champ color de ton objet pour récupérer la couleur associé à celui-ci. ![]()
J'espère que c'est relativement simple à faire, nous sommes débutants
.
J'ai pas vraiment compris ce que vous vouliez faire avec les couleurs
Pourquoi tu parle de couleur de labyrinthe et d'éviter de créer 65 murs ?
Non c'est juste comment inspecter la couleur que nous cherchons à faire.
Une fois qu'il a détecté toutes les couleurs on veut par exemple que si il tombe sur un pixel noir, il l'attribut à un objet que l'on nommera "mur" et qui empêchera le joueur d'avancer. ![]()

On voit que dalle sur cette image mais c'est pour donner une idée, on aura max 5 couleurs dans notre jeu.
Donc, si je saisi : vous dessinez le labyrinthe, ensuite vous laissez le joueur faire.
Pour savoir s'il peut avancer ou non, vous regardez la couleur de la case et celle-ci vous donne son type.
C'est ça ?
Si oui, pourquoi ne pas créer un objet "Case" dont hérite "Mur", "Start" et "Goal" ?
Ces objets sauront eux-même se dessiner, connaîtront leurs coordonnées et pourront ensuite gentiment dire s'ils sont praticables ou non.
De mon point de vue, vous raisonnez à l'inverse. Il ne faut pas partir du graphique pour déduire les informations, mais partir des informations directement.
Oui c'est ça, désolé mais c'est notre premier projet, c'était peut-être évident comme méthode.
Et quelles instructions peut-on donner pour qu'il puisse reconnaître la couleur?
Il faut que chaque objet case ait une methode pour récupérer sa couleur (on appelle ça un "getter")
Par exemple chaque case aura une méthode getColor() qui retournera la valeur de l'attribut 'color'.
Bref à mon avis t'es pas encore assez équipé pour partir sur un projet perso, fais d'abord des exercices.
Le truc qu'a essayé de t'expliquer Bunyan c'est que c'est plus simple que le logiciel reconnaisse l'objet pas la couleur , la couleur n'est que le rendu graphique . Comment t'expliquer , si tu as une class Mur , dans les attributs il y aura la couleur donc le logi va la dessiner mais c'est tout , le logiciel a pas s'appuyer sur la couleur après dans ta class il y aura aussi les coordonnés du mur par exemple et c'est sur ça que le logiciel va s'appuyer en gros c'est : si le perso est au coordonnés du mur alors le personnage ne peut plus avancer.
J'espère avoir été clair je peux ré-expliquer si besoin.
Oui, je n'ai peut-être pas très bien compris, mais on a réussit à créer un mur capable de gérer les collisions avec le personnage que l'on a également créé. Seulement pour chaque mur ça demandait une ligne de code et du temps pour la placer avec précision.et on a supposé qu'il existerait une méthode permettant de reconnaitre les éléments du décor en fonction de sa couleur.
Après ça n'est qu'un projet d'ISN (spécialité de terminale) qui est trop ambitieux par rapport à nos connaissances. Malgré tout je vais essayer de poursuivre avec vos pistes.
Merci pour vos conseils ![]()
Si tu veux il y a une api qui gère les collisions mais il faut la telelecharger , ça s'appelle Box2D après si tu veux je peux vous aider
Je t'ai mp l'auteur
C'est pas de refus
!
Par contre pour ce projet on est censé utiliser uniquement les librairies java donc.. :S
Vous appréhendez le logiciel comme s'il avait une pensée humaine. Ce n'est pas le cas ![]()
Il est bête et méchant et ne fait que ce que vous lui demandez, rien de plus et rien de moins.
Sans connaître le code ou l'architecture, il est difficile de réellement conseiller, mais là, j'ai l'impression que :
- vous créez manuellement chacune des cases
- vous les placez manuellement en valeur absolu
- vous les dessinez
Une fois le dessin fait, vous "passez" sur le plateau de jeu pour savoir si, selon la couleur, la case est un mur, le départ ou l'arrivée.
Dans ma tête, il devrait y avoir un plateau constitué de X cases. Chacune de ces cases connaît son type et son emplacement et sait comment se dessiner.
Sur ce plateau existe une entité spéciale, qui est le "joueur". Lorsque celui-ci veut se déplacer, il demande au plateau "sur quelle case arriverai-je si je vais par là ?", le plateau constate la position du joueur puis regarde dans cette direction. Il interroge la case cible pour savoir si elle est praticable. Si elle l'est, le plateau déplace le joueur dessus. Ensuite, le joueur demande au plateau de vérifier si la case est une arrivée.
Pour l'affichage, à chaque déplacement (et au début), il est demandé au plateau de se redessiner. Celui-ci parcours donc chacune des cases et leur demande gentiment "peux-tu te dessiner s'il te plaît ?" pour que celle-ci s'exécute.
Pour l'initialisation, le plateau pose l'entité "joueur" sur la case spéciale "départ".
L'ordinateur ne connaît que des données. Celles-ci n'ont pour représentation graphique que ce que nous définissons en tant que développeur.
De mon point de vue, votre projet est ambitieux si vous partez sur une génération automatique de labyrinthe (parfait ou imparfait) avec système de jeu et prise en compte de dimensions multiples, voire un système de création de labyrinthe via fichiers.
T'es matinale Bunyan
!
En tout cas, merci pour ton aide, c'est ce que nous aurions dût faire plus tôt.
Je vois parfaitement ce que tu veux dire par le plateau à X cases.
Va falloir reprendre le projet à 0..
Après la génération automatique de labyrinthe ça nous semble assez compliqué mais on va se pencher là-dessus.
![]()
Zadrek je suis entrain de coder un labyrinthe de mon côté pour pouvoir mieux vous aider ^.^
Allez-y par palier ![]()
Je pense, par exemple, à ce genre de plan :
- Premier pas : faire un labyrinthe avec une architecture logicielle cohérente
- Deuxième pas : réaliser la mécanique du joueur (début et déplacements)
- Troisième pas : réaliser la mécanique du jeu (succès sur case "fin")
- Quatrième pas : génération automatique de labyrinthe parfait à taille fixe
- Cinquième pas : faire en sorte que la case de "fin" ne soit pas "à côté" de la case de départ
- Sixième pas : génération automatique de labyrinthe imparfait à taille fixe
- Septième pas : réaliser des labyrinthes de tailles aléatoires
- Huitième pas : demander à l'utilisateur la taille du labyrinthe et génération selon ses desiderata
Allez-y de manière incrémentale, petit à petit. Pensez à ce que vous ferez après, mais surtout, ne tentez pas de tout faire en un coup, c'est le meilleur moyen d'être frustré et démotivé et de n'avoir aucune réalisation à la fin.
Allez-y par petit pas, en ne cherchant pas à rajouter des briques trop grosses à chaque fois ![]()
Si vous arrivez déjà à réaliser les 3 premiers paliers de mon exemple de plan, ce sera déjà pas mal, je pense.
Bien entendu, vous n'êtes absolument pas obligé de le suivre, ce n'est qu'un exemple :p