From caa9c2b1d3653da8f50d0dc9aa9d39cefec6fbe8 Mon Sep 17 00:00:00 2001 From: Jaroslav Henner <1187265+jaryn@users.noreply.github.com> Date: Wed, 24 Aug 2022 07:13:12 +0200 Subject: [PATCH 1/4] Add Github Action based Continuous integration --- .github/workflows/continuous-integration.yml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 .github/workflows/continuous-integration.yml diff --git a/.github/workflows/continuous-integration.yml b/.github/workflows/continuous-integration.yml new file mode 100644 index 0000000..4ad42d8 --- /dev/null +++ b/.github/workflows/continuous-integration.yml @@ -0,0 +1,15 @@ +name: CI + +jobs: + build_and_test: + name: Rust project + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: actions-rs/toolchain@v1 + with: + toolchain: stable + - uses: actions-rs/cargo@v1 + with: + command: build + args: --release --all-features \ No newline at end of file From 3e75b913d7bfe7f768ecadc76f0e210239390a15 Mon Sep 17 00:00:00 2001 From: Jaroslav Henner <1187265+jaryn@users.noreply.github.com> Date: Wed, 24 Aug 2022 07:19:57 +0200 Subject: [PATCH 2/4] Add event to "on" to fix the continuous integration. --- .github/workflows/continuous-integration.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/continuous-integration.yml b/.github/workflows/continuous-integration.yml index 4ad42d8..7303be5 100644 --- a/.github/workflows/continuous-integration.yml +++ b/.github/workflows/continuous-integration.yml @@ -1,3 +1,5 @@ +on: push + name: CI jobs: From 27cacfb11583a5650c35833ff7eeb1ab96ebecc6 Mon Sep 17 00:00:00 2001 From: Jaroslav Henner <1187265+jaryn@users.noreply.github.com> Date: Wed, 10 Aug 2022 11:55:56 +0200 Subject: [PATCH 3/4] Add more options to the first action. This patch splits code into multiple functions so it allows more code reuse. It is a step to resolve the #1 --- src/main.rs | 38 +++++++++++++++++++++++++++++++------- 1 file changed, 31 insertions(+), 7 deletions(-) diff --git a/src/main.rs b/src/main.rs index 7e23f6d..d6ca366 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,5 +1,4 @@ use easyinput::input; -use std::process::abort; use std::process::exit; use std::thread::sleep; use std::time::Duration; @@ -8,6 +7,32 @@ fn fake_main() -> i32 { 0 } +fn friendship_ofer(exit_code :&i32) { + println!("Chlapík zůstal na místě a začal ti nabízet přátelství."); + println!("a) Odmíneš."); + println!("b) Uděláš krok k němu."); + + let user_input = input(""); + if user_input == "a" { + println!("Vyhrál jsi, neboť to byl kanibal"); + vyhra(&exit_code); + } else if user_input == "b" { + println!("Prohraál jsi"); + prohra(&exit_code); + } +} + +fn vyhra(exit_code: &i32) { + println!("Vyhrál jsi"); + sleep(Duration::from_millis(10000)); + exit(*exit_code); +} + +fn prohra(exit_code: &i32) { + println!("Prohraál jsi"); + sleep(Duration::from_millis(10000)); + exit(*exit_code); +} fn main() { let exit_code = fake_main(); println!("Čus vítej u nějaké divné hry"); @@ -15,6 +40,7 @@ fn main() { println!("Vyber jednu z možností(napiš a nebo b)"); println!("a) Dáš mu vodu"); println!("b) Necháš ho"); + println!("c) Poodstoupíš krok vzad"); println!(""); let user_input = input(""); if user_input == "a" { @@ -29,9 +55,7 @@ fn main() { println!(""); let user_input = input(""); if user_input == "a" { - println!("Prohraál jsi"); - sleep(Duration::from_millis(10000)); - exit(exit_code); + prohra(&exit_code) } else if user_input == "b" { println!( "Udělals dobře jelikož by jsi prohrál, zůstals na svobodě. \ @@ -42,14 +66,14 @@ fn main() { println!("b) Utkáš se s nimi v boji"); let user_input = input(""); if user_input == "a" { - println!("Vyhraál jsi"); - sleep(Duration::from_millis(10000)); - exit(exit_code) + vyhra(&exit_code) } else if user_input == "b" { println!("Zemřel jsi"); sleep(Duration::from_millis(10000)); exit(exit_code); } } + } else if user_input == "c" { + friendship_ofer(&exit_code) } } From b1711e31da82ddd2a50e6ddd89a1dafb2438fd21 Mon Sep 17 00:00:00 2001 From: Jaroslav Henner <1187265+jaryn@users.noreply.github.com> Date: Sun, 14 Aug 2022 15:33:05 +0200 Subject: [PATCH 4/4] Making the game non-zero-sum game. --- src/main.rs | 98 ++++++++++++++++++++++++++++++++--------------------- 1 file changed, 59 insertions(+), 39 deletions(-) diff --git a/src/main.rs b/src/main.rs index d6ca366..69a29b0 100644 --- a/src/main.rs +++ b/src/main.rs @@ -23,57 +23,77 @@ fn friendship_ofer(exit_code :&i32) { } fn vyhra(exit_code: &i32) { - println!("Vyhrál jsi"); + println!("Vyhrál jsi. Můžeš pokračovat."); sleep(Duration::from_millis(10000)); - exit(*exit_code); + main() } -fn prohra(exit_code: &i32) { - println!("Prohraál jsi"); +fn boj(exit_code: &i32) { + println!("Došlo k nějakému souboji. Vše trvalo věčně a spoustu "); + println!("lidí dělalo zbytečnou práci při zajišťování důkazů při soudním procesu."); + println!("Stálo to spousty peněz. Zemřel jsi ty a/nebo tvůj protivník vyčerpáním."); + println!("Byl zmařen život. Hra končí."); sleep(Duration::from_millis(10000)); - exit(*exit_code); + exit(exit_code); } + +fn policie(exit_code: &i32) { + println!("Divný člověk u policie řekne, že je vše tvoje vina. Žene to k soudu. Neznáš zákony. Co uděláš?"); + println!("a) Utkáš se s ním ve smírčím řízení."); + println!("b) Vzdáš to bez boje."); + println!("c) Vezmeš si právníka a jdeš k soudu."); + boj(&exit_code) +} + fn main() { let exit_code = fake_main(); - println!("Čus vítej u nějaké divné hry"); - println!("Jsi v poušti je u tebe nějakej divnej chlapík"); + println!("Čus vítej u dobré hry"); + println!("Jsi v poušti je u tebe nějakej divnej chlapík. Chce vodu"); println!("Vyber jednu z možností(napiš a nebo b)"); - println!("a) Dáš mu vodu"); - println!("b) Necháš ho"); - println!("c) Poodstoupíš krok vzad"); + println!("a) Dáš mu všechnu svoji vodu."); + println!("b) Necháš ho."); + println!("c) Poodstoupíš krok vzad."); println!(""); let user_input = input(""); - if user_input == "a" { - println!("Umřel jsi nemáš co pít"); - sleep(Duration::from_millis(10000)); - exit(exit_code); - } else if user_input == "b" { - println!("Udělal jsi dobře neboť to byl kanibal"); - println!("Začne tě pronásledovat. Co uděláš? (napiš jedno z písmen)"); - println!("a)Utkáš se s ním v souboji"); - println!("b)Utečeš"); - println!(""); - let user_input = input(""); - if user_input == "a" { - prohra(&exit_code) - } else if user_input == "b" { - println!( - "Udělals dobře jelikož by jsi prohrál, zůstals na svobodě. \ - Ale hledá tě banda kanibalů, chtějí pomstu.\ - Co uděláš?" - ); - println!("a) Nahlásíš to policii"); - println!("b) Utkáš se s nimi v boji"); + + match user_input { + // The division was valid + Some(x) => println!("Result: {x}"), + + "a" => { + println!("Nezbyla ti žádná voda. Všechnu vypil"); + println!("Divný člověk je ti vděčný, protože teď vidí, že znáš cenu života."); + println!("Divný člověk je teď veselý. Řekne ti, že blízko je studna s vodou."); + sleep(Duration::from_millis(10000)); + exit(exit_code); + } + "b" => { + println!("Udělal jsi dobře neboť to byl určitě kanibal!"); + println!("Začne tě pronásledovat. Co uděláš? (napiš jedno z písmen)"); + println!("a)Utkáš se s ním v souboji"); + println!("b)Utečeš"); + println!(""); let user_input = input(""); if user_input == "a" { - vyhra(&exit_code) + boj(&exit_code) } else if user_input == "b" { - println!("Zemřel jsi"); - sleep(Duration::from_millis(10000)); - exit(exit_code); + println!( + "Udělals dobře jelikož by jsi prohrál, zůstals na svobodě. \ + Ale hledá tě banda kanibalů, chtějí pomstu.\ + Co uděláš?" + ); + println!("a) Nahlásíš to policii"); + println!("b) Utkáš se s nimi v boji"); + let user_input = input(""); + if user_input == "a" { + policie(&exit_code) + } else if user_input == "b" { + boj(&exit_code) + } } - } - } else if user_input == "c" { - friendship_ofer(&exit_code) - } + "c" => { + friendship_ofer(&exit_code) + }, + _ => println!("God mode activated (:") + vyhra(&exit_code); }