begin process at 2012 05 29 23:52:28
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Débutant(e)

 > 

lien entre classes...


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

lien entre classes...

mardi 5 janvier 2010 à 22:53:11 | lien entre classes...

djbneben

salut tout le monde,

en ce moment je programme un menu, qui sera utiliser dasn mes futurs jeux!
donc je vous décris ce que je me suis dis : j'ai crée une classe "menu" qui gère tout le menu, puis une classe "bouton" qui permet de crée des bouton au lancement du jeux (nouvelle partie, charger...), puis une classe "window" pour créer des fenetre. Donc en gros, le menu -contient- des boutons et -contient- des fenetres.

En code j'ai fait ca (j'ai enlevé ce qui sert a rien ici):
Code C/C++ :
class menu
{
private:
	bouton *ClicTextNewGame;
        window *NewGameWindow;
}


puis dans le constructeur de "menu"
Code C/C++ :
ClicTextNewGame = new bouton;
NewGameWindow = new window;


Dans une methode de "menu" qui est appelé au lancement du jeu, je crée donc un bouton pour lancer une nouvelle partie, puis je crée une fenêtre qui sera pas affichée pour le moment.

Ensuite dans la boucle d'affichage du menu, je test si le curseur est sur le bouton, puis si on clic:
Code C/C++ :
ClicTextNewGame->cliquableText("Nouvelle Partie",100,400);

Code C/C++ :
void bouton::cliquableText(std::string text, int posX, int posY)
{
	// récupère la taille en pixel de la chaine (X et Y)
	int pixelSizeOfText_X = dbTextWidth((char*) text.c_str());
	int pixelSizeOfText_Y = dbTextHeight((char*) text.c_str());

	// on voit si le curseur passe sur le texte
	if (dbMouseX()>posX & dbMouseX()<posX + pixelSizeOfText_X & dbMouseY()>posY & dbMouseY()<posY + pixelSizeOfText_Y)
	{
		dbText(100,dbScreenHeight()-150,(char*) m_InfoText.c_str());
		dbInk( dbRGB (116,116,116),0);

		// si le joueur clic alors qu'il est sur le texte
		if(dbMouseClick() == 1)
		{
			[color=red]ICI AFFICHAGE FENETRE[/color]
		}
	}
	else
	{
		dbInk( dbRGB (m_baseColorText_R,m_baseColorText_G,m_baseColorText_B),0);
	}

	dbText(posX, posY,(char*) text.c_str());
}


Donc le truc c'est que je voudrais appeler une méthode "afficherFenetre" qui est dans la classe "window", mais je sais pas comment faire... Je voudrais faire un:
Code C/C++ :
NewGameWindow->afficherFenetre();

mais je ne peux pas utiliser mon objet (mauvaise portée...)

Comment je dois faire ?
mercredi 6 janvier 2010 à 03:28:45 | Re : lien entre classes...

aardman

Membre Club
Salut,
A priori tu ne peux pas, NewGameWindow est un membre de menu, pas de bouton.
Pourquoi tu ne passes pas ton window* en param à cliquableText() ?
mercredi 6 janvier 2010 à 09:56:56 | Re : lien entre classes...

djbneben

Merci pour ta réponse! J'avais déja essayé ca sur un autre programme, mais je n'ai pas compris pq, ca planté aléatoirement dans le jeu après...

Mais la je vais essayer une ptite modif, parceque le soucis, c'est qu'a l'endrois ou je veux mettre :
Code C/C++ :
NewGameWindow->afficherFenetre();


one ne passe qu'une seule fois (lors du clic!) mais ca ne peux pas marcher parceque ce type de programmation a besoin d'être rafraichi a chaque boucle (la fenetre doit etre continuellement affiché, et pas qu'une seule fois sinon elle sera affichée que la 1ere boucle!). Donc je pensé mettre un bool de menu a TRUE puis verifier avec la classe "Window" ce que vaut ce bool, et afficher en conséquence!

Je vous tiens au jus, et je posterais un ptit appercu :)
mercredi 6 janvier 2010 à 11:16:43 | Re : lien entre classes...

djbneben

voila de retour!

