Está en la página 1de 5

Informática Aplicada a la Educación

Tema: Estructuras de Repetición


Actividades:
1) Copie la siguiente codificación en un proyecto de consola de C#.
2) Hágala funcionar.
3) Identifique las partes de la codificación más relevantes.
4) Explique con notas que hace esa parte de la codificación(señale en la codificación, colóqueles un
número y escriba como nota al pie de página la explicación respectiva).
Nota: Véase que en la codificación puesta están explicados los elementos nuevos que no hemos tratado
antes, el resto todo se ha visto en clase.
Codificación:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace
{
class Program
{
static void Main(string[] args)
{
Console.SetWindowSize(Console.LargestWindowWidth,
Console.LargestWindowHeight);
Console.ForegroundColor = ConsoleColor.White;
Console.BackgroundColor = ConsoleColor.Black;
Console.Clear();

Random Azar = new Random();

string objeto = "├─®─┤";


Console.CursorVisible = false;
Console.ForegroundColor = ConsoleColor.White;

for (int k = 1; k <= 100; k = k + 1)


{
int auxX = Azar.Next(1, Console.WindowWidth);

int auxY = Azar.Next(1, Console.WindowHeight);


Console.SetCursorPosition(auxX, auxY);
Console.Write("♦");
}

Console.ForegroundColor = ConsoleColor.White;

int posX = 0;
int posY = 0;

int dirX = 1;
int dirY = 1;
bool Terminar = false;

1
Informática Aplicada a la Educación

DateTime UltimaVez = DateTime.Now;

int milisegundos = 200;

do
{
if (UltimaVez.AddMilliseconds(milisegundos) < DateTime.Now)
{
UltimaVez = DateTime.Now;

if (posX + 7 >= Console.WindowWidth)


{
dirX = -1;
}
if (posX - 1 <= 0)
{
dirX = 1;
}
if (posY + 2 >= Console.WindowHeight)
{
dirY = -1;
}
if (posY - 1 <= 0)
{
dirY = 1;
}
Console.SetCursorPosition(posX, posY);
Console.Write(" ");

posX = posX + 1 * dirX;


posY = posY + 1 * dirY;

Console.SetCursorPosition(posX, posY);
Console.Write(objeto);
}

if (Console.KeyAvailable)
{
switch (Console.ReadKey(true).Key)
{
case ConsoleKey.Escape:
Terminar = true;
break;
case ConsoleKey.Spacebar:
Console.Write("~*O*~");
break;

2
Informática Aplicada a la Educación
case ConsoleKey.RightArrow:
dirX = 1;
break;
case ConsoleKey.LeftArrow:
dirX = -1;
break;
case ConsoleKey.UpArrow:
dirY = -1;
break;
case ConsoleKey.DownArrow:
dirY = 1;
break;
case ConsoleKey.D:
dirX=0;
dirY=0;
break;
case ConsoleKey.N:
dirX = 1;
break;
case ConsoleKey.A:
milisegundos = milisegundos - 45;
break;
case ConsoleKey.R:
milisegundos = milisegundos + 45;
break;
}
}
} while (!Terminar);

}
}
}
1 En esta parte se declara las medidas de ancho y largo, de la consola, determinando que serán del ancho y
alto de la pantalla del monitor.

2 Aquí determino el color del fondo de la consola, quedando en color blanco, también el color de los
caracteres que se escribirán, siendo negro, además de escribir “Console.Clear();”, para limpiar la pantalla,
y que se cumplan lo anterior escrito, es decir, el color de fondo y de caracteres.

3 Representa un generador de números pseudoaleatorios, que con determinados requisitos creará una
secuencia que distribuirá aleatoriamente lo que escoja para usar este Random, en este caso "♦", y el new me
servirá para que la aletorioridad sea diferente cada vez.

4 En esta parte se declara una variable de tipo cadena y la inicializa con un texto, que es "├─®─┤", lo que
nos da la forma de la nave espacial siendo que objeto siempre se formará por esta cadena de caracteres.

5 (Esta estructura sólo se produce una vez en el programa) Aquí la estructura for declara a “k” como la
variable para guardar los datos y dar los requisitos para que la función Random funcione dentro de esta
estructura, siendo que se inicia con 1 de "♦" y tiene un límite de una cantidad de estas “picas” en 100 o
menos, aleatoriamente comenzando desde el punto 1 en horizontal y vertical, hasta el ancho y alto de la
pantalla de la consola, respectivamente.

6 En esta parte se ha determinado una vez más que el color de los caracteres que se escribirán en la pantalla
será de color blanco, y las ubicaciones horizontales y verticales para el movimiento de objeto ("├─®─┤").

Siendo que se declara las variables posX=0 y dirX=1 que me indica la posición inicial en horizontal (0)
y dirección inicial que se usará para los movimientos horizontales (1), es decir, comenzará en punto 0 en X

3
Informática Aplicada a la Educación
y se moverá hacia la derecha; luego esta posY=0 y dirY=1 que también me indica la posición inicial en
vertical (0) y dirección inicial que se usará para los movimientos verticales (1), es decir, comenzará en
punto 0 en Y, y se moverá hacia la abajo, interaccionando estos datos provocan el efecto del movimiento
diagonal de objeto.

