Coordinateクラス - magu1436/TkinterBoardGame GitHub Wiki
Coordinate
クラスとは?
本モジュールでは、駒やタイルの場所をボード上の座標として扱う。
そこで、座標を扱うクラスとして Coordinate
が実装されている。
Coordinate
クラスは list
のサブクラスであり、インデックス 0
を x座標
、インデックス 1
を y座標
として値を保持している。
また、座標として扱えるよう様々な演算や参照に対応している。
コンストラクタ
Coordinate
クラスには以下の二通りの引数をもつコンストラクタが実装されている。
- 座標の値を保持するコレクション型オブジェクト
- x座標とy座標を個別に受け取る
coor1 = Coordinate((3, -1))
coor2 = Coordinate([3, -1])
coor3 = Coordinate(3, -1)
値の参照
x座標やy座標は、インデックスにリテラルの "x"
"y"
を与えることで、個別に参照できる。
また、 Coordinate.x
Coordinate.y
属性を持ち、直感的にアクセス可能。
coor = Coordinate((3, -1))
print(coor[0]) # 3
print(coor[1]) # -1
print(coor.x) # 3
print(coor.y) # -1
print(coor["x"]) # 3
print(coor["y"]) # -1
また、イテレータ機能も実装しており、 for
文などで回すことができる。
coor = Coordinate((3, -1))
for value in coor:
print(value)
# 3
# -1
演算
Coordinate
オブジェクトは、座標を扱いやすいよう四則演算に対応している。
加算 / 減算
Coordinate
または要素が2つのみの tuple
list
と演算することが可能。
x座標、y座標同士で演算した座標を持つ Coordinate
オブジェクトを返す。
coor1 = Coordinate((3, -1))
coor2 = [2, 4]
sum_coor = coor1 + coor2
print(sum_coor) # [5, 3]
print(type(sum_coor)) # Coordinate
乗算
int
または float
オブジェクトで乗算を行うと、各要素を定数倍することが可能。
また、 Coordinate
または要素が2つのみの tuple
list
と演算することが可能。この場合、各要素同士で計算を行う。
coor = Coordinate((3, -1))
print(coor * -2) # [-6, 2]
coor1 = Coordinate((3, -1))
coor2 = [2, 4]
coor3 = coor1 * coor2
print(coor3) # [6, -4]
除算
int
float
オブジェクトとのみ除算が可能。
切り捨てを行う //
演算にも対応しており、切り捨てを行った要素を持つ座標となる。
coor = Coordinate(4, -2)
print(coor / 2) # [2, -1]
比較
Coordinate
クラスは list
のサブクラスであるため、 ==
演算で各要素が等しいか参照し、座標が等しいかどうかを判定することができる。
その他の比較演算子も、 list
オブジェクトと同様の振る舞いを行う。