* Initial commit The client is currently only capable of registering for play * Switch to serde for json serialization * Parse all JSON messages Or rather all messages sent in the game * Switch to rust nightly for serde This mainly solves the whole json parsing problem reasonably well * Move move logic to snake module * Add util functions * Improve error handling in main * Implement utility functions on map struct And keep those that do not deal with the map in the util module * Refactor and improve the maputils * Add test cases to maputil functions Also fix the snake panicking due to an incorrect unwrap * Fix snake panicking due to bad unwrap Missed staging these in the last commit... * Add logging * Add a heart beat to the client Needs some proper error handling however * Handle errors properly in main.rs Also refactor to improve readability * Print what is happening to console * Add readme file Also lock the package versions used and update to latest nightly
28 lines
1.0 KiB
Markdown
28 lines
1.0 KiB
Markdown
# SNAKE CLIENT
|
|
|
|
Do you want the most annoying compiler ever?
|
|
Do you want to constantly think of what is owning what variable?
|
|
Do you want to stare angrily at the screen and wonder what the hell it means that some dumb value can't be moved?
|
|
Then here is the ultimate snake client for you, written for the beautiful language Rust.
|
|
|
|
## Requirements
|
|
|
|
* Rust nightly (I recommend using [rustup](https://github.com/rust-lang-nursery/rustup.rs) to install it)
|
|
* Cargo (should automatically be installed by rustup)
|
|
* Snake Server (local or remote)
|
|
|
|
The packages used have a tendency to sometimes break due to using the nightly build,
|
|
so if it doesn't work try to install specifically: *rustc 1.11.0-nightly (12238b984 2016-06-04)*.
|
|
|
|
## Setup
|
|
|
|
A. Clone the repository: `git clone https://github.com/cygni/snakebot-clients.git`;
|
|
|
|
B. Open: `<repo>/snakebot-rust`;
|
|
|
|
C. Run the snake: `cargo run`;
|
|
|
|
D. Improve the snake: edit `src/snake.rs`, and more specifically `get_next_move`.
|
|
|
|
E. Debugging: see `log/snake.log` for all log output from the snake.
|