LastSolution
Messages postés9Date d'inscriptionlundi 20 avril 2015StatutMembreDernière intervention 7 mai 2015
-
4 mai 2015 à 10:20
LastSolution
Messages postés9Date d'inscriptionlundi 20 avril 2015StatutMembreDernière intervention 7 mai 2015
-
4 mai 2015 à 16:12
Bonjour,
Je fais actuellement un petit jeu en console pour me former à JAVA.
Je fais choisir un personnage (Mage ou Guerrier) à un joueur et je le fais entrer dans un donjon. Ce Donjon est constitué de Salles (géré par une ArrayList dans la classe Donjon) et cette Salle est constituée de Monstres (géré par une ArrayList dans la classe Salle).
Le problème quand j'appelle une méthode, je mets la liste des donjons en paramètres et je gère le reste en faisant :
// Pour parcourir les monstres de la salle en cours du donjon en cours
for(int f = 0; f < listeDesDonjons.get(indiceDonjon).getListeDesSalles().get(indiceSalleDonjon).getListeDesMonstres().size(); f++)
{
//[...]
}
par exemple.
Ça me semble être une machine à gaz donc je vous demande si il y a une façon plus claire de le faire ?
Twinuts
Messages postés5375Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention14 juin 2023111 4 mai 2015 à 10:55
Salut,
Normalement lorsque tu es dans ta salle tu te moques royalement de savoir dans quel donjon tu es, comme ça tu peux assez simplement rendre les combats génériques (niveau code)
Perso, je verrais plus un truc dans cet esprit:
- Utilisateur entre dans le Donjon X
List<Dungeon> dungeons = area.getDungeons(); // area étant ta zone sur la carte / le monde
Dungeon dungeon = dungeons.get(currentDungeon);
- Récupération des sales du donjon
List<Room> rooms = dungeon.getRooms();
- Ensuite l'utilisateur rentre dans une sale du donjon:
Room room = rooms.get(currentRoom);
- Pour enfin avoir la liste des monstres:
List<Monster> monsters = room.getMonsters();
etc....
LastSolution
Messages postés9Date d'inscriptionlundi 20 avril 2015StatutMembreDernière intervention 7 mai 2015 4 mai 2015 à 11:02
Les "getDungeons()" et "getRooms()" que tu utilises ce sont des méthodes que tu crées c'est bien ça ? Même question pour les "currentDungeons", que sont t'ils ?
Je me débat encore dans ma formation désolé ^^.
Twinuts
Messages postés5375Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention14 juin 2023111
>
LastSolution
Messages postés9Date d'inscriptionlundi 20 avril 2015StatutMembreDernière intervention 7 mai 2015 4 mai 2015 à 11:40
Pardon oui effectivement,
Dans l'idée tu as un monde (world) qui contient des informations notamment des donjons (dungeons) chaque donjons contiennent des salles (rooms) et chaque salles contiennent des monstres (monsters).
Pour les currentDungeons il s'agit d'indices que tu incrémentes en fonctions du mouvement, exemple:
Position du joueur == dungeonX, currentDungeons = le donjon associé. des que le joueur entre dans un donjon il arrive dans la currentRooms = 0 ensuite tu incrémentes en fonction du déplacement.
Ici j'utilise des indices de tableau mais tu pourrais très bien utiliser des hashtable des enum en guise de clés.
Du coup au moment du combat tu n'as pas besoin de te soucier de l'emplacement du joueur et tu peux gérer avec seulement 2 paramètres:
public enum FightResult {
WIN,
LOOSE,
NO_SCORE,
}
.....
FightResult fight(Player player, Monster monster) {
FightResult result;
// test level
// test si le monstre est un boss
// etc....
return result;
}
LastSolution
Messages postés9Date d'inscriptionlundi 20 avril 2015StatutMembreDernière intervention 7 mai 2015
>
Twinuts
Messages postés5375Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention14 juin 2023 4 mai 2015 à 16:12
Merci pour ta réponse je vais essayer de la décortiquer pour l'utiliser :)
4 mai 2015 à 11:02
Je me débat encore dans ma formation désolé ^^.
4 mai 2015 à 11:40
Dans l'idée tu as un monde (world) qui contient des informations notamment des donjons (dungeons) chaque donjons contiennent des salles (rooms) et chaque salles contiennent des monstres (monsters).
Pour les currentDungeons il s'agit d'indices que tu incrémentes en fonctions du mouvement, exemple:
Position du joueur == dungeonX, currentDungeons = le donjon associé. des que le joueur entre dans un donjon il arrive dans la currentRooms = 0 ensuite tu incrémentes en fonction du déplacement.
Ici j'utilise des indices de tableau mais tu pourrais très bien utiliser des hashtable des enum en guise de clés.
Du coup au moment du combat tu n'as pas besoin de te soucier de l'emplacement du joueur et tu peux gérer avec seulement 2 paramètres:
4 mai 2015 à 16:12