lol ! ces bons vieux algos A* ![]()
A++ alors !
Pk je men prendrais plein la gueule
? jai tellement envie de faire une beau survivl horror online
Je t´ai déja répondu : ne t´attaque pas a un projet comme ça sans expérience !
Resident Evil online en premiere experience ? A moins que tu ne sois einstein u n´y arriveras jamais en moins de 3 ans ( et encore ! !).
Sinon, je viens juste faire un ch´tit coucoou et dire que je continue mon apprentissage du C++ et que je viens de m´acheter un bouquin ( par stoustrup). Sinon, j´ai un ch´tit probleme avec ce code :
using namespace std;
namespace thing//
{
namespace item
{
class CWeapon
{
private :
string _NameWeapon;
string _namegenre;
int _genre;
int _degatmax;
int _degatmin;
protected :
int _prix;
public :
CWeapon()
{
_NameWeapon = " " ;
}
CWeapon(char*, int , int,int,int)throw(range_error);
void affiche();
}; / /ferme weapon
CWeapon::CWeapon(char* NameWeapon, int genre, int prix, int degatmax, int
degatmin)throw(range_error)
{_degatmax = degatmax;
_degatmin = degatmin;
_prix = prix;
_genre = genre;
_NameWeapon = NameWeapon;
if(_degatmax<_degatmin)
throw range_error("le degat max ne peut etre inferieur au degat minimal");
if(_genre>2)
throw range_error("pas au dessus de 2");
if(_genre<0)
throw range_error("pas en dessous de 0");
if(_genre==0)
_namegenre ="contondant";
if(_genre==1)
_namegenre = " percant";
if(_genre==2)
_namegenre = " tranchant";
if(_prix<0)
throw range_error("impossible de descendre en dessous de 0");
}//ferme weapon1
void CWeapon::affiche()
{ / /
cout<<_degatmax<<" " <<_degatmin<<"
" <<_prix<<" " <<_genre<<"
" <<_namegenre<<" " <<_NameWeapon;//Pour afficher les
} / / caracteristiques de l´arme
}//ferme item
namespace perso// pour l´instant, ca n´inclue que son argent
{class monperso : protected item::CWeapon
{
protected :
int argent;
public :
monperso(int fric)
{
argent = fric;
}
int buyweapon();
void affiche2();
};//ferme monperso
int monperso::buyweapon()
{
return argent -=_prix;
}
void monperso::affiche2()
{
cout<<argent<<endl;;
cout<<_prix<<endl;
}
} / /ferme perso
}//ferme object
void main()
{
namespace A = thing::item;
namespace B = thing::perso;
A::CWeapon *hache;
try
{
hache = new A::CWeapon("hache de la mort",1,10,25,15);
}
catch(range_error erreur)
{
cerr<<erreur.what();
}
B::monperso *babycool = new B::monperso(40);
hache->affiche();
cout<<endl;
babycool->affiche2();
if(cin.get())
babycool->buyweapon();//pkoi ca marche pas? ca me met que _prix = 0
babycool->affiche2();
cin.get();
}
Le probleme est que je n´arrive pas à utiliser le _prix dans la classe fille. _prix s´initialise à 0. J´ai déjà demandé et on m´a dit de faire une fonction int get_price(); quii retournerait la valeur de _prix. Alors j´ai essayé ça :
private :
string _NameWeapon;
string _namegenre;
int _genre;
int _degatmax;
int _degatmin;
protected :
int _prix;
public :
CWeapon(char* NameWeapon, int genre, int prix, int degatmax, int degatmin)
{//differentes égalités
_prix = prix;
}
int get_price()
{
return prix;
}
};
et dans ma classe je l´ai utilisé comme ça :
protected :
int argent;
public :
monperso(int fric)
{
argent = fric;
}
int buyweapon();
void affiche2();
};
int monperso::buyweapon()
{
return argent -=get_price();
}
Mais ca ne marche pas.
On m´a dit aussi de rendre les class amies, mais je ne sais pas ce que c´est.
PS : j´ai oublié de dire que mon bouquin je le reçois seulement dans 2 semaines
oups, j´ai oublié les delete babycool et delete hache
laelale: j´ai pas lu tout le code mais je suppose que tu compte utiliser getprice plus d´une fois sur differents objets qu´elle retourne l´entier contenu dans le champ prix de ton objet ( une arme a ce que j´ai compris).
Pour ce faire ta fonction devrait etre definie dans la classe object et appelée comme ceci dans les classes au dessus
res = objetx.getprice() ou objetx est l´objet dont tu veux obtenir le prix et res le champs qui va contenir le resultat
tu peux aussi faire des operations booleennes du style if(perso.getmoney()<objetx.getprice()) . ...
l´operation ne s´effectuera que si le perso n´a pas assez d´argent pour s´offrir l´objet
class monperso : protected item::CWeapon
C´est bizard de faire heriter ta classe pour le perso de ta classe pour les armes.
Mais le code sur ce forum est illisble : tu pourai pas le mettre sur le net qu´on puisse voir sa de fasson plus clair ?
Un petit diagramme de classe aussi ca nous serait tres util... a toi aussi d´ailleur.
Petit exemple: je veux realiser une fonction pour permettre a un personnage d´acheter un objet(on s´occupe pas du vendeur juste de l´acheteur)
Cette operation peut se separer en deux; payer et ajouter a l´inventaire.
On aura donc une classe perso qui comprendra au moins un champs argent et un champ inventaire
et un certain nombre de fonctions dont une
achat(objet-d´inventaire objetx)
changement-argent(int somme)
la fonction qui permet d´ajouter un objet a l´inventaire sera elle dans la classe objet " inventaire" et getprice() sera dans la classe objet " objet-d´inventaire"
Le corps de la fonction achat se présentera comme suit
void achat(objet-d´inventaire objetx)
{prix = objetx.getprice();
if ( argent>=prix)
{inventaire.ajouter(objet-d´inventaire objetx)
argent-= prix;}}
tu vois le genre... il faut bien penser ton architecture a l´avance mes profs avaient même l´habitude de dire que si tu décide de le changer en route il faut tout recommencer a zerro... mais bon c´est des profs ils vivent pas de leur programmation ils peuvent se le permettre
Ruffi -> ça fait zarb hein ? Mais je ne voyais pas trop comment faire sinon.
LeSalaud ( hum, pas ma faute)-> Mais pour enlever de l´argent de cette façon, je suis obligé de rendre " fric" public non? ( je veux dire en dehors que dans le constructeur). Sinon, j´ai compris ton histoire de diagramme mais de là à le reproduire ^^. Je vais essayer ta méthode.
Et j´ai oublié de demander. Je ne sais utiliser les class dans le main que de façon dynamique. Je ne sais pas initialiser les variables de l´autre façon. Je veux dire que je sais faire :
A::CWeapon *hache = new CWeapon("hache",2,10,25,15)
Mais pas avec :
A::CWeapon lame ; // Je ne sais même pas si c´est comme àa qu´on met.
ig,orer le dernier post, j´ai touvé par moi meme ; -)
Voilà je débute en C++ j´utilise micro visual 6 comme compilo et j´aimerais réaliser mes 1er tests niveau Musical tout simple mais je ne sais comment m´y prendre ![]()
Dois je utiliser une ou des librairies ? Dois je utiliser le sdk de directx ou encore Opengl??
Merci de m´informer ![]()
Ma foi tu fais comme tu veux, tout dépend avec laquelle tu es le plus à l´aise ![]()
Je finis de répondre : tu PEUX utiliser DES librairies tout dépend de laquelle tu choisis ( regarde leurs docs et tu verras si elles ont toutes les fonctionnalités dont tu as besoin).
Pour le son ( si c´est bien ce que j´ai compris), utilises FMOD. OpenGL ne gère que la partie graphique et DirectX là je peux que te rapporter des dires ( je l´ai pas essayée) qui sont " j´ai toujours rien compris", " faut tout initialiser, ce qui prend une foule de lignes", " c´est Microsoft c´est de la merde" ( tiens-en pas compte de celle-là, sauf si tu tiens à la portabilité).
JYY : dans ton 2.1.1 - Affiche une image ( SDL) tu mets dans waitkey() 2 if´s imbriqués. A quoi sert le 2ème ? Il retourne rien mais je vois pas son utilité vu que la fonction de test si on n´appuie pas sur une touche est déjà présente.
Voilà ce que j´aurais mis :
if ( event.type == SDL_KEYDOWN)
{
/ * pas besoin d´une autre fonction ni besoin de retourner une valeur. */
}
Et quand dans tes commentaires tu dis par ex " // c´est " RETURN" ? " c´est que tu n´en est pas sûr ?
Lorsque tu me dis " son" quels sont les formats qui y sont compris dans FMOD ? ?
mp3, ogg, wma, midi, wav
des sources exemples là : http://fmod.apinc.org/
et le site officiel : http://www.fmod.org/
Excellent merci pour votre aide !
Quels sont les prix de FMOD pour un usage commercial d´un logiciel ( j´inclu dans logiciel les jeux)
Cherche sur le site de FMOD.