第13回 シンプルなリバーシを作ってみました。
<配列変数>
BRD[X,Y] 盤面
WRI[X,Y] 画面上の盤面
<グローバル変数>
BSX、BSY 盤面を書くときの枠のマージン
P 現在の手番 1が先手 2が後手
COM コンピュータの手番
SW 思考の切り替え用のスイッチ 0が最小優先 1が最大優先
<関数>
BW 盤面を書く 先手の駒が白、後手の駒が青
HIT タッチした箇所に駒が置ければ置く
THINK 駒の置ける場所を探す、フラグによっては駒を置く
PC 指定座標に駒を置けるか、フラグによっては駒を置く
LINECK 指定位置から指定方向に駒を返せるか、フラグによっては駒を返す
GET 指定位置の駒の状態を返す 0なし 1先手の駒 2後手の駒
CHG 手番を替える
<メインループ>
プレイヤーの手番ならHIT処理
コンピュータならTHINKで駒を置く、置いた後にプレイヤーが次に置けるかを判定
ともに駒を置く場所がなければ終了処理
<作成手順>
最初は盤面を書くところから
次にタッチした場所の判定
駒を返す判定、処理 ちらつき対策に画面上の盤面の配列データを追加
THINKの作成、最小になる位置に置く
お互いにパスで終了になる処理を追加、最後は上画面に表示
お互いの駒の数の計算とタイトル表示を追加
BEEP音とBGMの処理の追加
THINKに最大になる手を追加して48手目以降は最大になる位置に置くように変更
こんな感じで盛りつけてます。
アルゴリズムは最低限備えているレベルです。
ひっくり返せない固定地の判定、先の読みを入れると、もう少し強くなります。
プログラム作成時、置くを「うつ」と記述しています。
デバッグの用の操作は簡単タッチペンを適当に動かすだけでどんどん手が進みます。
<配列変数>
BRD[X,Y] 盤面
WRI[X,Y] 画面上の盤面
<グローバル変数>
BSX、BSY 盤面を書くときの枠のマージン
P 現在の手番 1が先手 2が後手
COM コンピュータの手番
SW 思考の切り替え用のスイッチ 0が最小優先 1が最大優先
<関数>
BW 盤面を書く 先手の駒が白、後手の駒が青
HIT タッチした箇所に駒が置ければ置く
THINK 駒の置ける場所を探す、フラグによっては駒を置く
PC 指定座標に駒を置けるか、フラグによっては駒を置く
LINECK 指定位置から指定方向に駒を返せるか、フラグによっては駒を返す
GET 指定位置の駒の状態を返す 0なし 1先手の駒 2後手の駒
CHG 手番を替える
<メインループ>
プレイヤーの手番ならHIT処理
コンピュータならTHINKで駒を置く、置いた後にプレイヤーが次に置けるかを判定
ともに駒を置く場所がなければ終了処理
<作成手順>
最初は盤面を書くところから
次にタッチした場所の判定
駒を返す判定、処理 ちらつき対策に画面上の盤面の配列データを追加
THINKの作成、最小になる位置に置く
お互いにパスで終了になる処理を追加、最後は上画面に表示
お互いの駒の数の計算とタイトル表示を追加
BEEP音とBGMの処理の追加
THINKに最大になる手を追加して48手目以降は最大になる位置に置くように変更
こんな感じで盛りつけてます。
アルゴリズムは最低限備えているレベルです。
ひっくり返せない固定地の判定、先の読みを入れると、もう少し強くなります。
プログラム作成時、置くを「うつ」と記述しています。
デバッグの用の操作は簡単タッチペンを適当に動かすだけでどんどん手が進みます。