Donc j'ai utilisé ce que aardman a dis, j'ai fais ca:
Code C/C++ :
void bouton::cliquableText(std::string text, int posX, int posY, window* windowObj)
{
	// récupère la taille en pixel de la chaine (X et Y)
	int pixelSizeOfText_X = dbTextWidth((char*) text.c_str());
	int pixelSizeOfText_Y = dbTextHeight((char*) text.c_str());

	// on voit si le curseur passe sur le texte
	if (dbMouseX()>posX & dbMouseX()<posX + pixelSizeOfText_X & dbMouseY()>posY & dbMouseY()<posY + pixelSizeOfText_Y)
	{
		dbText(100,dbScreenHeight()-150,(char*) m_InfoText.c_str());
		dbInk( dbRGB (116,116,116),0);

		// si le joueur clic alors qu'il est sur le texte
		if(dbMouseClick() == 1)
		{
			windowObj->changeToShowWindow();
		}
	}
	else
	{
		dbInk( dbRGB (m_baseColorText_R,m_baseColorText_G,m_baseColorText_B),0);
	}

	dbText(posX, posY,(char*) text.c_str());
}


Ca marche mais je sais pas si c'est bien comme ca... La fonction "changeToShowWindow()" met un bool a TRUE, puis dans ma boucle principale je test ce que vaut ce bool, dans ce cas la ca marche!

Mais la syntaxe est elle bonne ?
mercredi 6 janvier 2010 à 16:14:21 | Re : lien entre classes...

djbneben

bon finalement... J'ai fait un bool, je test si ce bool est a TRUE et j'affiche; pour plus de précision je mes mes sources, et un EXE:

Tapez le texte de l'url ici.

Pour fermer une fenetre, cliquer n'importe ou a droite de l'écran, pous quitter faire echap, pous modifier le menu, aller dans Config.ini qui est dans le dossier BIN!

Dites m'en des news :)


Cette discussion est classée dans : bouton, menu, code, crée, cpp


Répondre à ce message

Sujets en rapport avec ce message

HELP !!! Après plantage fichiers cpp transformés en binaire : code perdu !!!!! [ par ngryman ] J'y crois pas ! J'ai lancé mon progrmme, il a planté, une erreur windows s'est produite et j'ai redémarré mon pc, et après le fichier cpp principal de Pb avec CBitmapButton [ par punx120 ] Salutj'ai un problème avec CBitmapButton, je veux créer un bouton avec un bitmap je fais comme ceci mais ça ne marhce pas (j'ai visual c++ 6.0): dans menu avec clic sur bouton en vc++ [ par pichu ] coment on fait pour avoir un menu lorsu'on clic droit sur un bouton?je comprends pas comment on se sert des fonctions de CMenu comme TrackPopupMenu, o Popup menu [ par garslouche ] Bonjour,je voudrais créer un menu contextuel tout simple.J'ai créé un menu avec l'éditeur de VC++ et j'utilise la méthode OnContextMenu : void CTestme INI :: AIDEZ MOI SVP !! [ par bdkiller ] Bonjour,Je suis newbie dans le Cpp. J'utilise Borland Cpp Builder.J'ai un petit problème avec les fichiers ini. Et vu que je n'arrive pas à le résoudr problème de variables [ par Adeon ] salut! regardez ces lignesdans principal.cpp :#include #include "sous_partie.cpp"void enregistre_variable();void main(){< Mettre une image sur un bouton [ par patatedu65 ] Bonjour!! quelqu'un peut il me dire comment peut on mettre une image en .bmp sur un bouton sous VC++ ??? Du code du code!!! :-DBTS Info Indus (2ème a Appel de fonction [ par amauro ] Bonjour à tous!Bonjour à tous!J'aimerais appeller une fonction que j'ai crée moi-même dans la classe View.cpp de mon application MDI depuis la classe Image sur bouton (API win32) [ par LordBob ] Bonjour a tous,voila j'essaie de mettre une image sur un bouton de mon dialog, je procede donc comme ceci:HANDLE hImage;...hImage = LoadImage(hInst, " creation de bouton sans dialog ni de menu ? [ par AirFoxOne ] Salut,Une tite question... ya moyen de mettre des bouton, text entry etc.. sur n'importe quelle fenetre ? genre je cree un rectangle et je colle mon b


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,167 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales