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