none
Plusieurs interface (menu d'un jeu) RRS feed

  • Question

  • Bonjour à tous,

    Je suis semi-débutant en C# et je suis actuellement entrain de me créer un jeu en C# (très basique) et je voudrais savoir comment faire pour créer plusieurs interface (si c'est le bon mot) comme, le menu du début, les options, le mode de jeu, le jeu, j'ai déjà les images de faites et un idée de mon code pour le jeu mais je ne sais pas comment faire cet interface.

    Merci de votre être future ! :D

    Cordialement

    Themoder

    samedi 23 juillet 2011 15:22

Réponses

  • Là on est bien toujours sur le même sujet ! ;-) Je parlais plutôt de choses comme le problème avec System.Random ou mettre plus d'une image. Pour l'instant le sujet de cette discussion est pour moi de passer d'un contenu à l'autre dans une même fenêtre.

    Le message indique que la classe App ne contient aucun élement appelé Menu. Bien vérifier à nouveau le fichier App.xaml.cs par rapport à celui que j'ai fourni notamment la ligne public static void Menu() etc...

    Le principe est donc que dans la classe App, j'ai mis des fonctions qui vont charger un groupe de contrôles qui va "s'incruster" dans la page principale permettant d'afficher telle ou telle "page" en appelant la fonction correspondante.


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    • Marqué comme réponse Édouard jeudi 28 juillet 2011 15:28
    jeudi 28 juillet 2011 08:15
    Modérateur

