0.1.5 • Published 3 years ago

@tmp-evaluation-tasks/rps-game v0.1.5

Weekly downloads
-
License
ISC
Repository
-
Last release
3 years ago

Rock-Paper-Scissors Game

CLI and REST application for Rock-Scissors-Paper game.

Project structure

See: Map.md

Installation

Requirement: Node.js 14+

npm i -g @tmp-evaluation-tasks/rps-game

Usage

To run CLI-version, type the following command:

rps-game

Follow the hints in the terminal to play the game.

If you have a Redis server, running at localhost, you can enable Redis storage, by adding REDIS=localhost environment variable before the command:

REDIS=localhost rps-game

There is also another implementation, built as a web-server with RESTful API.

To run RESTful API server, type the following command:

rps-game-server

If you have a Redis server, running at localhost, you can enable Redis storage, by adding REDIS=localhost environment variable before the command:

REDIS=localhost rps-game-server

To test the API, you need 2 commands:

Start the game

curl -i -b ./cookies.txt -c ./cookies.txt -X POST http://127.0.0.1:3000/start

Make a choice

#Any of the following:
curl -i -b ./cookies.txt -c ./cookies.txt -X POST http://127.0.0.1:3000/choice/scissors
#Or:
curl -i -b ./cookies.txt -c ./cookies.txt -X POST http://127.0.0.1:3000/choice/rock
#Or:
curl -i -b ./cookies.txt -c ./cookies.txt -X POST http://127.0.0.1:3000/choice/paper

Pay attention, that you need to use cookies (-b ./cookies.txt -c ./cookies.txt), because the API uses session.

Also you can test the API using a simple web-interface at http://127.0.0.1:3000 . Alternatively, you can play with my instance at https://rpsgame.boto.space/ .

The API is statefull, it means that you have to /start each time in order to make computer make its choice.

Game session (a state of current game, computer's choice and so on) is stored in Express session (that's why, if you need to test the API, you have to use a client supporting cookies).

The scoreboard is stored in a separate storage (memory or Redis, depending on the value of REDIS environment variable), which is global and has only one instance.

Development

Requirement: Node.js 14+

CLI

To build it locally, clone this repo and run:

npm ci
npm run build
npm start

REST

npm ci
npm run dev:rest