プログラミングU 第4回

プログラミング課題


石置きゲーム m×n
m×nの枡からなる盤に,2人のプレイヤーが交互に黒石●と白石○を置いていく.
すでに石があるマスおよびその隣には置けない(ななめ隣は置ける)
置けなくなった方が負け(最後に置いた方が勝ち)である.
m,nが共に奇数あるいは共に偶数はつまらない(なぜか?)
m=1 でもnが大きいと結構面白い.
自由課題:後手必勝となるnをすべて求めなさい.
オセロの盤を利用して,7×8,5×8くらいが適当な大きさである.
必修課題:5×8のプログラムを作りなさい.

プログラムは徐々にふくらませていきます.
だいたい,次のように進めていったらいいでしょう.
  1. データ構造と表示方法を決める.
    IshiOki1
    画面上は5×8ですが,内部ではひとまわり大きく7×10にすると便利です. 一番外側の表示されない部分には,置けないことを意味する要素 Dame を入れます.
  2. 交互に石を置くようにする.
    IshiOki2
    石を置くだけでなく.置いたマスの隣のマスに,もう置けないように Dame を入れます. とりあえず,4手置いたら終わることにします.
  3. 置く場所がなくなるまで続けるようにする.
    IshiOki3 空のマスの個数を記憶する変数 KaraNoKazu を用意して, 盤を初期化するときに同時に初期設定して, 石を置くたびに埋まった分を減らします.
  4. コンピュータと対戦するようにする.
    IshiOki4
    コンピュータが置く場所は,1〜KaraNoKau の乱数を用いてでたらめに選びます.

提出期限
5月6日18時20分
提出方法
[ファイル|名前をつけて保存]をクリックする.
新しいフォルダーを作り,フォルダー名を学生証番号(半角大文字,例 2ASS1234)にする.
そのフォルダーの中に,プロジェクト名を Ishi学生証番号(例 Ishi2ASS1234)にして保存する.
フォルダーの外に戻る.
フォルダーを右クリックして,現れたメニュの「送る」をクリックする.
提出用(大矢)に送る.