RECHERCHER :
COMMUNAUTE MP
Identifiez vous ...
Devenir Membre
J'ai oublié mon MDP
DOMAINE MP
Bavardages
Langages Généraux
Langages Web
Langages DotNet
Autres langages
Dev. Jeux Video
Sécurité
Sys. Exploitation
Graphismes
Logiciels
Réseaux
Bases de données
Méthodologies
Emplois High-tech
Aide juridique
Articles juridiques
FORUM
Index des forums
Ajouter un sujet
Rechercher sujet
Contact Responsable
Devenir modérateur
CHAT MP IRC
Votre pseudo ...
Srv: irc.moteurprog.com
Chan: #MoteurProg
PARTICIPER
Plus de 3500 emplois.
Rechercher un job
Déposez votre CV
Emplois High-tech

Visiteur MP

 Donjons POO

Forum : POO
Sous Catégorie : Aucune
Type du sujet : Sujet Normale
FAQ : FAQ POO

SUIVI DES SUJETS PAR MAIL

SUIVI PAR MAIL INACTIF

RESOLUTION DU SUJET SUJET RESOLU
BLOQUAGE DU SUJET SUJET ACTIF
APPARTENANCE A LA FAQ N'APPARTIENT PAS A LA FAQ


PAGES : [1] [2] [3] [4]

POSTER UN NOUVEAU SUJET REPONDRE A CE SUJET

FORUM POO

PREMIERE PAGE

PAGE PRECEDENTE

Page précedente

Page suivante

PAGE SUIVANTE

DERNIERE PAGE
doustij
Nouveau membre
Inscrit : 20/03/2006
Messages : 18
Message
#91500
Posté le 20/03/06 à 15:22
Déplacements du joueur :

Bonjour, je suis actuellement en plein donjon et je ne sais pas où mettre les déplacements du joueur.
Le joueur se déplace dans un donjon consitué de pièces. J'utilise les classes suivantes :
- la classe Joueur
- la classe Donjon
- la classe Pièce

La classe Donjon contient un tableau de pièces, chaque pièce étant repérée par ses coordonnées (i,j).

Comment gérer les déplacements du joueur ?

Remarque :
POO-Mystère :
La classe Pièce possède la méthode :
function getMur (direction:string):boolean
qui renvoie un booléen indiquant s'il y a un mur dans la direction donnée. Est-ce vraiment POO ?

Ah au fait, cela serait POO de faire une classe Deplacement ? je suis un peu dubitatif ... parce que je n'ai pour l'instant qu'un joueur qui se déplace dans le donjon...

Humph, tant qu'on y est, mon joueur est repéré dans le donjon par ses coordonnées... Or les coordonnées du joueur (a,b) qui les possède ? Si c'est le joueur, cela ne paraît pas très valable car sans donjon, point de coordonnées valides ? Si c'est le donjon, bien... le joueur c'est pas une pièce...

Je sens que cela m'échappe un peu.
Merci pour votre aide, jacques

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

Publicité
Inscrit : X
Messages : X
Message
#Aucun

HAUT DE PAGE

  

Alp
Superviseur :
- Système d'ex.
- Méthodologie.
- C & C++
Modérateur :
- Bavardages
Chef de projet(s) :
- My SDL Lib

Avatar de Alp
Inscrit : 24/06/2004
Messages : 2571
Message
#91521
Posté le 20/03/06 à 18:36
Bonjour,
[quote]Comment gérer les déplacements du joueur ?
[/quote]
puis :
[quote]Ah au fait, cela serait POO de faire une classe Deplacement ? je suis un peu dubitatif ... parce que je n'ai pour l'instant qu'un joueur qui se déplace dans le donjon...

[/quote]

Alors je trouve que faire une class Deplacement serait une bonne idée ... afin de pouvoir arriver à quelque chose du genre :
[code]joueur1.move(Deplacement(x_depart,y_depart,x_arrivee_y_arrivee));[/code]
ou bien :
[code]joueur1.move(Deplacement(deplacement_sur_x,deplacement_sur_y));[/code]
Enfin avec ça la gestion des déplacements est facilitée et bien encapsulée, je trouve. Donc, on peut penser que c'est POO que de créér une class Déplacement ^^
[quote]function getMur (direction:string):boolean
qui renvoie un booléen indiquant s'il y a un mur dans la direction donnée. Est-ce vraiment POO ?[/quote]
Ca, par contre, bof ... car de toute manière vu le nombre de murs dans les pièces dans un Donjon ... A la limite une fonction dans la class Joueur permettent de savoir si il y voit dans telle direction, ou bien si la case à sa droite, ou à sa gauche, etc ... , est libre. Enfin ce n'est que mon avis.

