From 41ca9c3c709425809668f7ff9fbedd4dafdf06a2 Mon Sep 17 00:00:00 2001 From: Christopher Date: Wed, 1 Mar 2023 20:36:01 +1300 Subject: [PATCH] added enterprise to intro, entering quadrant names, and fixed bug in name indexing --- 84_Super_Star_Trek/rust/src/commands.rs | 6 ++-- 84_Super_Star_Trek/rust/src/main.rs | 1 + 84_Super_Star_Trek/rust/src/model.rs | 2 +- 84_Super_Star_Trek/rust/src/view.rs | 40 ++++++++++++++++++++++--- 4 files changed, 42 insertions(+), 7 deletions(-) diff --git a/84_Super_Star_Trek/rust/src/commands.rs b/84_Super_Star_Trek/rust/src/commands.rs index c27c6505..00ab1377 100644 --- a/84_Super_Star_Trek/rust/src/commands.rs +++ b/84_Super_Star_Trek/rust/src/commands.rs @@ -8,10 +8,12 @@ pub fn move_enterprise(course: u8, warp_speed: f32, galaxy: &mut Galaxy) { view::hit_edge(&end); } + if galaxy.enterprise.quadrant != end.quadrant { + view::enter_quadrant(&end.quadrant); + } + galaxy.enterprise.quadrant = end.quadrant; galaxy.enterprise.sector = end.sector; - - // if new_quadrant isnt old quadrant print intro view::short_range_scan(&galaxy) } diff --git a/84_Super_Star_Trek/rust/src/main.rs b/84_Super_Star_Trek/rust/src/main.rs index 8af85b77..2c1c06be 100644 --- a/84_Super_Star_Trek/rust/src/main.rs +++ b/84_Super_Star_Trek/rust/src/main.rs @@ -14,6 +14,7 @@ fn main() { let mut galaxy = Galaxy::generate_new(); + view::enterprise(); view::intro(&galaxy); let _ = prompt("Press Enter when ready to accept command"); diff --git a/84_Super_Star_Trek/rust/src/model.rs b/84_Super_Star_Trek/rust/src/model.rs index dd959220..d79089dd 100644 --- a/84_Super_Star_Trek/rust/src/model.rs +++ b/84_Super_Star_Trek/rust/src/model.rs @@ -106,7 +106,7 @@ impl Add for Pos { impl Display for Pos { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(f, "{} , {}", self.0, self.1) + write!(f, "{} , {}", self.0 + 1, self.1 + 1) } } diff --git a/84_Super_Star_Trek/rust/src/view.rs b/84_Super_Star_Trek/rust/src/view.rs index 62d22eea..774505f5 100644 --- a/84_Super_Star_Trek/rust/src/view.rs +++ b/84_Super_Star_Trek/rust/src/view.rs @@ -1,5 +1,33 @@ use crate::model::{Galaxy, Pos, EndPosition, SectorStatus}; +pub fn enterprise() { + println!(" + + + + + + + + + + + ,------*------, + ,------------- '--- ------' + '-------- --' / / + ,---' '-------/ /--, + '----------------' + + THE USS ENTERPRISE --- NCC-1701 + + + + + + +") +} + pub fn intro(model: &Galaxy) { let star_bases = model.remaining_starbases(); let mut star_base_message: String = "There is 1 starbase".into(); @@ -9,7 +37,7 @@ pub fn intro(model: &Galaxy) { println!("Your orders are as follows: Destroy the {} Klingon warships which have invaded the galaxy before they can attack federation headquarters - on stardate {}. This gives you {} days. {} in the galaxy for resupplying your ship.", + on stardate {}. This gives you {} days. {} in the galaxy for resupplying your ship.\n", model.remaining_klingons(), model.final_stardate, model.final_stardate - model.stardate, star_base_message) } @@ -36,13 +64,17 @@ const SUB_REGION_NAMES: [&str; 4] = ["I", "II", "III", "IV"]; fn quadrant_name(quadrant: &Pos) -> String { format!("{} {}", - REGION_NAMES[(quadrant.0 << 1 + quadrant.1 >> 1) as usize], + REGION_NAMES[((quadrant.0 << 1) + (quadrant.1 >> 2)) as usize], SUB_REGION_NAMES[(quadrant.1 % 4) as usize]) } pub fn starting_quadrant(quadrant: &Pos) { - println!("Your mission begins with your starship located -in the galactic quadrant, '{}'.", quadrant_name(quadrant)) + println!("\nYour mission begins with your starship located +in the galactic quadrant, '{}'.\n", quadrant_name(quadrant)) +} + +pub fn enter_quadrant(quadrant: &Pos) { + println!("\nNow entering {} quadrant . . .\n", quadrant_name(quadrant)) } pub fn short_range_scan(model: &Galaxy) {