hatman's blog

プログラミングやLinux(主にUbuntu)について適当に書いていくBlog

制作その1(オセロ)-1

 

こんにちは.

ゲーム作るならまずは動作の少ないボードゲームから選びたい.

ボードゲームの中でもコマが2つしかないオセロなら簡単だろうと予想しゲーム制作第1弾とする.

 

何をつくるにせよまずはルールの確認から軽く全体像を設計する必要がある.

というわけでルールを確認しよう.

Othello Rule;

  • 8×8の盤面.
  • 2人のプレイヤ
  • 黒と白のコマ
  • 同色で挟んだ異色のコマをひっくり返す
  • 最低1枚ひっくり返せる場所にしか置けない
  • 初期スタートは黒2枚白2枚を中心に交互に配置
  • パスの回数に制限は存在しない
  • 盤面が埋まるか双方が打てなくなれば終了
  • 最終時点で自色コマの多い奴が勝利

 

一応調べてて驚いたが日本発祥らしい.

韓国発祥って発言もあったがいつものアレだろう

 

閑話休題

まずは,2種類のコマと盤面の作成,及び初期配置をしよう.

 

いろいろ定義方法はあるだろうが今回は以下のようにしていく

コマ: 黒 = 1  ,  白 = 2

盤面: 場外 = -1  ,  未配置 = 0  ,  黒配置 = 1  ,  白配置 = 2   

これを考慮して盤面を作成するにあたり今回は配列を使っていこうと思う.

配列は10×10(8×8じゃないのは場外をいれる為)を作成し,各所に対応する数字をいれていく.

実装方法は無数にあるが思いつくものをいくつかあげていこうと思う.

 

① : まんま書いちゃう

import numpy as np

board = np.array([[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1],
        [-1, 0, 0, 0, 0, 0, 0, 0, 0,-1],
        [-1, 0, 0, 0, 0, 0, 0, 0, 0,-1],
        [-1, 0, 0, 0, 0, 0, 0, 0, 0,-1],
        [-1, 0, 0, 0, 1, 2, 0, 0, 0,-1],
        [-1, 0, 0, 0, 2, 1, 0, 0, 0,-1],
        [-1, 0, 0, 0, 0, 0, 0, 0, 0,-1],
        [-1, 0, 0, 0, 0, 0, 0, 0, 0,-1],
        [-1, 0, 0, 0, 0, 0, 0, 0, 0,-1],
        [-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]])

 

② : for文を使う

board = [[0 for i in range(10)]for j in range(10)]

for i in range(0,10):

        board[i][0] = board[0][i] = board[i][9] = board[9][i] = -1

 

board[4][4] = board[5][5] = 1

board[4][5] = board[5][4] = 2

他にもいろいろ書き方はあると思うが正直最初に一回しか呼び出さないので①で実装するのが一番確実かなと思ったり思わなかったり.