Saltar a contenido

Ejercicios de C# · Parte 1

La Odiseus atraviesa un cinturón de asteroides

Instrucciones generales

Antes de empezar a programar, asegúrate de que tienes bien configurado el editor de código Visual Studio Code: sigue los pasos de Configuración básica de VSCode.

Puedes revisar también la sección de introducción a Unity para familiarizarte con el motor de videojuegos.

Para realizar estos ejercicios, crea un proyecto Unity 2D y sigue los siguientes pasos:

  1. Crea una carpeta llamada “Images” y copia dentro el fichero “Nave.png” que tienes disponible en la tarea de aules.
  2. Desde Unity, arrastra el recurso de la nave hasta la escena de juego
  3. Crea una carpeta llamada “Scripts” dentro de tu proyecto (como carpeta hija de “Assets”).
  4. Dentro de la carpeta “Scripts”, crea un script para cada ejercicio, con un nombre del tipo “ej01” (por ejemplo).
  5. Asocia el script del ejercicio con el que vayas a trabajar al objeto “Nave”. Para ello simplemente arrastra el script hasta el objeto de juego “Nave” que encontrarás en la ventana de jerarquía.

Un script activo cada vez

Cuando termines con un ejercicio y quieras empezar con otro, no te olvides de desactivar el componente del script del ejercicio anterior. Para ello pulsa en el objeto de juego de la nave en la ventana de jerarquía y, desde la ventana del inspector, desmarca el checkbox que encontrarás a la izquierda del nombre del script.

Componente del script en el inspector, con la casilla para activarlo o desactivarlo

Ejercicio 1-1. Hola Mundo

Debug.Log Dificultad ★☆☆

Escribe un script en C# para que la nave salude por consola cuando arranque el juego utilizando el método Debug.Log.

Pista

Escribe la llamada dentro del método Start, que Unity ejecuta una vez al arrancar el juego. El texto va entre comillas dobles: Debug.Log("...");

Ejercicio 1-2. Hola Mundo 2

string variables Dificultad ★☆☆

  1. Copia el script del ejercicio anterior.
  2. Modifícalo de modo que el mensaje se almacene primero en una variable de tipo string.
  3. Llama a Debug.Log pasando dicha variable como argumento.
Pista

Declara la variable dentro de Start, antes de la llamada a Debug.Log, y pásale su nombre sin comillas.

Ejercicio 1-3. Proyectiles disponibles

int suma Dificultad ★☆☆

Diario de a bordo

Tu nave tiene 2 cañones, cada uno con un número de proyectiles que va de 0 a 10.

  1. Crea una nueva variable de tipo int e inicialízala con la suma del número de proyectiles que tienen ambos cañones.
  2. Muestra en pantalla el número total de proyectiles de la nave.
Pista

Puedes usar una variable para cada cañón y sumarlas en una tercera.

Ejercicio 1-4. Esquivando meteoritos

float división Dificultad ★★☆

Diario de a bordo

Tu nave ha detectado una inminente colisión con un meteorito. Para poder esquivarlo debes mover la nave exactamente el resultado de realizar la división entre los números 13 y 2.

  1. Crea una nueva variable de tipo float llamada movimiento e inicialízala con la división de los números 13 y 2.
  2. Muestra el resultado de la división por pantalla.
  3. Mueve la nave con esta orden:

    transform.Translate(new Vector2(movimiento, 0));
    

Consejo

De momento no hace falta que entiendas lo que hace transform.Translate: lo veremos más adelante.

Salida esperada
6.5
Pista

Si divides 13 / 2 obtendrás 6: la división entre dos enteros es una división entera. Prueba a escribir uno de los números como float, por ejemplo 13f.

Ejercicio 1-5. Cinturón de asteroides

int operadores precedencia Dificultad ★★☆

Diario de a bordo

En esta ocasión tienes que conseguir atravesar un cinturón de asteroides.

  1. Crea una variable de tipo int para almacenar el resultado de cada una de las siguientes operaciones:

    -6 + 3 * 5
    (13 - 2) * 7
    (5 + -2) * (-20 / 10)
    (-75 + 4) / (5 - 4)
    
  2. Muestra el resultado de cada operación por pantalla.

  3. Suma el resultado de todas las operaciones en una variable movimiento y muéstralo también.
  4. Mueve la nave con el resultado con el siguiente comando:

    transform.Translate(new Vector2(0, movimiento));
    
