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 |
ボードや駒、タイルの画像が描画されたキャンバス | 代入不可 |
board
や tiles
から駒やタイルの配置状況を参照することは可能だが、基本的には後述する 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 |
指定座標にあるタイルを新しいタイルに取り変える。 | tile に None を与えることで、盤上のタイルを取り除いて取得できる。 |
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
の座標を取得するとき、ボードのマスの左上の角の座標を返す。