= 第一回なでしこでリバーシ(オセロ)初期画面を表示する
{{{
!変数宣言が必要
}}}
はエラーをなでしこが教えてくれる
大きなプログラムを作るときには便利です。
今回はこの記述を入れてエラーがコンパイルのときに分かるようにします。
{{{
#盤の大きさの設定
枠幅とは整数。枠幅は40。
左余白とは整数。左余白は20。
上余白とは整数。上余白は30。
}}}
盤の大きさが最初の母艦の大きさに収まるようにこれくらいにしました。
== 局面
現在局面はリバーシの現在の局面を保持する変数です。
{{{
現在局面とは局面。
現在局面を盤描画。
}}}
で現在局面というオブジェクトを用意し
その状態を画面に表示します。
{{{
■
}}}
はなでしこでグループを定義する記号です。
{{{
■局面とは
}}}
で局面グループを定義しています。
局面はリバーシの状態すべてを保持します。
後で追加していきますが、白と黒どちらの手番であるか?
石をひっくり返す処理や置ける場所かの判定などもここに入れていきます。
今回は黒石と白石が8×8マスにどのように配置されているかを保持する
配置という変数を用意しました。
作る~というのはこの型を宣言したときに呼ばれる手続きです。
リバーシの初期配置の設定をしています。
黒石を黒、白石を白、空になっているのを空と表現しています。
リバーシゲームを始める前に最初に石を置いた状態になるようにします。
{{{
配置は、
「空,空,空,空,空,空,空,空,{改行}」&
「空,空,空,空,空,空,空,空,{改行}」&
「空,空,空,空,空,空,空,空,{改行}」&
「空,空,空,黒,白,空,空,空,{改行}」&
「空,空,空,白,黒,空,空,空,{改行}」&
「空,空,空,空,空,空,空,空,{改行}」&
「空,空,空,空,空,空,空,空,{改行}」&
「空,空,空,空,空,空,空,空」。
}}}
カンマと改行で区切ることによって
対象局面→配置\縦,横
の形式でマスの状態を取得することができます。
例えば、
現在局面→配置\3,4は「白」になります。
== 盤描画
なでしこでは四角と円という命令で図形を描くことができます。
縦、横という繰り返しのための変数を用意して
マス目ごとに処理します。
四角は黒、白、空にかかわらず、必ず書きます。
リバーシのボードの枠部分になります。
{{{
線太さは1
線色は黒色。
}}}
で指定した色と太さになります。
円は白石のときは塗り色を白にし
黒石のときは塗り色を黒にします。
空の場合は円は描きません。
ボードの大きさは8×8ですので
{{{
横で0から7まで繰り返す
縦で0から7まで繰り返す
}}}
0~7を繰り返すことによって8マスを描きます。
== 実行結果
[[Thumb(2017-06-23_17h36_53.png, float=checked)]]
== 今回までの全ソース
{{{
!変数宣言が必要
#盤の大きさの設定
枠幅とは整数。枠幅は40。
左余白とは整数。左余白は20。
上余白とは整数。上余白は30。
現在局面とは局面。
現在局面を盤描画。
■局面とは
・配置
・作る~
配置は、
「空,空,空,空,空,空,空,空,{改行}」&
「空,空,空,空,空,空,空,空,{改行}」&
「空,空,空,空,空,空,空,空,{改行}」&
「空,空,空,黒,白,空,空,空,{改行}」&
「空,空,空,白,黒,空,空,空,{改行}」&
「空,空,空,空,空,空,空,空,{改行}」&
「空,空,空,空,空,空,空,空,{改行}」&
「空,空,空,空,空,空,空,空」。
●盤描画({グループ}対象局面を)
線太さは1
線色は黒色。
横とは整数。
縦とは整数。
横で0から7まで繰り返す
縦で0から7まで繰り返す
塗り色は白色。
#ます目を描く
横×枠幅+左余白,縦×枠幅+上余白から(横+1)×枠幅 + 1 +左余白,(縦+1)×枠幅 + 1+上余白へ四角。
石とは文字列。石は対象局面→配置\縦,横
#白石を描く
もし石が「白」なら
塗り色は白色。
横×枠幅 + 2 +左余白,縦×枠幅+2+上余白から(横+1)×枠幅+左余白-2,(縦+1)×枠幅+上余白-2へ円。
#黒石を描く
もし石が「黒」なら
塗り色は黒色。
横×枠幅 + 2 +左余白,縦×枠幅+2+上余白から(横+1)×枠幅+左余白-2,(縦+1)×枠幅+上余白-2へ円。
}}}
[第二回なでしこでリバーシ(オセロ)マウスでクリックしたところに石を置く。]