empezando...

This commit is contained in:
serxoz 2022-09-07 10:52:55 +02:00
commit 376c04297e
6 changed files with 106 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
/target

7
Cargo.lock generated Normal file
View 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
View 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
View 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
View 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
View 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);
}