ソースコードの絵
プログラミング言語の勉強方法の一つとして、
簡単なゲームを作ってみることが挙げられます。
石取りゲーム、マインスイーパ、ライフゲーム等、
比較的ルールが単純なゲームを実装してみることです。
 
 
今回紹介するゲームは「三目並べ」です。
ゲームの実装には「JavaScript」を使い、画面の表示には「CSS」を使いました。
(CSSは見た目を整える「スタイルシート言語」であり、「プログラミング言語」ではありませんが…)
 

  三目並べ(tic-tac-toe)とは?
  3×3のマス目に2人が交互に「○」や「×」の印をつけていき、
  先に1列(縦・横・斜め)自分の印を揃えた方が勝ちとなるゲームです。

 
 
作成時には、ゲームルールを整理したり、プレイ画面の設定などを行います。

 ・着手毎に行う処理
 ・リセット時に行う処理(盤面の初期化)
 ・開始時、手番交替時などのシステムメッセージや、それを表示する場所
 ・着手不可能なマスを選んだ場合などのエラーメッセージや、それを表示する場所
 ・先手を黒、後手を白で表示する
 ・盤面の下にリセットボタンを設置し、リセットの確認を行う など

 
 
加えて、今回は次の仕様を追加しました。

 ・各プレイヤーについて、最新の3手しか盤上に残らない
 ・各石には、それぞれの余命を表示する(最初は3)

 
 
よく知られているゲームでも、自分で追加ルールを考えて作ってみると、
ゲームの内容がガラリと変わるかもしれません。
 
ルール説明が簡素に書かれたもの
 
 
プレイ画面を表示しています。
黒の手番で、左列が揃いそうですが…

左上に黒(残1)、左上に黒(残3)、左中は空白、ここで左中に着手すると・・・
 
 
黒が左列中段に着手したところで、
左列上段の石のカウントが0になり、盤上から取り除かれました。
このため、黒は「左列を揃えた」ことになりません。

左中に黒(残3)、左下黒(残2)、左上は空白になった
 
 
空白に左列上段に、白が着手し、左列が揃うのを阻止したところです。
中央の石のカウントが0になり、盤上から取り除かれました。

黒:左中(残3)、左下(残2)、右下(残1);白:左上(残3)、中下(残2)、右上(残1);黒の手番
 
 
ちなみに、この局面から黒が勝つ手順があります。おわかりでしょうか?
 
以上、三目並べについて少しだけ紹介してみました。
他にも、究極の三目並べなど、自分で更なるバリエーションを取り入れて
実装を行うことも考えられます。
 
 
ゲームは勉強の題材として馴染みのあるものだと思います。
自分の選んだ言語でゲームを作ってみませんか?