Toutes les réponses

  • Bonjours

    Pour vous mettre sur les railles concernant le developpement des jeux sous DOTNET

    http://msdn.microsoft.com/fr-fr/library/bb200104.aspx

    Cordialement


    The complexity resides in the simplicity Follow me at: http://smartssolutions.blogspot.com
    dimanche 24 juillet 2011 12:07
  • Bin je le fais en Windows Form et jai aucune idée du XNA (je sais pas c'est koi) et pour les images (boutton, fond, jeux) on les a tous fait manque juste a les utiliser et je voudrais savoir comment faire pour :

    1. Quand je passe ma souris sur un boutton, il change pour une autre image

    2. Quand je clique sur un boutton (example "Jouer") les boutton parte et laisse place au jeu (autre page ou interface).

    Merci d'avance 

    Cordiallement 

    lundi 25 juillet 2011 15:43
  • Bonjour,

    Je vous conseille de créer une form pour le début par exemple appelée FormMain

    puis une forme pour les options appelée FormOptions

    puis une form pour les règles du jeu appelée FormRules

    et enfin une form pour le jeu lui-même appelée FormGame

    ensuite il suffit d'appeler les form entre-elles avec la méthode Form.Show()

     


    fred
    lundi 25 juillet 2011 16:17
  • Ok merci de ta réponse rapide mais comment faire plusieurs Form identique (dimension) a lautre sans toute le replacer les parametre 

     

    lundi 25 juillet 2011 16:28
  • Bien :D je viens de trouver mais, il en ouvre une autre comment je fais pour quil aye dedans sans en ouvrir une 2e :o
    lundi 25 juillet 2011 17:21
  • Bonjour,

    Il serait aussi possible d'utiliser un seul formulaire et d'afficher dedans le "Panel" ou le contrôle dont on a actuellement besoin un peu comme une fenêtre de navigateur qui sert de "coquille" aux différentes pages sur lesquelles on navigue (http://msdn.microsoft.com/fr-fr/library/6hws6h2t.aspx).

    Si le choix de Windows Forms n'est pas totalement gravé dans le marbre, il pourrait être intéressant de jeter un oeil sur WPF qui prend en charge une navigation dans l'application semblable justement à celle que l'on trouve dans un navigateur. C'est également sans doute un peu plus compliqué (parce que plus puissant) que Windows Forms. Cela dépend aussi de la nature du jeux et des possibilités vers lesquelles vous aimeriez éventuellement pouvoir aller (par exemple animation, transparence, rotations et autres transformations, 3D simple etc...). Par contre l'apprentissage est effectivement plus compliqué (http://msdn.microsoft.com/fr-fr/library/aa970268.aspx).

    XNA est encore le cran au dessus (3D hautes performances).

     


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    lundi 25 juillet 2011 17:57
    Modérateur
  • Bonjour,

    Il est possible d'appeler les méthodes hide ou Close pour une form

    http://msdn.microsoft.com/fr-fr/library/39wcs2dh.aspx

    Pour créer un modèle de form il est possible d'hériter ses futures forms d'un modèle comme le fait le compilateur C#

     public class FormMain : Form

     public class FormOptions : Form

     


    fred
    lundi 25 juillet 2011 21:19
  •  

    En fait je vais essayer les 2 et que le meuilleur lemporte ...

    Merci pour votre aide



    lundi 25 juillet 2011 21:41
  • Jai finalement opter pour WPF mais maintenant comment on fait plusieurs interface genre, page menu, page instruction, page jeux, etc.

    Nouveau problème, dans Visual C# en WPF, je place une image et ensuite je ne peux plus rien placer, comment faire pour mettre plus d'une image ??

     

    Merci d'Avance !! :D


    lundi 25 juillet 2011 22:32
  • Boniour a vous, Je commence la creation d'un petit jeux en C# WPF, voila les probleme que je rencontre en commencent, 1. Je ne peux pas placer plus dune images, je glisse licone image dans ma fenetre et ca ne marche pas, jen ai de besoin pour faire mon fond decran et mes bouton.En fait quand je place une image je ne peux plus rien place par la suite (bouton, menu, texte, etc) 2. Je ne sais pas comment faire plusieurs interface comme le menu,le jeu, les regle, les option,etc. Jaimerai savoir comment faire pour pouvoir mettre pluiseurs images et comment faire les interface. Merci d'avance Cordiallement
    mardi 26 juillet 2011 02:56
  • Bonjour,

    Pour la navigation je propose de partir de l'exemple http://msdn.microsoft.com/fr-fr/library/ms752299.aspx quitte à le simplifier un peu. Il devrait être suffisant pour voir comment créer plusieurs pages et passer de l'une à l'autre.

    Connaître la nature du jeu pourrait aider. Si il s'agit par exemple de qq chose comme un échiquier ou un "envahisseur" la façon de placer les images sera sans doute assez différente.

    Au delà un groupe WPF sera sans doute préférable.


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    mardi 26 juillet 2011 08:25
    Modérateur
  • Bonjour,

    Il serait intéressant de savoir quel genre de jeu tu veux faire

    est-ce un jeu de plateau, shoot them up ?

    2D ou 3D ?

     


    fred
    mardi 26 juillet 2011 09:19
  • Pour faciliter la discussion merci de ne pas ouvrir plusieurs discussions sur le même sujet (ou d'ouvrir plusieurs discussions chacune sur un sujet particulier).

    En complément de mon lien précédent :

    1) on transforme la fenêtre MainWindow.xaml en remplacement Window par NavigationWindow ce qui donnerait :

    <NavigationWindow x:Class="WpfApplication2.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525" Source="Page1.xaml">
     </NavigationWindow>
    

    Notez aussi la source qui indique la page. Côté code on modifie aussi pour obtenir :

     public partial class MainWindow : NavigationWindow
    

    (là encore NavigationWindow remplace Window). On  ajoute ensuite deux pages dans le projet Page1/Page2 avec :

     <Grid>
        <TextBlock>
         <Hyperlink NavigateUri="Page2.xaml">Page2</Hyperlink>
    
    
        </TextBlock>
    
      </Grid>
    

    entre les balises Page. Le contraire pour la page 2. Quand on lance on doit avoir une appli qui affiche un lien vers la page2. Quand on clique l'autre page s'affiche avec un lien vers la page 2.

    Comme je disais également dans l'autre discussion le genre de jeu pourrait aider. Si c'est basé sur une grille on peut placer les images dans une colonne/ligne particulière de Grid, si la placement est libre et que l'on veut dessiner éventuellement plutôt un "Canvas".

    Finalement le groupe WPF est plutôt : http://social.msdn.microsoft.com/Forums/fr-FR/wpffr/threads (mais semble effectivement assez peu fréquenté).


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    mardi 26 juillet 2011 11:20
    Modérateur
  • Ok bon je vais me precisé, le jeu consite cliquer sur des truc qui apparaisse au hasard, sur l'écran, pour sa je peux me débrouiller mais je veux faire un menu au début, quand on click sur jouer et bien on arrive sur le jeu, quand on clic sur option on arrive au menu otion, et ainsi de suite pour les autre menu.

    Mon ami a déja déssiner les images (bouton, etc)

    Donc il me manque le faits que je ne peux plus rien placer dans ma fenetre apres avoir mis une image, et les  multi page.

     

    Sur le lien que tu ma donné on peut voir qu'il est dans un navigateur, mais y a til un moyen de ne pas le faire en navigateur ?

     

    Merci d'avance

     

    Cordiallement 

    mardi 26 juillet 2011 15:38
  • Il s'agit d'un jeux 2D, la description est dans lautre sujet, merci de changer se sujet pourra donc etre supprimé

     

    Merci et désoler d'avoir ouvert plus d'un

    mardi 26 juillet 2011 15:41
  • Ce n'est pas un navigateur ce sont les boutons de parcours standard d'une application WPF que l'on peut éventuellement désactiver (this.ShowsNavigationUI=false). J'ai mis ce midi qq explications un peu allégées dans l'autre fil de discussion pour montrer comment naviguer entre 2 pages dans WPF d'où l'interêt de ne pas ouvrir plusieurs discussions ;-)

    Eventuellement ferme peut-être celle ci. Il peut être intéressant de poser aussi une seule question par discussion (navigation d'un côté, images de l'autre). Une page peut contenir par exemple qq chose comme :

      <Grid>
       <Grid.RowDefinitions>
        <RowDefinition Height="20"/>
        <RowDefinition/>
       </Grid.RowDefinitions>
       <TextBlock Grid.Row="0">
         <Hyperlink NavigateUri="Page2.xaml">Page2</Hyperlink>
        </TextBlock>
       <Canvas Background="Yellow" Grid.Row="1">
        <Image Source="Test.jpg" Canvas.Left="0"/>
        <Image Source="Test.jpg" Canvas.Left="400" Canvas.Top="10"/>
       </Canvas>
      </Grid>
    
    

    ce qui permet de définir une grille avec deux lignes, la première étant occupée par un lien vers une autre page. La deuxième est un "Canvas" (zone graphique) avec deux images positionnées à des endroits différents.


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    mardi 26 juillet 2011 15:54
    Modérateur
  • ok mais où devrait-je placer se code ?? je pars a zero sur le XAML 
    mardi 26 juillet 2011 16:01
  • Essayer qq chose comme https://skydrive.live.com/?cid=fee4c77e201ea2cc&sc=documents&nl=1&uc=1&id=FEE4C77E201EA2CC%21542 (projet WPF VS 2010).

    Donc au lancement j'affiche une page 1 avec un lien vers une page 2 suivi d'un Canvas avec deux images (en fait deux fois la même). Sur la page 2 on peut revenir sur la page 1. Cela devrait donner un point de départ. Après il faut effectivement étudier WPF d'un peu plus près. Voir peut-être http://www.siteduzero.com/tutoriel-3-6353-developpez-des-applications-graphiques-wpf-grace-a-xaml.html.

     

     


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    mardi 26 juillet 2011 18:20
    Modérateur
  • Ok merci beaucoup ! je vais essayer de comprendre mais, si jai bien compris je vais devoir programmer mon jeu en XAML et non en C# ??

     

    Et comment faire pour quand il clic sur le bouton du jeu, il change pour l'image du bouton enfoncer et qu'il change pour la page 2

     

    Si possible je prefere programmer en C# et utiliser XAML comme graphique ...

    mardi 26 juillet 2011 21:39
  • Bon nouveau probleme,

     

    Comment je mets un évènement sur une image (mon bouton) que lorsque qu'on clic il va dans le jeu (autre page) par exemple ?

    et lorsquon change de page, est t'il possible d'enlever le son comme quand on click sur un lien le "Clickk" ??

    ainsi comment je ferrai pour faire jouer un son en loop simplement ?


    mardi 26 juillet 2011 23:11
  • Non, le XAML décrit juste l'interface utilisateur, l'application reste codée en C# (en Windows Forms le concepteur génère du code C#, VB etc.. que l'on ne voit généralement jamais).

    Pas mal de choses sont possibles sans code. Par exemple si dans le projet on utilise :

     <Hyperlink NavigateUri="Page2.xaml">
    
     <Image Source="Test.Jpg"/>
    
     </Hyperlink>
    
    

    On affiche une image et on passera à la page suivante sans avoir besoin de code C#. Un des points essentiels est que les contrôles ont une apparence par défaut mais que tout est imbricable (on peut donc mettre une image dans un hyperlien ou un bouton, des images ou même des vidéos dans une liste déroulante etc...).

    Pour jouer du son (ou une vidéo) voir MediaElement http://msdn.microsoft.com/fr-fr/library/system.windows.controls.mediaelement.aspx

    Pour désactiver le son, cela ne semble pas facile. Dans ce là, on pourrait revenir au plan B même principe que pour Windows forms.

    A ce stade je suggère de poster plutôt dans le groupe WPF qui est donc http://social.msdn.microsoft.com/Forums/fr-FR/wpffr/threads. Egalement il peut-être plus simple de poster une question par sujet (pour éviter d'avoir 50% des choses répondues, 50% des choses en suspens) et si il faut éviter d'ouvrir plusieurs discussions pour un même sujet ouvrez une nouvelle discussion quand vous changez de sujet.

    Si l'une des réponses semble correspondre à votre question initiale, marquez la comme réponse pour que cette discussion soit vue comme fermée par tous les participants.

    Selon vos connaissances actuelles il est possible aussi de revenir à Windows Forms si vous y êtres plus à l'aise. Comme je disais, WPF est puissant mais a une courbe d'apprentissage un peu plus rude sans doute que Windows Forms. 

     


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".


    mercredi 27 juillet 2011 08:40
    Modérateur
  • OK, mais il n'y pas une autre façon de faire un changement de page ? Parce que je veux apprendre le WPF et apres le XNA parce que je veux creer des jeux de plus en plus avancée et le son de chamgement de page de fait pas très proffesionnel :( 

    Donc, si il existe une autre manière merci de m'en faire part :D

    De plus j'essaie de générer une donnée au hasard, jai déjà essayer ca :

     

    System.Random PosX = new System.Random();

            int RandX = PosX.Next(10, 100);

     

    Mais j'obtient cette erreur : Un initialiseur de champ ne peut pas faire référence au champ, à la méthode ou à la propriété non statique 'Monjeu.PageJeux.PosX'

     

    Cordiallement

     

    Ps: Merci de ton aide présieuse


    mercredi 27 juillet 2011 14:45
  • C'est le son système configuré dans l'OS pour tout ce qui est navigation. Je vois bien éventuellement des "bidouilles" comme peut-être couper le son pendant les transitions mais bof...

    Sinon exactement le même principe que pour Windows Forms avec des "contrôles utilisateurs" (un fichier qui contient un groupe de contrôles éventuellement réutilisables, ici c'est juste pour séparer les "pages" les unes des autres). Donc :
    - créer un projet WPF et ajouter un contrôle utilisateur Menu.Xaml, Play.Xaml et Options.Xaml
    - dans MainWindow qq chose comme :

       <UserControl x:Name="Container">
       </UserControl>
    

    permet de "réserver" l'emplacement dans l'unique fenêtre de l'application. Cet emplacement pourra alors être occupé par les contrôles définis dans les fichiers Menu, Play ou Options en faisant respectivement un this.Container.Content=new Menu() etc... dans le code C# ce qui permettra donc dans la même fenêtre d'afficher des choses totalement différentes selon les besoins.

    Pour le deuxième point, on dirait que ce code est à un endroit où se placent les déclarations. Dans une déclaration on peut "auto-instancier" un objet donc la première ligne est valable, mais la deuxième ligne où on utilise l'objet précédemment instancié ne l'est pas. L'intention était sans doute de mettre ces lignes dans une fonction.

     

     


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    • Marqué comme réponse Édouard mercredi 27 juillet 2011 23:50
    • Non marqué comme réponse Édouard jeudi 28 juillet 2011 00:26
    mercredi 27 juillet 2011 17:41
    Modérateur
  • Donc j'ai mis un exemple WpfAutre pour montrer le principe (https://skydrive.live.com/redir.aspx?cid=fee4c77e201ea2cc&resid=FEE4C77E201EA2CC!542).

    Reste à faire pour "Options" sur le même principe que "Play". Donc au final les fonctions App.Menu(), App.Play(), App.Options() permet de demander à l'appli d'aller sur la "page" (simulée donc avec des "contrôles utilisateurs") correspondante...

    Si cela répond au besoin de naviguer d'une "page" à l'autre dans une même fenêtre merci de clôre la discussion en cliquant sur "Marquer comme réponse" et d'ouvrir une autre discussion si vous avez d'autres questions, de préférence dans le groupe WPF déjà cité deux fois, le sujet ne concernant pas vraiment le langage de programmation C#.

    Il va falloir que je prenne le temps de bloguer des "tutoriels" ;-)


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".

    • Marqué comme réponse Édouard mercredi 27 juillet 2011 23:50
    • Non marqué comme réponse Édouard jeudi 28 juillet 2011 00:26
    mercredi 27 juillet 2011 18:19
    Modérateur
  • Pas envie de commencer un nouveau sujet pour cela mais, ca ne marche pas il me dit

    MonJeu.App' ne contient pas de définition pour 'Menu

    pourtant, jai fait tel qu'il était écrit et jai comparer le code avec lexemple mais je ne trouve pas mon erreur.

     

    je marquerai dès que résolu ;-)

     

     

     



    jeudi 28 juillet 2011 00:24
  • Là on est bien toujours sur le même sujet ! ;-) Je parlais plutôt de choses comme le problème avec System.Random ou mettre plus d'une image. Pour l'instant le sujet de cette discussion est pour moi de passer d'un contenu à l'autre dans une même fenêtre.

    Le message indique que la classe App ne contient aucun élement appelé Menu. Bien vérifier à nouveau le fichier App.xaml.cs par rapport à celui que j'ai fourni notamment la ligne public static void Menu() etc...

    Le principe est donc que dans la classe App, j'ai mis des fonctions qui vont charger un groupe de contrôles qui va "s'incruster" dans la page principale permettant d'afficher telle ou telle "page" en appelant la fonction correspondante.


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    • Marqué comme réponse Édouard jeudi 28 juillet 2011 15:28
    jeudi 28 juillet 2011 08:15
    Modérateur
  • Merci :)))))))) et pour le random jai pu le corriger cétait int RandX = PosX.Next(10, 100); qui nétait pas a sa place. :)

     

    Merci encore et je vais ouvrir une nouveau topique en cas de besoin


    jeudi 28 juillet 2011 15:29