Outline

Revision as of 2022-05-25 09:15

 
--- parent: ../Apps titile: shtris date: 2020-05-21 tags: ゲーム, テトリス --- bashでもなく, zshでもなく, cshでもなく, 純粋なshで動く, テトリスの公式ガイドラインにそった テトリスを作りたい. ![](CURRENT_DIR/Images/shtris.jpg) === # このゲームについて 純粋なshell環境で動作するテトリス ゲーム です. 2009年度版のテトリスのガイドラインにそって製作しました. URL: [Tetris Guideline. Tetris Wiki. accessed at 2020-05-23](https://tetris.fandom.com/wiki/Tetris_Guideline) 単純そうで奥の深いTetris の仕組み や, ShellScript でここまでできる可能性を知ってもらえると幸いです. # システム 実装したシステム: * Hold Queue * Next Queue * Random Generation with Bag System * Score System * Variable Goal System * T-Spin / Mini T-Spin * Back-to-Back Bonus * Extended Placement / Infinite Placement / Classic Lock Down * Super / Classic Rotation System * Changing the Starting Level * Ghost Piece # ダウンロード <https://github.com/ContentsViewer/shtris> # 遊び方 ```bash $ git clone https://github.com/ContentsViewer/shtris.git $ cd shtris $ ./shtris ``` # 動作対応環境 |------------|---| | Linux sh | ✔ | | FreeBSD sh | ✔ | | BusyBox sh | ✔ | | Solaris sh | ✔️ (Almost Works) | # 感想 bashと比較して文法やコマンドの機能が制限されており, 複数のコマンドで足りない機能を補う必要があった. そのため, 同じ機能でもコマンドの実行数が多くなったり, コード設計が複雑になりやすかった. 使えないコマンドオプションで, `read -s -n 1`があったのだが, これは, エコーバックなしで, キーボードから一文字取得という機能を持つ. ゲームのキーボード操作に非常に適していたのだが, sh で使えなかった :-( Solaris sh にも対応したかったが, フレーム速度の問題で断念した. Solaris では, 算術式展開`$(( ))`が使用できなく代わりに, `expr`コマンドを使用しなければならないのだが, このコマンドが致命的に遅く, フレームの速度が十分でなかった. どうしてもゲームのフレーム更新速度がbashと比較して遅くなりやすく, 無駄な処理は致命的で, その緊張感が面白かった :-) 完成に近くなるにつれて, デバッグのつもりが遊んでしまい, 開発速度が遅くなるのを何とかしたい.
Retrieved from "https://contentsviewer.work/Master/ShellScript/Apps/Tetris/Tetris?cmd=history&rev=1653437734"