class Color(h, s=100, v=100)

ライトまたは表面の色。

パラメータ:

彩度の高い色

彩度と明度の値が最大のカラーです。色相の違いだけです。

RED: Color = Color(h=0, s=100, v=100)
_
ORANGE: Color = Color(h=30, s=100, v=100)
_
YELLOW: Color = Color(h=60, s=100, v=100)
_
GREEN: Color = Color(h=120, s=100, v=100)
_
CYAN: Color = Color(h=180, s=100, v=100)
_
BLUE: Color = Color(h=240, s=100, v=100)
_
VIOLET: Color = Color(h=270, s=100, v=100)
_
MAGENTA: Color = Color(h=300, s=100, v=100)
_

彩度の低い色

これらの色は、色相と彩度がゼロです。明度のみが異なります。

これらの色をセンサーで検出する場合、その値は対象物までの距離に大きく依存します。センサーと対象物の距離が一定でないロボットの場合、これらの色のうちの1色のみを使った方がよいでしょう。

WHITE: Color = Color(h=0, s=0, v=100)
_
GRAY: Color = Color(h=0, s=0, v=50)
_
BLACK: Color = Color(h=0, s=0, v=10)

これは、まだごくわずかな光を反射している暗い物体を表しています。

_
NONE: Color = Color(h=0, s=0, v=0)

これは、反射も光もまったくない、真っ暗闇です。

_

独自色の作成方法

この例では、カラープロパティの基本的な使い方と、新しいカラーの定義方法を紹介します。

from pybricks.parameters import Color

# カラーはプリントできる。カラーは Color クラスから取得することも、# 色の測定値を返すセンサーから取得することもできる。
print(Color.RED)

# 色相、彩度、明度のプロパティを読み取ることができる。
print(Color.RED.h, Color.RED.s, Color.RED.v)

# 独自色を作ることができる。彩度と明度はデフォルトで100。
my_green = Color(h=125)
my_dark_green = Color(h=125, s=80, v=30)

# 独自色をプリントすると、その色がどのように定義されたかが正確にわかる。
print(my_dark_green)

# 独自色を組込み色として追加することも可能。
Color.MY_DARK_BLUE = Color(h=235, s=80, v=30)

# このように追加した場合、プリントするとその名前しか表示されない。
# しかし、その属性を読めば、h, s, v を読むことはできる。
print(Color.MY_DARK_BLUE)
print(Color.MY_DARK_BLUE.h, Color.MY_DARK_BLUE.s, Color.MY_DARK_BLUE.v)

この例では Color クラスのより高度な使用例を示しています。

from pybricks.parameters import Color

# 2つのカラーは h、s、v 属性が等しい場合、等しいと言える。
if Color.BLUE == Color(240, 100, 100):
    print("Yes, these colors are the same.")

# カラーをスケーリングして明度を変えられる。
red_dark = Color.RED * 0.5

# カラーをシフトして色相を変更できる。
red_shifted = Color.RED >> 30

# カラーは不変なので、既存のオブジェクトの h、s、v は変更できない。
try:
    Color.GREEN.h = 125
except AttributeError:
    print("Sorry, can't change the hue of an existing color object!")

# しかし、全く新しいカラーを定義することで、組込みカラーを上書きできる。
Color.GREEN = Color(h=125)

# クラスの属性または辞書としてカラーにアクセス、保存できる。
print(Color.BLUE)
print(Color["BLUE"])
print(Color["BLUE"] is Color.BLUE)
print(Color)
print([c for c in Color])

# これにより、既存のカラーをループで更新できる。
for name in ("BLUE", "RED", "GREEN"):
    Color[name] = Color(1, 2, 3)