Coordinateクラス - magu1436/TkinterBoardGame GitHub Wiki

Coordinate クラスとは?

本モジュールでは、駒やタイルの場所をボード上の座標として扱う。
そこで、座標を扱うクラスとして Coordinate が実装されている。
Coordinate クラスは list のサブクラスであり、インデックス 0x座標 、インデックス 1y座標 として値を保持している。
また、座標として扱えるよう様々な演算や参照に対応している。

コンストラクタ

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 オブジェクトと同様の振る舞いを行う。