Skip to content

Instantly share code, notes, and snippets.

@Nakanoin19
Last active April 24, 2025 05:29
Show Gist options
  • Save Nakanoin19/b58ed3ec749a7c31d3cb31a60624881f to your computer and use it in GitHub Desktop.
Save Nakanoin19/b58ed3ec749a7c31d3cb31a60624881f to your computer and use it in GitHub Desktop.
Tiny Sleepiness Game
use text_io::read;
use rand::random_range;
#[derive(Clone, Copy)]
struct Player {
hp: i64,
sleepiness: i64,
}
impl Player {
fn new() -> Player {
Player {
hp: 128,
sleepiness: 96,
}
}
fn print(&self) {
println!("HP: {}", if self.hp <= 0 { 0 } else { self.hp });
println!("Sleepiness: {}", if self.sleepiness <= 0 { 0 } else { self.sleepiness });
println!();
}
fn decrease(&mut self, matter: usize) {
let r = random_range(1..=100);
match matter {
0 => {
println!("Coffee");
let e = if r == 1 {
println!("No effect!");
0i64
} else if r <= 90 {
4i64
} else {
println!("Critical hit!");
8i64
};
self.hp -= 4;
self.sleepiness -= e;
self.print();
},
1 => {
println!("Energy Drink");
let e = if r <= 10 {
println!("No effect!");
0i64
} else if r <= 80 {
8i64
} else {
println!("Critical hit!");
16i64
};
self.hp -= 12;
self.sleepiness -= e;
self.print();
},
2 => {
println!("Drug");
let e = if r <= 30 {
println!("No effect!");
0i64
} else if r <= 70 {
12i64
} else {
println!("Critical hit!");
24i64
};
self.hp -= 16;
self.sleepiness -= e;
self.print();
},
3 => {
println!("== Coffee ==");
println!("Effect: 4");
println!("Damage: 4");
println!("Critical rate: 10%");
println!("Effective rate: 99%");
println!("== Energy Drink ==");
println!("Effect: 8");
println!("Damage: 12");
println!("Critical rate: 20%");
println!("Effective rate: 90%");
println!("== Drug ==");
println!("Effect: 12");
println!("Damage: 16");
println!("Critical rate: 30%");
println!("Effective rate: 70%");
println!();
},
_ => (),
}
}
}
fn main() {
let mut p = Player::new();
p.print();
while p.hp > 0 && p.sleepiness > 0 {
println!("0) Coffee\n1) Energy Drink\n2) Drug\n3) Help\n4) Quit");
print!("Use?: ");
let matter: usize = read!();
println!();
if matter == 4 {
println!("Quit");
break;
}
p.decrease(matter);
if p.hp <= 0 {
println!("You Died!");
} else if p.sleepiness <= 0 {
println!("You Win!");
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment