【Swift】 リバーシを作りましょう #3 オブジェクトの配置と判定の追加
前回の記事はこちらから
aretoka-koretoka-soretoka.hatenablog.com
オブジェクトを打つため、setObject 関数を作成します。
引数では、打つ予定のオブジェクトタイプと打つ座標をもらいます。
①打てない条件のうち、
> 盤面の範囲外には打てない
をチェックし、条件に当てはまる場合には無処理で返ります。
②打てない条件のうち、
> 既にオブジェクトが打たれている座標には打てない
をチェックし、条件に当てはまる場合には無処理で返ります。
指定座標が " "(空白) 以外の場合、既にオブジェクトが打たれていると判断します。
③打てない条件のうち、
> 別種のオブジェクトをひっくり返せない座標には打てない
をチェックし、条件に当てはまる場合には無処理で返ります。
④指定した座標にオブジェクトを配置します。
// オブジェクトを配置(x:X座標,y:Y座標,type:オブジェクトタイプ(0 ■,!0 ●)) func setObject(x:Int,y:Int,type:Int) { // ① // 範囲外の場合はエラー if(workArray.count <= y || workArray[y].count <= x || y < 0 || x < 0) { print("over position") return } // ② // 既に何かが置かれている場合置けない if(workArray[y][x] != " ") { print("not put1") return } // ③ // オブジェクトが置けるか検索 if searchObject(x,y:y,type:type) { // ④ // オブジェクトを配置 workArray[y][x] = object[type] } else { print("not put2") } print("end") }
以上で完成です。
setObject(6,y:5,type:0)
といった感じで使用することで workArray が書き変わります。
配列の中身を確認するために、以下のような関数を作成して確認してみましょう。
// 配列状態を表示 func printArray() { print("printArray") print("____0____1____2____3____4____5____6____7____8____9__") for var idx0 = 0; idx0 < workArray.count; idx0++ { print(idx0,workArray[idx0]) for var idx1 = 0; idx1 < workArray[idx0].count; idx1++ { } } }
完成したソースコードはこちらから。
確認は Playground や、SwiftStub何かを使用すると楽ちんです。