l19_terminal_tictactoe

Crates.iol19_terminal_tictactoe
lib.rsl19_terminal_tictactoe
version0.1.2
sourcesrc
created_at2022-04-08 08:42:55.301583
updated_at2022-04-08 09:37:38.824165
descriptionA game of Tic Tac Toe played on the command line; Educational exercise.
homepage
repository
max_upload_size
id564102
size64,112
Jo (L19579)

documentation

README

L19_Terminal_TicTacToe

Purpose: Educational

Testing Cargo.io submissions, versioning, and documentation.

Tests will be written around a game of TicTacToe. See TODO.


Instructions

Environment

Linux, x86_64.

Installing rust

See: Rustup

Installing L19_Terminal_TicTacToe

  git clone https://github.com/L19579/L19_Terminal_TicTacToe.git # Download repo
  cd #insert_repo_directory
  cargo build --release

Launching

  ./target/release/l19_terminal_tictactoe

Controls

  • Game input bindings are set in main.rs. System will adapt to UTF-8 binding inputs 2 chars in length listed chronologically.
  use l19_terminal_tictactoe as l19;
  
  //-- snip
  
  let input_bindings: Hashmap::<&str, usize> = HashMap::from([
      ("a1", 0),
      ("a2", 1),
      ("a3", 2),
      ("b1", 3),
      ("b2", 4),
      ("b3", 5),
      ("c1", 6),
      ("c2", 7),
      ("c3", 8),

  ]);

  let mut gm = l19::GameMaster::new(&input_bindings);
  
  //-- snip
  • Type in input when prompted. This "bot" is just a pseudorandom number generator. It takes effort to lose.

Opener Closer


External links and documentation

Package (0.1.2): Crates.io

Published documentation: Docs.rs


TODO - Complete

  • Randomizer decides which player starts.
  • X is assigned to player 1, O to player 2.
  • Turn based, updated board is printed below. Terminal isn't cleared for simplicity.
  • Player is presented with cell ID and types it in to select position when prompted.
  • X / O are drawn when player/AI make their move.
  • Table state is saved with every move.
  • System checks for wins after positions are submitted.
  • Full code documentation on Docs.rs
  • Top level description on Github; Listed as release.
  • Top level description on Crates.io; Listed as release.
Commit count: 0

cargo fmt