C言語で2048を作る
エスケープシーケンスを使って、ターミナルでも色変えたり太字にしたり、なんやらかんやらができることを知ったので、2048を作ってみました。
エスケープシーケンス
このサイトにエスケープシーケンスが一通りまとめられていたので、備忘録。
bash:tip_colors_and_formatting - FLOZz' MISC
このサイトに載っているものだと、bashで表示するならCだろうがシェルスクリプトだろうがJavaだろうがなんでも使えます。 環境次第では使えないエスケープシーケンスもあるけど、基本的にVT100互換なら全部使えるらしい。
いや、めんどくさくね?
C言語でいちいちprintfにあんなこと書くのはしんどいし、タイポでバグ埋め込みそうなので、cursesという便利なライブラリがあります。
当たり前だけどC標準じゃなくてUNIX系でしか使えません。
Windowsは知らん。 Windows APIでGUI作ってどうぞ。
名前の由来はエスケープシーケンスを使うと呪文(curse)みたいになるかららしい。
想像以上に色々できるのですごいですよ。
現在はncursesという新しいのがあるので、そっちを使いましょう。
ncurses.hを使おう
ncurses.hに含まれる関数とかマクロの説明はめんどくさいので、自分が勉強に使ったサイトを貼っておきます。
この辺を一通り読んだ後は、ncurses.h自体を読むと良いかも。マクロの細かい動きが読めますよ。
2048の概要
ようやく本題に入ります。
2048なので、少なくとも
タイルの移動
タイルの重ね合わせ
タイルの生成
ゲームオーバーの検知
の4つの要素が必要です。
加えて今回は、
スコア計算機能
セーブ&ロード機能
リトライ機能
中断機能
ランキング機能
も実装しました。
GitHub - shumon84/2048: 2048 for C/C++
とりあえずcloneしてmakeすれば"2048"という名前の実行ファイルが出来上がるはずです。
遊び方
READMEを読んでね。 矢印キーかwasdで移動できるので、それさえ覚えていればひとまずプレイできると思います。