none
Es posible ejecutar un windows Game de XNA desde un "windows form" ?

    Pregunta

  • Buenas Tardes,

    Estoy realizando mi trabajo final de carrera sobre el desarrollo de aplicaciones para Kinect.

    La cuestión es que me gustaría desde un formulario de "Windows Forms" programado con C#, desde un botón de este formulario, al clickarlo poder ejecutar el game.Run() de una aplicación en XNA, y que este minijuego de XNA pudiera compartir variables que se tratarian desde el formulario.

     

    He visto algún tutorial por ahí para poder ejecutar una aplicación híbrida pintando dentro de un panel del windows form, pero yo lo que deseo es crear un formulario para recoger datos y al apretar el botón que se lance el juego XNA.

    También puedo desde la función Main ejecutar ambas cosas a la vez es decir el juego XNA y el formulario, pero yo deseo ejecutar el game desde el form, no se si me explico jejeje.

    Seria posible? lo he intentado pero Visual studio me devuelve el siguiente mensaje: No se permite empezar un bucle de segundo mensaje en un subproceso sencillo. Utilice en su lugar Form.ShowDialog.

    Disculpad mi ignorancia pero no soy muy experto en el tema, y no consigo realizarlo como deseo? Si alguien me pudiera dar alguna pista o algunas pautas para hacerlo se lo agradecería muchisimo.

     

    Muchas Gracias!

     

    David.

    sábado, 26 de noviembre de 2011 14:45

Respuestas

  •  

    ¿Algo así?

     

     static void Main(string[] args)
            {
                TestForm test = new TestForm( );
                while ( test.ShowDialog( ) == System.Windows.Forms.DialogResult.OK )
                {
                    using ( Game1 game = new Game1( ) )
                    {
                        game.Run( );
                    };
                }            
            }       

     

    NOTA: En el formulario debe haber un boton con la propiedad DialogResult == OK para que se lance la ventana xna

     


    Tambien conocido como Blau www.youtube.com/malditis www.charcostudios.com


    lunes, 28 de noviembre de 2011 10:08

Todas las respuestas

  • Buenas Tardes,

    Estoy realizando mi trabajo final de carrera sobre el desarrollo de aplicaciones para Kinect.

    La cuestión es que me gustaría desde un formulario de "Windows Forms" programado con C#, desde un botón de este formulario, al clickarlo poder ejecutar el game.Run() de una aplicación en XNA, y que este minijuego de XNA pudiera compartir variables que se tratarian desde el formulario.

     

    He visto algún tutorial por ahí para poder ejecutar una aplicación híbrida pintando dentro de un panel del windows form, pero yo lo que deseo es crear un formulario para recoger datos y al apretar el botón que se lance el juego XNA.

    También puedo desde la función Main ejecutar ambas cosas a la vez es decir el juego XNA y el formulario, pero yo deseo ejecutar el game desde el form, no se si me explico jejeje.

    Seria posible? lo he intentado pero Visual studio me devuelve el siguiente mensaje: No se permite empezar un bucle de segundo mensaje en un subproceso sencillo. Utilice en su lugar Form.ShowDialog.

    Disculpad mi ignorancia pero no soy muy experto en el tema, y no consigo realizarlo como deseo? Si alguien me pudiera dar alguna pista o algunas pautas para hacerlo se lo agradecería muchisimo.

     

    Muchas Gracias!

     

    David.

    Creia que te había pillado lo que querias pero cuanto más releo más dudas tengo....

     

    te pongo dos videos, ¿cual de ellos soluciona tu problema?

    1. http://www.youtube.com/watch?v=UCfPFn4OLhk

    2. http://www.youtube.com/watch?v=4QDeY15Ox-g

     

     


    Tambien conocido como Blau www.youtube.com/malditis www.charcostudios.com
    sábado, 26 de noviembre de 2011 17:59
  • Hola, buenos días,

    Ante todo muchas gracias por tu rápida respuesta.

    Creo que sería más bien el segundo ("http://www.youtube.com/watch?v=4QDeY15Ox-g"), pero no exactamente, lo que me gustaría es que cuando ejecutara mi aplicación, primero se ejecutara un formulario, donde tendría varios labels, textbox, combobox, diferentes elementos, que además contendrían datos de una base de datos, y desearía poder seleccionar esos datos desde el formulario, y una vez estuviera todo listo, apretar un botón y que se lanzara el juego XNA con la configuración que haya seleccionado del formulario, es decir, una vez lanzado el juego el formulario lo querría ocultar, y cuando terminara de jugar, cerraría la ventana del juego XNA y regresaría al formulario. El problema es que deseo que el game.run() se ejecute solo al clicar el botón del formulario y esto es lo que no se hacer. Ya que seria como invocar un proceso dentro de otro. (No sé si esto es posible, o si seria la manera correcta de hacerlo) No obstante tendría en cuenta cualquier ayuda o sugerencia.

    Espero que ahora se me entienda un poco mejor jejej.

    Muchísimas Gracias.

    domingo, 27 de noviembre de 2011 11:33
  •  

    ¿Algo así?

     

     static void Main(string[] args)
            {
                TestForm test = new TestForm( );
                while ( test.ShowDialog( ) == System.Windows.Forms.DialogResult.OK )
                {
                    using ( Game1 game = new Game1( ) )
                    {
                        game.Run( );
                    };
                }            
            }       

     

    NOTA: En el formulario debe haber un boton con la propiedad DialogResult == OK para que se lance la ventana xna

     


    Tambien conocido como Blau www.youtube.com/malditis www.charcostudios.com


    lunes, 28 de noviembre de 2011 10:08
  • Perfecto!!

    Es exactamente lo que quería!!

     

    Muchísimas Gracias!!!

    Me ha sido de gran ayuda!!

    lunes, 28 de noviembre de 2011 15:17
  • Muchísimas gracias, agregando a este gran aporte..También se puede usar if para que solo se genere el TestForm una vez.

    static void Main(string[] args)
            {
                TestForm test = new TestForm( );
                if ( test.ShowDialog( ) == System.Windows.Forms.DialogResult.OK )
                {
                    using ( Game1 game = new Game1( ) )
                    {
                        game.Run( );
                    };
                }            
            }       

    miércoles, 11 de marzo de 2015 1:59