Salida esperada
9
77
-6
-71
9
Pista

Crea una variable para cada operación (op1, op2…). C# calcula primero * y / y después + y -, salvo que uses paréntesis, igual que en matemáticas.

Ejercicio 1-6. Uso de comentarios

comentarios Dificultad ★☆☆

Copia el script del ejercicio anterior e introduce dos comentarios, uno en línea (con //) y otro multilínea (con /* ... */).

Pista

Los comentarios no cambian lo que hace el programa: úsalos para explicar qué hace cada parte del código.

Ejercicio 1-7. HUD de la nave

operadores concatenación % Dificultad ★★☆

Diario de a bordo

El HUD de la nave se ha estropeado y debes improvisar uno nuevo con una pantalla en modo texto: aprende a combinar cadenas para mostrar mensajes complejos.

  1. Crea dos variables de tipo int con dos números cualesquiera.
  2. Muestra el resultado de sumar, restar, multiplicar, dividir y calcular el módulo de ambas variables.
Salida esperada (con 13 y 3)
13 + 3 = 16
13 - 3 = 10
13 x 3 = 39
13 / 3 = 4
13 mod 3 = 1

Concatenar cadenas

Se pueden concatenar cadenas de texto con valores de variables para que aparezcan como una única línea de texto. Por ejemplo:

Debug.Log("El resultado de sumar " + operador1 + " y " + operador2 + " es " + resultado);
Pista

El operador módulo (resto de la división) en C# es %. Los símbolos x y mod que aparecen en la salida son texto: van dentro de la cadena.

Ejercicio 1-8. Las tablas de Telémaco

concatenación operadores Dificultad ★☆☆

Diario de a bordo

En tu nave, la Odiseus, viaja también tu hijo Telémaco. Aunque estéis perdidos por el espacio, necesitas que aprenda las tablas de multiplicar. Crea un script que calcule la tabla de multiplicar de un número y la muestre por el HUD de la nave.

  1. Crea una variable de tipo int e inicialízala con un número del 1 al 9.
  2. Muestra en pantalla la tabla de multiplicar de dicho número.
Salida esperada (con 5)
5 x 1 = 5
5 x 2 = 10
5 x 3 = 15
5 x 4 = 20
5 x 5 = 25
5 x 6 = 30
5 x 7 = 35
5 x 8 = 40
5 x 9 = 45
5 x 10 = 50
Pista

Todas las líneas siguen el mismo patrón: solo cambia el número por el que multiplicas. Recuerda que en una misma concatenación puedes mezclar texto y operaciones.

Ejercicio 1-9. Cambio de rumbo

float media Dificultad ★★☆

Diario de a bordo

La Odiseus ha detectado un planeta con vida en la próxima estrella y decides ir a investigarlo. Rota tu nave para dirigirte al destino elegido.

  1. Crea 4 variables de tipo float e inicialízalas con un valor cualquiera.
  2. Calcula la media de dichos valores y almacena el resultado en una nueva variable float llamada rotation.
  3. Muestra el resultado de calcular la media por pantalla.
  4. Rota tu nave con el siguiente comando:

    transform.Rotate(new Vector3(0, 0, rotation));
    

Nota

La rotación se pasa en grados, de 0 a 360. Si es un valor muy pequeño puede que no notes la rotación.

Pista

La media es la suma de los valores dividida entre cuántos hay. Pon la suma entre paréntesis para que se calcule antes que la división.

Ejercicio 1-10. Temperatura de la nave

int float conversiones Dificultad ★★★

Diario de a bordo

Los sensores de la Odiseus miden la temperatura en grados Celsius, pero parte de la tripulación solo entiende Kelvin o Fahrenheit. Haz que el HUD muestre la temperatura en las tres escalas.

  1. Crea una variable de tipo int e introduce una temperatura en grados Celsius.
  2. Crea dos variables de tipo float para calcular la misma temperatura en grados Kelvin y en grados Fahrenheit, con estas fórmulas:

    Kelvin     = Celsius + 273
    Fahrenheit = Celsius * 18 / 10 + 32
    
  3. Muestra el resultado en pantalla cuando lo hayas calculado.

Cuidado

¡Cuidado con las conversiones implícitas!

Salida esperada (con 25 °C)
25 °C = 298 K = 77 °F
Pista

Con enteros, Celsius * 18 / 10 pierde los decimales (con 21 °C daría 37 en lugar de 37.8). Convierte a float antes de dividir.