movimiento entre localizaciós
This commit is contained in:
parent
376c04297e
commit
2344d4b7ff
@ -1,4 +1,8 @@
|
||||
pub mod rlib;
|
||||
pub mod rlocation;
|
||||
pub mod player;
|
||||
|
||||
use crate::player::Player;
|
||||
|
||||
fn main() {
|
||||
// intro
|
||||
@ -10,14 +14,15 @@ fn main() {
|
||||
|
||||
let mut command = rlib::Command::new();
|
||||
let mut output: String;
|
||||
let mut player = Player{name: "manolo".to_string(), location: 0};
|
||||
|
||||
// main loop
|
||||
while command.verb != "salir" {
|
||||
command = rlib::get_input();
|
||||
output = rlib::update_state(&command);
|
||||
output = rlib::update_state(&mut player, &command);
|
||||
rlib::update_screen(output);
|
||||
}
|
||||
|
||||
// salir
|
||||
println!("Adios.");
|
||||
println!("Adiós.");
|
||||
}
|
||||
|
4
src/player.rs
Normal file
4
src/player.rs
Normal file
@ -0,0 +1,4 @@
|
||||
pub struct Player {
|
||||
pub name: String,
|
||||
pub location: usize,
|
||||
}
|
@ -1,4 +1,6 @@
|
||||
use std::io::{self, Write};
|
||||
use crate::rlocation::{Location, execute_go, execute_look};
|
||||
use crate::player::Player;
|
||||
|
||||
pub struct Command {
|
||||
pub verb: String,
|
||||
@ -42,13 +44,13 @@ pub fn get_input() -> Command {
|
||||
command
|
||||
}
|
||||
|
||||
pub fn update_state(command: &Command) -> String {
|
||||
pub fn update_state(player: &mut Player, command: &Command) -> String {
|
||||
let output: String;
|
||||
|
||||
match command.verb.as_str() {
|
||||
"salir" => output = format!("Saliendo.\nGracias por jugar! :D"),
|
||||
"mirar" => output = format!("Está muy oscuro, no puedes ver nada excepto la luz pulsante."),
|
||||
"ir" => output = format!("Está muy oscuro para moverte."),
|
||||
"ir" => output = execute_go(player, command.noun.to_string()),
|
||||
_ => output = format!("No se como hacer eso."),
|
||||
}
|
||||
|
||||
|
43
src/rlocation.rs
Normal file
43
src/rlocation.rs
Normal file
@ -0,0 +1,43 @@
|
||||
use crate::player::Player;
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct Location<'a> {
|
||||
descripcion: &'a str,
|
||||
tag: &'a str,
|
||||
}
|
||||
|
||||
const LOCATIONS: &'static [Location] = &[
|
||||
Location {descripcion: "Pasillo principal.", tag: "pasillo"},
|
||||
Location {descripcion: "Sala de máquinas.", tag: "maquinas"},
|
||||
Location {descripcion: "Vainas criogénicas.", tag: "vainas"}
|
||||
];
|
||||
|
||||
pub fn execute_look(tag: String) -> String {
|
||||
let salida = "";
|
||||
|
||||
return salida.to_string();
|
||||
}
|
||||
|
||||
pub fn execute_go(player: &mut Player, tag: String) -> String {
|
||||
let salida;
|
||||
|
||||
if tag != "" {
|
||||
for (pos, e) in LOCATIONS.iter().enumerate() {
|
||||
// println!("Element at position {}: {:?}", pos, e.tag);
|
||||
if tag == e.tag {
|
||||
if pos == player.location {
|
||||
salida = "No te puedes acercar mucho más...";
|
||||
} else {
|
||||
player.location = pos;
|
||||
salida = e.descripcion;
|
||||
}
|
||||
return salida.to_string();
|
||||
}
|
||||
}
|
||||
salida = "No encuentro ese lugar..."
|
||||
} else {
|
||||
salida = "No entiendo a donde quieres ir...";
|
||||
}
|
||||
|
||||
return salida.to_string();
|
||||
}
|
Loading…
Reference in New Issue
Block a user