Inicio > Mis cosas, XNA > Tutorial [Entrega 4]: Añadiendo enemigos

Tutorial [Entrega 4]: Añadiendo enemigos

Continuamos con la siguiente entrega del tutorial. Llegados a este punto, tenemos a una nave que disipara. La nave se mueve con las teclas de dirección y dispara pulsando la tecla de dirección arriba. Pero…. ¿a qué dispara? Hoy introduciremos los enemigos para que sirvan de diana,😄.

image

Mira el tutorial después del salto.

Así que sigues interesado en XNA y el ejemplo del Space Invaders, eh? Pues aquí tienes como meter los enemigos.

 

Clase Enemigo.cs

Al igual que hicimos con la clase “Nave.cs”, vamos a crear una nueva clase donde encapsular métodos y atributos necesarios para el enemigo.

Atributos

Como atributos vamos a tener los mismos que e la nave: el sprite de la nave, la posición, y el disparo de los enemigos y la textura del disparo de los enemigos.

  1         private Vector2 pos; //posicion del enemigo
  2         private Texture2D textura; //textura del enemigo
  3          
  4         private Disparo disp; //disparo
  5         private Texture2D texturaDisparo; //Textura del disparo

 

 

Y las propiedades para cada atributo:

 

  1         public Vector2 Posicion 
  2         { 
  3             get { return pos; } 
  4             set { pos = value; } 
  5         } 
  6          
  7         public Texture2D Textura 
  8         { 
  9             get { return textura; } 
10             set { textura = value; } 
11         } 
12
13         public Disparo Disparo 
14         { 
15             get { return disp; } 
16             set { disp = value; } 
17         } 
18
19         public Texture2D TexturaDisparo 
20         { 
21             get { return texturaDisparo; } 
22             set { texturaDisparo = value; } 
23         }

 

Vamos a ver ahora que métodos necesita, aunque supongo que ya te imaginarás que necesita prácticamente los mismo métodos que nuestra clase “Nave.cs”

 

Métodos

 

  1         /// <summary>
  2         /// Constructor por defecto del enemigo
  3         /// </summary>
  4         public Enemigo()
  5         {
  6             pos = new Vector2(400,100);
  7         }
  8
  9
10         /// <summary>
11         /// consturctor sobrecargado del enemigo donde le damos una pos inicial
12         /// </summary>
13         public Enemigo(Vector2 posicion)
14         {
15             pos = posicion;
16         }
17
18         /// <summary>
19         /// Comprueba el teclado y mueve la nave segun las teclas pulsadas
20         /// </summary>
21         public void actualiza()
22         {
23              //De momento nuestro enemigo no hace nada 
24         }
25
26
27
28         /// <summary>
29         /// Pinta la nave y el disparo si lo tiene
30         /// </summary>
31         /// <param name="batch"></param>
32         public void Draw(SpriteBatch batch)
33         {
34             batch.Draw(textura, pos, Color.White);
35
36             //Pintamos el disparo
37             if (disp != null)
38             {
39                 batch.Draw(disp.Textura, disp.Posicion, Color.White);
40             }
41         }

 

Ahora podemos introducir nuestros enemigos en el juego. Vamos a ver como los introducimos.

 

Clase “Game1.cs”

Como queremos tener unos cuantos enemigos en la pantalla (solo uno seria muy aburrido), vamos a crearnos una nueva lista donde meteremos a nuestros enemigos.

  1 ArrayList enemigos;

 

Y en el método Initialize() inicializaremos el array:

 

  1        protected override void Initialize()
  2         {
  3             // TODO: Add your initialization logic here
  4             nave = new Nave();
  5             enemigos = new ArrayList();
  6
  7
  8             base.Initialize();
  9         }

 

 

 

El método LoadContent() es el que más tela tiene, así que lo voy a comentar:

  1             //Creamos los enemigos y los metemos en el arraylist
  2             int numeroEnemigos = 5;
 
Con esta variable le decimos el numero de enemigos que queremos ver en la pantalla, en este caso 5.
  3             float X = 275;
  4             float Y = 100
 

Estas dos variables son las coordenadas de donde queremos que se pinte el primer enemigo. En este caso, al ser 5 enemigos, le voy a decir que el primero se pinte a la izquierda para que el conjunto quede centrado en la pantalla.

Ahora, con un bucle, creamos los enemigos, metiendo una separación de 50pix entre cada uno, y los metemos en la lista de enemigos.
  6             for (int i = 0; i < numeroEnemigos;i++)
  7             {
  8                 Vector2 pos = new Vector2(X, Y);
  9                 Enemigo e = new Enemigo(pos);
10                 enemigos.Add(e);
11                 X += 50;
12             }
13             
 
Ahora, para cada enemigo de la lista, tenemis que decirle que texturas vamos a cargar. En este caso, todos los enemigos tienen la misma textura, y el disparo es el mismo que dispara nuestra nave.
14             //cargamos las texturas del enemigo
15             foreach(Enemigo e in enemigos)
16             {
17                 e.Textura = Content.Load<Texture2D>("enemigo");
18                 e.TexturaDisparo = Content.Load<Texture2D>("disparoNave");
19             }

 

Por cierto, aquí os dejo el sprite del enemigo:

enemigo

enemigoBIG

Si le dais a” botón derecho/guardar imagen como” os podéis guardar el sprite.

 

Ahora queda pintar a los enemigos en la pantalla. Nota: El método update() me lo salto porque de momento los enemigos no hacen nada.

Pues al igual que con la nave, tenemos que decirle a todos los enemigos que se pinten. Para ellos, recorremos la lista con un bucle “foreach” dela siguiente manera:

 

  1             foreach (Enemigo e in enemigos)
  2             {
  3                 e.Draw(spriteBatch);
  4             }

 

 

Y ya está. Ya tenemos a 5 enemigos en nuestra pantalla. Si quieres puedes ir jugando con las posiciones iniciales de los enemigos, meter mas filas de enemigos, etc. hasta que escriba el siguiente tutorial, donde haremos que los enemigos se muevan!!!

Y como siempre, el código fuente del tutorial:

 

down Descargar código fuente

 

 

 

Si tienes alguna duda con el tutorial, puedes preguntármela en el foro: http://www.foro.xna-tutorial.com/viewtopic.php?f=4&t=4

Un saludo a todos!

Categorías:Mis cosas, XNA Etiquetas: , ,
  1. Aún no hay comentarios.
  1. No trackbacks yet.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: