【自由研究2日目】Scratchでリバーシゲームを作ろう!
こんばんは、きっしーです。
自由研究1日目の記事では、Scratchのインストールと基本操作を説明しました。2日目では作成するプログラムについて、どんなプログラムにするかを考えていきます。
今回の自由研究で作成するプログラムは「リバーシ」です。
リバーシとは?
リバーシはどんなゲーム?
2人のプレーヤーが、それぞれ黒と白の石を順番に並べていくゲームです。相手の石を自分の石ではさむと、はさんだ石は自分の石にすることができます。最終的に、石の数が多いほうが勝ちとなるゲームです。
きっとみなさんもやったことがあると思います。
完成したプログラム
今回作成するプログラムはこちらから見ることができます。Scratchのサイトで公開しています。
正直プログラミングが初めての方に、リバーシプログラムは難しいところもあります。最初から正しく動くプログラムを作成することはとても難しいものです。
それでもリバーシプログラムを選んだのには理由があります。それは、Scratchに限らずプログラミングで必要な多くの要素をリバーシプログラムで学ぶことができるからです。
公開しているプログラムを見ながら、自分でプログラミングしていく。これが、プログラミングの習得には一番の近道です。リバーシプログラムが作成できれば、ほかの言語でもきっと役に立ちます。
プログラムの計画を立てよう
さっそくプログラミング!の前にちょっと「どういうプログラムを作るか」を考えましょう。
作成するリバーシゲームの内容
今回作成するリバーシは下のような動作をするプログラムにしようと思います。
- 碁盤は8x8マス
- 先手は黒石、後手は白石を使う
- 先手と後手が順番に石を置くマスをクリックする
- クリックした位置に自分の石を置く
- クリックした位置に自分の石を置けない場合は、「ここには置けないよ」とメッセージを表示する
- はさんだ相手の石を裏返し、自分の石に変える
- 自分の番が終わったら、順番を次に渡す
- どこにも置けない場合には、パスして順番を次に渡す
- 先手も後手もどこにも置けなくなったら、ゲーム終了
- 石の数が多いほうが勝ち
このようにゲームの内容を箇条書きにしてみると、思いのほか考えるべきことが多いことに気が付きます。これが実際にプログラミングする際にとても役立ちます。
ご自身で実際に紙でよいので箇条書きに書き出してみるとよいですね。
実のところ、上の箇条書きには不足があります。こういった想定していないケースはバグ(プログラムの欠陥)となります。もれなくダブりなく書き出すことがとても重要です。
プログラミングの作業内容
先ほどゲームの内容を箇条書きで書きました。次にこのゲームの内容をプログラムにするために、どんなプログラミングの作業が必要になってくるか考えていきます。
まずは、見た目の部分です。
- ステージ
- 対局中とゲーム終了時の背景を変える。
- スプライト
- リバーシの盤面を表示する。
- プレーヤの順番の表示(先手の番か、後手の番か)
- 黒石と白石を表示する。
- 黒石の数と白石の数を表示する。
次に、動きの部分です。
- 碁盤は8x8の大きさの2次元配列を使って表現する。
- 値が0なら石が置かれていない状態を表す。
- 値が1なら黒石が置かれた状態を表す。
- 値が2なら白石が置かれた状態を表す。
- 新しいゲームを始める。
- リバーシを初期配置にする。
- マスに石が置けるかをチェックする。
- 置けるマスがなければ次のプレーヤーに順番を渡す。
- 黒石または白石を置く。
- 石を置くマスをクリックする。
- 石が置けるマスであれば石を置く。
- 石が置けないマスであれば「ここには置けないよ」とメッセージを表示する。
- 裏返す石をチェックする。
- 裏返す石であれば裏返す。
- 次のプレーヤーに順番を渡す。
- ゲーム終了
- 先手/後手ともに置けるマスがなければ終了。
実際にプログラミングの作業内容を書き出す際には、その動作をScrratchというプログラミング言語でどうやって実現するか?ということも考えなくてはなりません。
が、今回の記事ではプログラムのソースコードも記載して説明していくので、この部分は省略します。
まとめ
今回の自由研究で作成するプログラムは「リバーシ」について、作成するプログラムの内容とプログラミングの作業内容を列挙しました。
これから作成するプログラムについて、大まかに理解できたかと思います。次回からは実際にプログラムしていきます。
最後まで読んでいただきありがとうございます。
また読んでくださいませ。
そんじゃーね。