Skip to content

joamag/battlerust

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

A Battleship game implementation in Rust 🦀.

Challenge

Create an application to allow a single human player to play a one-sided game of Battleships against ships placed by the computer.

The program should create a 10x10 grid, and place a number of ships on the grid at random with the following sizes:

  • 1x Battleship (5 squares)
  • 2x Destroyers (4 squares)

The player enters coordinates of the form “A5”, where "A" is the column and "5" is the row, to specify a square to target. Shots result in hits, misses or sinks. The game ends when all ships are sunk.

Deployments

Provider Stable URL
Cloudflare True battlerust.joao.me
Cloudflare True battlerust.pages.dev
Cloudflare False master.battlerust.pages.dev

Build & Run

Native

cd frontends/console
cargo build
cargo run

WASM for Web

cargo install wasm-pack
wasm-pack build --release --target=web --out-dir=frontends/web/lib -- --features wasm
cd frontends/web
npm install && npm run build
cd dist && python3 -m http.server

WASM with WASI

rustup target add wasm32-wasi
cd frontends/console
cargo build --release  --target wasm32-wasi
cd ../../target/wasm32-wasi/release
wasmtime battlerust-console.wasm

Raspberry Pi (with Linux)

apt install gcc-arm-linux-gnueabihf
rustup target add armv7-unknown-linux-gnueabihf
cd frontends/console
cargo build --release  --target armv7-unknown-linux-gnueabihf --config target.armv7-unknown-linux-gnueabihf.linker=\"arm-linux-gnueabihf-gcc\"

WASM Console

You can use WebAssembly.sh to play around with the WASI compliant WASM assembly and interact with this Web shell in the same way as you would in your normal OS shell.

In alternative you can use the Wasmtime WASM runtime to run the WASM binary in your local computer.

Build Automation

Build Status crates Status npm Status License