Boardクラス - magu1436/TkinterBoardGame GitHub Wiki

Board クラスとは?

ボードゲームのボード本体の役割を果たすクラスです。
tkinter.Frame を継承して拡張したクラスで、 tkinter.Frame と同様に pack()grid() メソッドなどを用いて配置します。

Attributes

Baoard オブジェクトは以下の属性を持ちます。

属性名 説明 備考
board_size Coordinate ボードのマスの数。オセロなら (8, 8) 代入不可
board_display_size Coordinate 画面上におけるボードの大きさ。 tkinter の大きさに準拠する。 代入不可
board list[list[Piece|None]] ボード上の駒の配置状況を表す二次元リスト。 None はなにも配置されていないことを表す。 代入不可
tiles list[list[Tile|None]] ボード上のタイルの配置状況を表す二次元リスト。 None は配置されていないことを表す。 代入不可
board_canvas tkinter.Canvas ボードや駒、タイルの画像が描画されたキャンバス 代入不可

boardtiles から駒やタイルの配置状況を参照することは可能だが、基本的には後述する get()get_tile() メソッドを使用することが望ましい。

その他、 tkinter.Frame オブジェクトが持つ全ての属性を持つ。

コンストラクタ

コンストラクタでは、以下の引数を受け取れます。

引数名 説明 備考
master Misc ボードが所属するマスター 他の tkinter オブジェクトの master と同義
board_size Coordinatelike ボードのマスのサイズ。オセロなら (8, 8)
background_image PathOrImage ボードの駒を置く部分の画像
board_display_size Coordinatelike 画面に表示する際のボードの大きさ。 tkinter の大きさに準拠する。
grid_image PathOrImage ボードのグリッド画像 optional, 詳細は後述
frame_image PathOrImage ボードのフレーム画像 optional, 詳細は後述
grid_display_width int 画面に表示する際のグリッドの太さ default to 0
init_tile Tile ボードが初期状態で敷き詰められているタイル default to None

backgroud_image grid_image frame_image は画像のパスまたは tkinter が画像として扱える PhotoImage を受け取ることができる。画像のパスを指定する場合は str 型の値を使用する。

配置された駒の情報の取得

ボード上に配置された駒を取得したい場合、 get() メソッドを用いる。また、 get_all_pieces() を用いることで、配置されているすべての駒を格納したリストを得ることができる。

メソッド 引数 説明
get coordinate Coordinatelike 指定した座標にある駒を返す。なにも配置されていない場合、 None を返す。
get_all_pieces ボード上に配置されたすべての駒を格納したリストを返す

駒の配置や除去

ボードに駒を配置したい場合は put() メソッドを使用する。ボード上の駒を取り除きたい場合は take() メソッドを使用する。また、取り除いて別の駒を置く(入れ替える)場合は replace() メソッドを使用する。
配置や除去したとき、自動的にキャンバスの情報が更新される。
駒を配置したとき、駒の auto_resize が True なら、マスの大きさに合わせて自動的に画像がリサイズされる。

メソッド名 引数1 引数2 説明 備考
put coordinate piece 指定の座標に駒を置く すでにその座標に別の駒があった場合、上書きする。
take 指定の座標の駒を取り除いて返す. 返り値は取り除いた駒。なにもなかった場合、 None を返す。
replace piece coordinate 指定の座標にあった駒を取り除いて、新しい駒を置き、もともと置いてあった駒を返す。
take_all_pieces ボード上にあるすべての駒を取り除き、リストに格納して返す

タイルの参照・配置

駒と同様に盤上のタイルを取得、及び盤上に設置できる。
配置や除去したとき、自動的にキャンバスの情報が更新される。
タイルを配置したとき、タイルの auto_resize が True なら、マスの大きさに合わせて自動的に画像がリサイズされる。

メソッド名 引数1 引数2 説明 備考
get_tile coordinate 指定座標にあるタイルを取得する
set_tile tile coordinate タイルを指定座標に設置する
remove_tile coordinate 指定座標にあるタイルを削除する 返り値はなく、もともとあったタイルは削除する。取り出したい場合は replace_tile() を使用する。
replace_tile tile coordinate 指定座標にあるタイルを新しいタイルに取り変える。 tileNone を与えることで、盤上のタイルを取り除いて取得できる。
reset_tiles init_tile 盤上のすべてのタイルを削除し、 init_tile として与えられたタイルをすべてのマスに敷き詰める。 引数を与えなかった場合、単に全てのタイルを削除するメソッドとなる。

その他のメソッド

他にも、ボードゲームを制作する際に便利なメソッドを備えている。

  • is_in_board メソッド

指定の座標がボードの範囲内であるか確かめるためのメソッド。 board_size = (8, 8) のとき、 (-1, 0)(10, 9)False となり、 (2, 1)True となる。

  • get_tkcoor_from_board_coor メソッド
  • get_board_coor_from_tkcoor_in_board メソッド

ボードのマス目を示す座標とウィンドウの座標を示す tkinter の座標を相互に変換するメソッド群。ボードのマス目から tkinter の座標を取得するとき、ボードのマスの左上の角の座標を返す。