25.12.11

Aprender Windows Phone 7 (parte 40): Hola mundo en XNA

Vamos a empezar a aprender a crear juegos para Windows Phone 7 utilizando XNA.

Nuestro primer ejercicio va a ser crear un programa Hola mundo con XNA en Windows Phone 7.

En estos tutoriales se van a centrar en la parte de programación y no van a entrar a explicar los conceptos teóricos de XNA. Esa parte la podéis encontrar en otros libros como por ejemplo:

"Introduction to Programming Through Game Development Using Microsoft XNA Game Studio"

Y el curso online de XNA en Windows Phone 7.



Creando un primer juego Hola mundo

Vamos a crear un primer juego que muestre un mensaje hola mundo por la pantalla.

Abrimos Visual Studio y creamos un nuevo proyecto, para ello hay que pulsar en el menú "File" -> opción "New Project".

En la nueva ventana he seleccionado las opciones "Visual C#" -> "XNA Game Studio" -> "Windows Phone Game (4.0)". Los demás datos son:



Name = HolaMundoXNA
Location = (la que queráis, yo lo puse en...) C:\A_warterrain_A\Ejemplos WP7\HolaMundoXNA\
SolutionName = HolaMundoXNA


A continuación se pide la versión de la aplicación. Seleccionamos Windows Phone 7.1 y damos a Ok.




Por el momento, podemos ver que se han creado dos proyectos, uno para el código y otro para el contenido.

Las fuentes no vienen incorporadas por defecto en XNA, así que vamos a agregar una fuente para poder poner el texto en el juego.

Para ello seleccionamos el proyecto de contenido (Content) con el botón derecho en el explorador de soluciones y seleccionamos en el menú contextual la opción "Add a New Item". Elegimos Sprite Font, poniendo de nombre mySpriteFont.spritefont y pulsa "Add".







Se creará el archivo xml con los datos de la fuente que por defecto es la fuente Segoe.


Vamos a añadir los siguientes atributos a la clase Game1.cs:

string text = "Hola, mundo!";
SpriteFont segoe;
Vector2 textPosition;


Después vamos a modificar el código de la función LoadContent:



A continuación, vamos a modificar el código de la función Draw:

protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.Navy);

spriteBatch.Begin();
spriteBatch.DrawString(segoe, text, textPosition, Color.White);
spriteBatch.End();

base.Draw(gameTime);
}


Este código lo que hace es poner el fondo del dispositivo a color Navy y después escribe una cadena de texto (contenida en la variable text) en la posición textPosition con el color blanco (White).

Pues vamos a ver qué tal ha quedado. Pulsamos en "Debug" -> "Start debugging" arrancaremos el emulador.

Tras un momento en que se ha estado iniciando el emulador, veréis el "Hola, mundo" en el emulador de Windows Phone 7.




La orientación del texto es la del dispositivo. En XNA la orientación por defecto es "landscape" (teléfono tumbado). Al revés que en las aplicaciones en Silverlight cuya orientación por defecto es "portrait" (teléfono de pie).



Descargar el código fuente de este tutorial.

Tutorial desarrollado por Grupo Libre y Extremo (Talavera de la Reina).

2 comments:

  1. Me subraya:

    segoe = this.Content.Load("mySpriteFont");

    y marca el error:

    Error 1 The type arguments for method 'Microsoft.Xna.Framework.Content.ContentManager.Load(string)' cannot be inferred from the usage. Try specifying the type arguments explicitly.

    No se que hacer, estoy trabado ahí

    ReplyDelete
  2. Hola, Omar

    La causa del problema es que el editor había quitado el tipo que se pasaba al load:

    He subido la instrucción en formato imágen para que el editor de Blogspot no me corrija la instrucción mal.

    La instrucción correcta es:

    segoe = this.Content.Load pon_aqui_simbolo_menor_que SpriteFont pon_aqui_simbolo_mayor_que ("mySpriteFont");

    Ya he corregido el tutorial.

    Gracias por comentármelo y te pido disculpa por las molestias.

    Un saludo, Omar.

    ReplyDelete