C言語で2048を作る

エスケープシーケンスを使って、ターミナルでも色変えたり太字にしたり、なんやらかんやらができることを知ったので、2048を作ってみました。

エスケープシーケンス

このサイトにエスケープシーケンスが一通りまとめられていたので、備忘録。

bash:tip_colors_and_formatting - FLOZz' MISC

このサイトに載っているものだと、bashで表示するならCだろうがシェルスクリプトだろうがJavaだろうがなんでも使えます。 環境次第では使えないエスケープシーケンスもあるけど、基本的にVT100互換なら全部使えるらしい。

いや、めんどくさくね?

C言語でいちいちprintfにあんなこと書くのはしんどいし、タイポでバグ埋め込みそうなので、cursesという便利なライブラリがあります。

当たり前だけどC標準じゃなくてUNIX系でしか使えません。

Windowsは知らん。 Windows APIGUI作ってどうぞ。

名前の由来はエスケープシーケンスを使うと呪文(curse)みたいになるかららしい。

想像以上に色々できるのですごいですよ。

現在はncursesという新しいのがあるので、そっちを使いましょう。

ncurses.hを使おう

ncurses.hに含まれる関数とかマクロの説明はめんどくさいので、自分が勉強に使ったサイトを貼っておきます。

curses

ncurses

マウス

この辺を一通り読んだ後は、ncurses.h自体を読むと良いかも。マクロの細かい動きが読めますよ。

2048の概要

ようやく本題に入ります。

2048なので、少なくとも

  1. タイルの移動

  2. タイルの重ね合わせ

  3. タイルの生成

  4. ゲームオーバーの検知

の4つの要素が必要です。

加えて今回は、

  • スコア計算機能

  • セーブ&ロード機能

  • リトライ機能

  • 中断機能

  • ランキング機能

も実装しました。

GitHub - shumon84/2048: 2048 for C/C++

とりあえずcloneしてmakeすれば"2048"という名前の実行ファイルが出来上がるはずです。

遊び方

READMEを読んでね。 矢印キーかwasdで移動できるので、それさえ覚えていればひとまずプレイできると思います。