7 En esta parte hacemos función de DateTime para controlar los movimientos de la Nave_espacial,
declaramos con esta función la variable UltimaVez que siendo su nombre referencia de lo que permite hacer,
guarda la ubicación actual o última del objeto, que es lo que quiere decir DateTime.Now. Siendo que después
hacemos uso de esta variable para como se dijo controlar los movimientos del objeto.

También se declara una variable milisegundos que es una medida de tiempo que se tomará en cuenta para
los movimientos del objeto, esto quiere decir que cada lugar que ocupe un movimiento dentro de la
consola será producido en un intervalo de 200 milisegundos.

8 Aquí hacemos uso de un do, una estructura que me permitirá repetir continuamente las acciones que
disponga y que sólo terminará cuando el Terminar deje de ser false, solo posible con alguna condición
como se ve más adelante en la codificación.

Además, dentro de esta estructura mencionada se ha usado un if, una estructura de condición que solicita
que (UltimaVez.AddMilliseconds(milisegundos) < DateTime.Now) debe cumplirse para desarrollarse lo
que esté dentro de la estructura, lo que se puede interpretar como: si un tiempo guardado en UltimaVez más
otro tiempo agregado es menor que tiempo actual, se hará lo siguiente…. .Siendo que esta disposición es
algo lógica pero necesaria para nuestros propósitos., pues un tiempo actual siempre será mayor que un
tiempo guardado que ya pasó.

9 Aquí se ha declarado una vez más, por necesidad, que UltimaVez será siempre tiempo actual, es decir, el
último tiempo vivido y producido mientras funcione el programa.

10 Esta condicional if es la que nos da los límites a los que puede llegar el objeto en el lateral derecho de
la pantalla, siendo que ese posX + 7 hace que la computadora piense imaginariamente que la posición
actual del objeto en horizontal es una que está tocando el lateral, aún estando 7 lugares antes, siendo que si
esta medida es mayor o igual a el ancho de la pantalla se cumple la condición que permite que dirX = -1
ocurra, que hace direccionar el objeto a la izquierda y esto es lo que produce que se regrese antes de tocar
el lateral derecho de la consola.

Lo mismo ocurre con la condicional if (posX - 1 <= 0), solo que este es el limitante para el lateral
izquierdo. Siendo que antes de tocar el lateral dirX = 1 se activa y hace que se dirija hacia la derecha.

11 Esta condicional if es la que nos da los límites a los que puede llegar el objeto en el lateral inferior de
la pantalla, siendo que ese posY + 2 hace que la computadora piense imaginariamente que la posición
actual del objeto en horizontal es una que está tocando el lateral, aún estando 2 lugares antes, siendo que si
esta medida es mayor o igual a el alto de la pantalla se cumple la condición que permite que dirY = -1
ocurra, que hace direccionar el objeto hacia arriba y esto es lo que produce que se regrese antes de tocar el
lateral inferior de la consola.

Lo mismo ocurre con la condicional if (posY - 1 <= 0), solo que este es el limitante para el lateral superior.
Siendo que antes de tocar el lateral dirY = 1 se activa y hace que se dirija hacia abajo.

12 Aquí se declara que en la posición X y Y que esté el cursor, osea el objeto, se escribirá (" "). Y
después se declaran una vez más las medidas de las posiciones de X y Y del objeto, señalando que se
sobrescribirá al objeto, en cada ubicación X y Y, por donde pase objeto.

13 Aquí se hace uso de una estructura if para poder hacer uso del teclado para controlar los movimientos
del objeto, declarando que: si se usan unas teclas se cumplirá lo que esté dentro de la estructura.

14 Dentro de la estructura if se hace uso de la estructura switch para que si al tocar una tecla, esta esta
dentro de un caso de la estructura, se lea la orden de la tecla seleccionada y se proceda a cumplir lo
designado, siendo únicamente si la tecla está dentro de los casos. Y cada caso comienza con un case y

4
Informática Aplicada a la Educación
termina con un break.

Ya dentro de la estructura se dan los primeros casos o opciones, siendo que al tocar la tecla Escape, la
variable Terminar sea verdadera (true), es decir, el juego terminará al tocarla, cerrando la ventana de la
consola. Luego está el caso de la tecla Spacebar, que hace que se escriba "~♥~", y siendo que se comienza
a escribir desde donde está el cursor, que es donde se dibuja el objeto, se comienza a dibujar al derecho de
objeto.

15 Los siguientes casos son las teclas para controlar los movimientos del objeto, siendo cumplidas las
órdenes tal cual tecla que se ha tocado: Derecha, Izquierda, Arriba y Abajo.

16 Aquí se ha colocado el caso/opción de que si se toca la tecla D el objeto se parará, y si se toca la tecla N
se dirigirá a la derecha.

17 Aquí se ha colocado el caso/opción de que si se toca la tecla A el objeto acelerará, y si se toca la tecla R
se alenterizará.

También podría gustarte