empezando...
This commit is contained in:
commit
376c04297e
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
/target
|
7
Cargo.lock
generated
Normal file
7
Cargo.lock
generated
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
# This file is automatically @generated by Cargo.
|
||||||
|
# It is not intended for manual editing.
|
||||||
|
version = 3
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "reentrada"
|
||||||
|
version = "0.1.0"
|
8
Cargo.toml
Normal file
8
Cargo.toml
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
[package]
|
||||||
|
name = "reentrada"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|
||||||
|
[dependencies]
|
6
README.md
Normal file
6
README.md
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
# Reentrada
|
||||||
|
|
||||||
|
Aventura en texto. Sírveme como práctica para aprender Rust.
|
||||||
|
Seguindo o tutorial: https://www.riskpeep.com/2022/08/make-text-adventure-game-rust-1.html
|
||||||
|
|
||||||
|
|
23
src/main.rs
Normal file
23
src/main.rs
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
pub mod rlib;
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
// intro
|
||||||
|
println!("Bienvenido a Reentrada. Una aventura en el espacio.");
|
||||||
|
println!("");
|
||||||
|
println!("Despiertas en la oscuridad con un fuerte dolor de cabeza.");
|
||||||
|
println!("Un fuerte sonido de alarma machaca tus oídos. No ayuda nada a tu dolor de cabeza.");
|
||||||
|
println!("");
|
||||||
|
|
||||||
|
let mut command = rlib::Command::new();
|
||||||
|
let mut output: String;
|
||||||
|
|
||||||
|
// main loop
|
||||||
|
while command.verb != "salir" {
|
||||||
|
command = rlib::get_input();
|
||||||
|
output = rlib::update_state(&command);
|
||||||
|
rlib::update_screen(output);
|
||||||
|
}
|
||||||
|
|
||||||
|
// salir
|
||||||
|
println!("Adios.");
|
||||||
|
}
|
61
src/rlib.rs
Normal file
61
src/rlib.rs
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
use std::io::{self, Write};
|
||||||
|
|
||||||
|
pub struct Command {
|
||||||
|
pub verb: String,
|
||||||
|
pub noun: String,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Command {
|
||||||
|
pub fn new() -> Command {
|
||||||
|
Command {
|
||||||
|
verb: String::new(),
|
||||||
|
noun: String::new(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn parse(&mut self, input_str: &str) {
|
||||||
|
let mut split_input_iter = input_str.trim().split_whitespace();
|
||||||
|
|
||||||
|
self.verb = split_input_iter.next().unwrap_or_default().to_string();
|
||||||
|
self.noun = split_input_iter.next().unwrap_or_default().to_string();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn get_input() -> Command {
|
||||||
|
// prompt
|
||||||
|
println!("");
|
||||||
|
print!("> ");
|
||||||
|
io::stdout().flush().unwrap();
|
||||||
|
|
||||||
|
let mut input_str = String::new();
|
||||||
|
|
||||||
|
io::stdin()
|
||||||
|
.read_line(&mut input_str)
|
||||||
|
.expect("Error leyendo...");
|
||||||
|
println!("");
|
||||||
|
|
||||||
|
// parse
|
||||||
|
let mut command = Command::new();
|
||||||
|
command.parse(input_str.as_str());
|
||||||
|
|
||||||
|
// return
|
||||||
|
command
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn update_state(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."),
|
||||||
|
_ => output = format!("No se como hacer eso."),
|
||||||
|
}
|
||||||
|
|
||||||
|
// return
|
||||||
|
output
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn update_screen(output: String) {
|
||||||
|
println!("{}", output);
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user