sábado, 6 de abril de 2019

Creando videojuegos en Rust lang (Parte 12)


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):

No hay comentarios.:

Publicar un comentario