1.Hola Mundo XNA.

3 04 2008

Esto es cosa de buscar en San google y encontrar, no pensaba hacer el hola mundo en xna pero me acorde que una vez hize un hola mundo en java y que se movia , bueno eso ya resulta mas atractivo je, esto a primeras es un asunto deprimente ,porque lo digo , porque te dices a ti mismo :hice esto ,para esto no mas, pero bueno a medidas que vayas practicando te daras cuenta que haces cosas mas complejas y mas entretenidas.

Empezemos…

Una ves que tienen todo instalado podemos proseguir , acuerdense del link de todo lo que le deje en un articulo anterior q les deje.
Instalacion

Les dejo el Link de mi compañero ahi esta mas claro que el agua de todos los primeros pasos para la generacion de un proyecto. Proyecto XNA

Y ahora les dejo el source.

using System;
using System.Collections.Generic;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Net;

/* Bueno para los que no saben y tan recien aprendiendo, using
es importar una libreria en nuestro codigo , es como decir: oye
emprestame esto que lo voy a necesitar, Se lo solicitamos al
framework, el framework es el marco de trabajo que nos entrega
variadas funcionalidades*/

/*****Microsoft.Xna.Framework*****
    Ofrece clases de juego común que se necesita, como
temporizadores y los bucles del juego.

 ****Microsoft.Xna.Framework.Audio***
   Contiene bajo nivel de interfaz de programación de
   aplicaciones (API) de los métodos que pueden cargar
   y manipular XACT-proyecto creado y los archivos de
   contenido para reproducir audio.

****Microsoft.Xna.Framework.Graphics*****
   Contiene bajo nivel de interfaz de programación de
   aplicaciones (API) de los métodos que aprovechan las
   capacidades de aceleración de hardware para mostrar
   objetos 3D.

***Microsoft.Xna.Framework.Input*****
  Contiene las clases para recibir el aporte de teclado,
  el ratón y dispositivos de Xbox 360 Controller.

***Microsoft.Xna.Framework.Net****
  Contiene clases que implementan el apoyo a Xbox
  LIVE, multijugador,  y la creación de redes para el
  Marco de juegos XNA.

***Microsoft.Xna.Framework.Storage***
  Contiene clases que permiten la lectura y escritura
  de archivos.
 **/
namespace Hola_mundo_X_Y
{

 /*La palabra clave namespace se utiliza para declarar un ámbito.
     Este ámbito permite organizar el código y proporciona una
     forma de crear tipos globalmente únicos.*/

 public class Game1 : Microsoft.Xna.Framework.Game
 {

   // Esta es la clase base del juego
   GraphicsDeviceManager graphics;

  //Con este objeto administras los dispositivos
  graficos SpriteBatch spriteBatch;

 /* Permite a un grupo de sprites que se
    expedirá con la misma configuración.
   Namespace: Microsoft.Xna.Framework.Graphics
   Assembly: Microsoft.Xna.Framework
   (en microsoft.xna.framework.dll)*/
        Vector2 posicionPalabra;
        
        /*Define un vector con dos componentes;
        X-Componente e Y-Componente.
        Namespace: Microsoft.Xna.Framework
        Assembly: Microsoft.Xna.Framework
       (en microsoft.xna.framework.dll)*/
        SpriteFont arial;

        //nuestra fuente
        const int velocidadPalabra = 5;

        //una variable entera y constante
        string saludo = "Hola Mundo";

        //una variable cadena
        public Game1()
        {

        //inializador de los componentes.
            graphics = new GraphicsDeviceManager(this);
            Content.RootDirectory = "Content";
        }
        protected override void Initialize()
        {

        // logica de iniciación
        //Variables de puntajes y objetos del juego
        //No inicies nada grafico en este lugar

            posicionPalabra.X = 50;
            posicionPalabra.Y = 50;
            base.Initialize();
        }

        protected override void LoadContent()
        {

        // instanciando SpriteBatch, para ya poder
       // empezar a dibujar.
     spriteBatch = new SpriteBatch(graphics.GraphicsDevice);
         arial = Content.Load("arial");

        }

  protected override void UnloadContent()
  {

  // Elimina todo contenido q no pertenesca
  //a ContentManager.
  }
  protected override void Update(GameTime gameTime)
  {
     KeyboardState keyboard = Keyboard.GetState();
    teclado(gameTime);

  //funcion teclado
if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed||
				keyboard.IsKeyDown(Keys.Escape))
   {
       // si queremos salir de la ventana con Esc.
       this.Exit();
   }

   base.Update(gameTime);

   //Este se llama cuando el juego se Dibuja.
   }
        protected void teclado(GameTime gameTime)
        {

            // controlador de teclado
            KeyboardState estadoTeclado = Keyboard.GetState();

            // estado de nuetro teclado ,
           //el metodo GetState nos recolecta el estado de
            //nuestro teclado
      Keys[] teclapulsada = estadoTeclado.GetPressedKeys();

  // todos los eventos de teclado los guardamos en Keys[].

      foreach (Keys tecla in teclapulsada)
         {

      //repite un grupo de instrucciones incluidas
       // en el bucle para
          //cada elemento de una matriz o de un objeto collection
         // en este caso Keys[].
         if (tecla == Keys.Left)
         {
         posicionPalabra.X -= velocidadPalabra;

        //disminiyendo--   
        }
        if (tecla == Keys.Right)
        {
        posicionPalabra.X += velocidadPalabra;

        //aumentando++
        }
         if (tecla == Keys.Up)
        {
        posicionPalabra.Y -= velocidadPalabra;

        //disminiyendo--
        }

       if (tecla == Keys.Down)
       {
       posicionPalabra.Y += velocidadPalabra;

       //aumentando++
       }

       if (tecla == Keys.Escape)
       {
       this.Exit();

       //cierre del programa
       }
     }
   }
   protected override void Draw(GameTime gameTime)
   {

   //Metodo de pintado
     graphics.GraphicsDevice.Clear(Color.CornflowerBlue);
     spriteBatch.Begin();
     spriteBatch.DrawString(arial, saludo+
                                   "("+posicionPalabra.X+"
                                 ,"+ posicionPalabra.Y+")",
                             posicionPalabra, Color.Black);
     spriteBatch.End();
     base.Draw(gameTime);
   }
  }
}

bueno despues de todo este codigo veran algo como esto:

Seguiremos por mas cosas que ver .Les dejo los archivos adjuntos, lo cual para ver este pequeño proyecto, tienen que tener el XNA Games Studio 2.0 Redistributable y XP con sp2( servipack 2) .

aqui los links de descarga.

rar

Hola mundo X_Y

XNA Games Studio 2.0 Redestributable.

Emmm probe todo esto en el pc de mi hermano , no me ha funkado , bueno lo dejo de tarea para despues, la ideas es hacer un instalador en donde vaya todo empaquetado , si alguien sabe me avisa en un post, pero si tienes todo instalado y lo pruebas con el Visual C# , no tendreis problemas.

Bueno me despido, hasta la proxima , practiquen harto!!! La practica hace al maestro, bytes.