[quote]Humph, tant qu'on y est, mon joueur est repéré dans le donjon par ses coordonnées... Or les coordonnées du joueur (a,b) qui les possède ? Si c'est le joueur, cela ne paraît pas très valable car sans donjon, point de coordonnées valides ? Si c'est le donjon, bien... le joueur c'est pas une pièce...
[/quote]
C'est le joueur qui doit posséder ses coordonnées.
Il faut dès le départ que tu te fixe un repère par rapport auquel tu auras les coordonnées ... Ensuite, le donjon gèrera les déplacement des joueurs dans ce dernier en récupérant les coordonnées de joueurs, des pièces, etc ... mais il faut garder à l'esprit que créér une class revient à regrouper des données propre à un objet, un concept, ..., et des fonctions permettant de manipuler cette "chose". Et, comme, sauf erreur de ma part, des coordonnées sont propres à un joueur généralement ... hé bien les coordonnées doivent bien être mises dans le joueur. Enfin j'ai toujours fait comme ça. Il reste à avoir l'avis des autres, mais généralement, voir toujours, c'est implémenté de cette manière.

Voilà, en espérant t'avoir aidé.
__________________________
Be C++
[url=http://blog.mestan.fr/]Mon Blog (C++, Intelligence Artificielle, Prolog)[/url]

ERREUR BBCODE SUR CE MESSAGE :
- La valeur de la balise "quote" n'est pas correcte !

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

sebsheep
Membre du club
Chef de projet(s) :
- SejourAdmin

Inscrit : 27/03/2005
Messages : 509
Message
#91527
Posté le 20/03/06 à 19:09
si je ne m'abuse, le joueur est DANS le donjon nan?

Donc pourquoi ne pas faire une relation HAS A?
=>Le donjon possede un membre joueur...
__________________________
L'élève heureux est celui qui, comme la rivère, suit son cours dans son lit.
Et n'oubliez pas :Seb, c'est bien!

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

Alp
Superviseur :
- Système d'ex.
- Méthodologie.
- C & C++
Modérateur :
- Bavardages
Chef de projet(s) :
- My SDL Lib

Avatar de Alp
Inscrit : 24/06/2004
Messages : 2571
Message
#91541
Posté le 20/03/06 à 20:12
Ben oui ... le donjon possède un tableau de joueurs.
Mais je ne sais pas si c'était dans les questions, mais très bonne remarque!
__________________________
Be C++
Mon Blog (C++, Intelligence Artificielle, Prolog)

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

Woufeil
Membre du club
Chef de projet(s) :
- AdminServ

Avatar de Woufeil
Inscrit : 21/09/2004
Messages : 825
Message
#91548
Posté le 20/03/06 à 20:25
Donc on crée les relations suivantes : donjon HAS A piece (un tableau de pièces plus précisément) et HAS-A joueur (de même, un tableau de joueur).

Les joueurs dipsosent d'un attribut postion, modifiée par une méthode déplacement, mais cette méthode déplacement est dans une classe Déplacement. Si on définit le tableau de position en protected, il faut, pour que la classe déplacement y est accés, une relation d'héritage entre personnage et déplacement, non ?
Moi je ne trouve pas ça logique, mais j'ai peut être ma compris.
Jaime bien l'idée de la méthode Déplacement, puisque cela permet l'indépendance de la classe joueur, mais il faut reconnaître que c'est assez lourd.

Un petit éclaircissement, pour un pauvre débutant en OO ? Smiley
__________________________
[col]Woufeil[/col]
Image
Image et respectez la charte.

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

Alp
Superviseur :
- Système d'ex.
- Méthodologie.
- C & C++
Modérateur :
- Bavardages
Chef de projet(s) :
- My SDL Lib

Avatar de Alp
Inscrit : 24/06/2004
Messages : 2571
Message
#91556
Posté le 20/03/06 à 21:05
[quote]Les joueurs dipsosent d'un attribut postion, modifiée par une méthode déplacement, mais cette méthode déplacement est dans une classe Déplacement. Si on définit le tableau de position en protected, il faut, pour que la classe déplacement y est accés, une relation d'héritage entre personnage et déplacement, non ?
[/quote]
Je dirais non, car la classe Joueur [b]est implémentée[/b] en fonction de Deplacement ...
C'est à dire soit héritage privé(pas terrible une relation d'héritage ici je trouve), soit hé bien un tableau de déplacements dans joueur, toussa ... Mais je trouve que l'idée la plus simple et effiace est une méthode déplacer dans Joueur prenant un paramètre un objet de type Deplacement...



