Posts Tagged ‘listas’

C-sharp, logo, logotipo bucles en c# while, for, foreach

Los bucles permiten ejecutar un bloque de código varias veces seguidas. Se utilizan para muchas cosas como por ejemplo recorrer arrays y listas de elementos.

Vamos a ver 3, que son los más utilizados y con estos 3 bucles podremos hacer casi todo lo que queramos con relación a los bucles.

  • While, el más generico y siempre una buena opción.
  • For, muy útil cuando sabes exactamente cuántas veces quieres iterar un bucle.
  • Foreach, muy útil para iterar sobre estructuras de datos, aunque presenta ciertas restricciones.
- Un bucle while ejecutará un trozo de código mientras una condición sea true. La condición es comprobada antes de ejecutar el código.
Hay otro tipo de bucle while que comprueba la condición después de ejecutar el código: do/while.
Los bucles while son los más simples y fáciles de entender, pero además, también son los más versátiles.

Cualquier otro tipo de bucle puede ser reescrito como un bucle while.

Sintaxis:
while (condition)
{
// code
}

Ejemplo:

int numero = 0;
while (numero != 7) //mientras la variable numero sea distinta de 7 hara lo que hay entre paréntesis
{
numero++; //sumamos uno a la variable
}
El bucle For es como el bucle while pero teniendo una inicialización y una modificación de la condición formando parte de la sintanxis
Es particularmente útil cuando sabes cuántas veces quieres ejecutar un bloque de código
Y esto es algo muy habitual, especialmente trabajando con datos.

Las variables declaradas en la inicialización tienen como scope el código dentro del bucle y la condición y modificación, no pueden ser accedidas fuera del bucle.

Sintaxis:
for (initialization; condition; modification)
{
// code
}

Ejemplo:

for(int i=0; i<10; ++i)
El bucle foreach sólo se puede usar con colecciones de objetos.
Itera sobre todos los objetos en orden, desde el elemento 0 al último.
Se pueden definir clases que se pueden iterar con el bucle foreach implementando el interfaz IEnumerable.
No se puede cambiar el tamaño de una colección desde dentro del bucle foreach.
No se puede usar foreach para inicializar o modificar el valor de los objetos en la colección.

Usar foreach puede ayudar al compilador a optimizar e incluso a generar código multithread.

Sintaxis:
foreach (Type nameOfObj in arrayToIterate)
{
// code where we can use nameOfObj
}

Ejemplo:

// Declaro el array de 10 elementos de tipo int y le doy los valores de 1 a 10
int[] myArray = new int[10] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
foreach (int number in myArray)
{  //por cada numero en el array escribo el valor
Console.WriteLine(“myArray has {0} inside”, number);
}

Si en cualquier punto dentro de un bucle se ejecuta un return, se sale de la función.
Hay 2 keywords que se pueden usar dentro de los bucles para modificar su comportamiento por defecto: continue y break.
Continue moverá el puntero de ejecución a la condición del bucle y continuará con la siguiente iteración (si la condición no se cumple), saltándose el resto de código que quede dentro del bucle a ejecutar en esa iteración.
Break saldrá del bucle independientemente de la condición, colocándose en la primera instrucción justo después del bucle

Clase snake serpiente video jueog xna

La clase Snake tiene como público lo que es la serpiente en sí, que son 2 listas en la que una tendrá las texturas de cada cuadrado, y en otra en el mismo índice de lista tendrá la posición de esa textura. Tiene ancho y alto (width y height) que será el tamaño de cada cuadrado de la serpiente. También tiene la dirección en la que va y el estado en el que está  (estado start, normal, o died).

Luego tiene otras variables privadas que nos ayudarán a hacer procesos con la serpiente.

Para este video-juego, incluí los métodos de dibujar un cuadrado y un rectangulo que se explican en este tutorial -> Crear cuadrados y circulos., en la clase de la serpiente.

Cuando se llama al constructor de la clase, es decir cuando la clase principal instacia un objeto de tipo Snake, creamos la serpiente con 2 cuadrados como cuerpo y un circulo como cabeza. También le damos la dirección derecha y el estado Start.

Los demás métodos de movimiento y golpearse contra el muro o autocomerse, los explicaremos con más detalle en los siguietnes posts.

El draw de la serpiente no lo incluí en la propia clase y lo hice en el de la clase principal. Pero simplemente consiste en recorrer la lista de texturas y pintarla con la lista correlativa de posiciones.