Rust로 작성한 CLI 소코반
IJEMIN/Pusher에서 영감받았습니다.
pusher <STAGE_FILENAME>
명령줄 인수 Arguments:
기본 default
- STAGE_FILENAME:
Path to Stage file.
default: "stage.data"
Features only: argparser
- --default-stage:
Shows default stage.
pusher --default-stage > stage.data
- --help:
Shows help message.
pusher --help
빌드시 features=tui를 사용하지 않은 경우,
명령어를 입력하려면 반드시 엔터를 쳐야합니다.
Must press 'Enter/Return' to input without 'tui' features.
- WASD / HJKL(vi style): 이동 Move
- Q/Esc(TUI Only): 끝내기 Quit
#
:벽 Wall+
:목표 Goal *.
:빈 통로 EmptyO
:공 Ball@
:플레이어 Player
* 공이 목표에 들어가면 $
가 됩니다.
$
는 스테이지 파일에 사용할 수 없습니다.
$
represents 'Ball on goal'. $
cannot be used in stage file.
- 타일들과 줄바꿈 문자만 사용해야 합니다.
Stage file uses tiles and new line only. - 스테이지의 가로 세로 길이는 1 이상이어야 합니다.
Width and height of stage cannot be 0. - 스테이지는 가로 길이가 일정한 직사각형이이야 합니다.
Shape of stage must be rectangle. - 공의 수와 목표의 수는 같아야 합니다.
The number of balls must always same as the number of goals. - 플레이어 수는 오직 하나여야 합니다.
The number of player must be only one.
########
#+####+#
#O##.O.#
#..@...#
########
stage.data
cargo build # without argument parser
cargo build --features tui # same as above with terminal ui
cargo build --features argparser,color # with argument parser and color
cargo build --features argparser,tui,color # with all features
Features
- argparser: 명령줄 인수 파서와 몇몇 명령줄 인수를 추가합니다.
Add argument parser and optional arguments. - tui: Terminal UI with crossterm
- color: ANSI 색상을 활용합니다. Use 16 ANSI Color
docker build -t pusher:<tag> . # Set a arbitrary tag such as: latest
# or
docker build -t pusher:<tag> -f dockerfiles/<dockerfile> .
List of dockerfiles
Dockerfile
Builds TUI enabled color pusher image (~20MB)minimal.dockerfile
Builds minimal color pusher image (~4MB)minimal_tui.dockerfile
Builds TUI enabled minimal color pusher image (~4MB)
docker run pusher:<tag>
# Play custom stage in current dirrectory(pwd)
docker run --rm -it -v $(pwd):/stage pusher:0.1 /pusher stage/<stage filename>
cargo doc --open
See LICENSE.md