Programa 6. "pre_hello_ggez6" Enumeraciones: "enums"
Ahora haremos un pequeño programa para ver como funcionan las enumeraciones ("enums"). Las enumeraciones son útiles en videojuegos porque pueden enumerar estados de objectos (dirección 2D: "Norte", "Sur", "Este" u "Oeste") o estados del juego ("Corriendo" o en "Pausa"). De hecho también podemos definir "structs" o incluso "tuple structs" para los enums para guardar datos sobre el estado o definir como se guardarán los estados (coordenadas del ratón) o otros tipos de datos (entes grabados con enteros). Para los enums y sus valores usamos "Carmel case".
En este ejemplo asignaremos algunos enums que usan structs vacios (como etiquetas), tuple structs y structs con valores y luego los imprimiremos. Similar a los structs tenemos que ponerles a todos los enums "#[derive(Debug)]" para poderlos imprimirlos con "{:?}".
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | #[derive(Debug)] enum Direccion { Norte, Sur, Este, Oeste } #[derive(Debug)] enum Raton { ClickDerecho { x: i64, y: i64 }, ClickIzquierdo { x: i64, y: i64 } } #[derive(Debug)] enum Entes { Jugador(i32), Mounstro(i32) } #[derive(Debug)] enum Estado { Corriendo(char), Pausa(char) } fn main() { let direccion_jugador1 = Direccion::Este; let raton_jugador1 = Raton::ClickDerecho {x: 1, y: 2}; let ente_jugador1 = Entes::Jugador(1); let estado_jugador1 = Estado::Corriendo('c'); println!("J1 ¡Dirección {:?}!", direccion_jugador1); println!("J1 ¡Raton {:?}!", raton_jugador1); println!("J1 ¡Ente {:?}!", ente_jugador1); println!("J1 ¡Estado {:?}!", estado_jugador1); println!(); let direccion_jugador2 = Direccion::Norte; let raton_jugador2 = Raton::ClickIzquierdo {x: 6, y: 3}; let ente_jugador2 = Entes::Jugador(2); let estado_jugador2 = Estado::Pausa('p'); println!("J2 ¡Dirección {:?}!", direccion_jugador2); println!("J2 ¡Raton {:?}!", raton_jugador2); println!("J2 ¡Ente {:?}!", ente_jugador2); println!("J2 ¡Estado {:?}!", estado_jugador2); println!(); let direccion_jugador3 = Direccion::Sur; let raton_jugador3 = Raton::ClickDerecho {x: 8, y: 4}; let ente_jugador3 = Entes::Jugador(3); let estado_jugador3 = Estado::Corriendo('c'); println!("J3 ¡Dirección {:?}!", direccion_jugador3); println!("J3 ¡Raton {:?}!", raton_jugador3); println!("J3 ¡Ente {:?}!", ente_jugador3); println!("J3 ¡Estado {:?}!", estado_jugador3); println!(); let direccion_mounstro1 = Direccion::Oeste; let ente_mounstro1 = Entes::Mounstro(1); println!("Mounstro1 ¡Dirección {:?}!", direccion_mounstro1); println!("Mounstro1 ¡Ente {:?}!", ente_mounstro1); println!(); println!("¡Fin del juego!"); } |
Y el resultado de correr el programa anterior es el siguiente:
Navegación:
Primera parte
Siguiente parte
Parte anterior
Fuente (inglés):
- The Rust Book Defining and Enum: https://doc.rust-lang.org/book/ch06-01-defining-an-enum.html
- Rust by Example Enums https://doc.rust-lang.org/1.29.0/rust-by-example/custom_types/enum.html
No hay comentarios.:
Publicar un comentario