[quote]Moi je ne trouve pas ça logique, mais j'ai peut être ma compris.
Jaime bien l'idée de la méthode Déplacement, puisque cela permet l'indépendance de la classe joueur, mais il faut reconnaître que c'est assez lourd.
[/quote]
L'idée que j'ai donné dans mon premier post ?
__________________________
Be C++
[url=http://blog.mestan.fr/]Mon Blog (C++, Intelligence Artificielle, Prolog)[/url]

ERREUR BBCODE SUR CE MESSAGE :
- La valeur de la balise "quote" n'est pas correcte !

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

Woufeil
Membre du club
Chef de projet(s) :
- AdminServ

Avatar de Woufeil
Inscrit : 21/09/2004
Messages : 825
Message
#91561
Posté le 20/03/06 à 21:12
Donc toi tu verrais la relation un joueur HAS A déplacement, ça parrait logique.
Et avec la méthode déplacer dans joueur, OK, je comprend bien, pas de problèmes, c'est comme ça que je l'imaginais Smiley

En fait, au début, je pensais à une méthode déplacer dans la classe joueur, mais qui ne recevrait pas d'objet déplacement, et là c'état franchement lourd, mais la dernière version répond bien, je pense, à la problématique.

En revanche, j'ai du mal à m'imaginer à quoi va ressembler la classe Déplacement, tu pourrais me dire comment tu vois ça ?
__________________________
[col]Woufeil[/col]
Image
Image et respectez la charte.

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

Alp
Superviseur :
- Système d'ex.
- Méthodologie.
- C & C++
Modérateur :
- Bavardages
Chef de projet(s) :
- My SDL Lib

Avatar de Alp
Inscrit : 24/06/2004
Messages : 2571
Message
#91564
Posté le 20/03/06 à 21:19
Version C++ :

class Deplacement { /* int depart_x,depart_y,dest_x,dest_y; C'est utilisable, mais je préfère la solution suivante */ int deltax,deltay; // valeur de déplacement sur x,y public: // accesseurs, mutateurs, et : Deplacement(int dx,int dy) : deltax(dx),deltay(dy) { } };


C'est clair que niveau fonctionnalités, elle est réduite, mais je trouve qu'encapsuler cela dans une class est plus pratique, plus propre, et plus léger niveau code, mais bon après chacun ses gouts. D'ailleurs il y aura surement des programmeurs uqi préfèreront une autre manière, et en principe sauf erreur de conception cela reviendra au même. Le plus important c'est que cela donne le plus d'aisance à coder le programme tout en ne perdant pas trop de consommation mémoire/cpu ...
__________________________
Be C++
Mon Blog (C++, Intelligence Artificielle, Prolog)

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

sebsheep
Membre du club
Chef de projet(s) :
- SejourAdmin

Inscrit : 27/03/2005
Messages : 509
Message
#91586
Posté le 20/03/06 à 22:35
[quote]
Deplacement(int dx,int dy) : deltax(dx),deltay(dy) { }
[/quote]

donc tu utilises leonstructeur si je comprend bien...
donc en fait, tu veux creer un objet déplacement a chaque fois que t'as besoinde te déplacer??

Je vois pas trop le truc là...
__________________________
L'élève heureux est celui qui, comme la rivère, suit son cours dans son lit.
Et n'oubliez pas :[b]Seb, c'est bien![/b]

ERREUR BBCODE SUR CE MESSAGE :
- La valeur de la balise "quote" n'est pas correcte !

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

Alp
Superviseur :
- Système d'ex.
- Méthodologie.
- C & C++
Modérateur :
- Bavardages
Chef de projet(s) :
- My SDL Lib

Avatar de Alp
Inscrit : 24/06/2004
Messages : 2571
Message
#91589
Posté le 20/03/06 à 22:41
Oui c'est ça, je ferais bien un :

monplayer.move(Deplacement(x,y));

Ainsi il est créé, copié, détruit.
C'est juste de l'encapsulation, casi abusive, mais j'aime ce style Smiley et il s'avère qu'il est pas vraiment couteux, donc bon :)
__________________________
Be C++
Mon Blog (C++, Intelligence Artificielle, Prolog)

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 
POSTER UN NOUVEAU SUJET REPONDRE A CE SUJET

PREMIERE PAGE

PAGE PRECEDENTE Page précédente

Page suivante

PAGE SUIVANTE DERNIERE PAGE

FORUM POO



    PAGES : [1] [2] [3] [4]



.: Site Web développé par Julien Pichot et l'équipe MPWG avec www.evolvia-web.com :.