最近はpygameを使ってpythonでゲームを作るための勉強をしています。
そこで色の指定をしていたものの値を2倍にしたときエラーが起きました。
この原因はrgbカラーの最大値が255であるのに2倍をすることによってこの値を超えてしまったことによりました。
実際にゲーム中でもこのように、色をランダムで変更させた時にrgb値の最大を超えてしまうことがあるかもしれません。
これでエラーが起きたらゲームが止まってしまって動かず困ってしまいます。
なので、これを回避するプログラムを考えていきます。
1.プログラム
まず、プログラムを見ていきましょう。
1 2 3 4 5 6 |
def saturate_color(color): red, green, blue = color red = min(red, 255) green = min(green, 255) blue = min(blue, 255) return red, green, blue |
関数minを使うことで上限値を指定できるんです。
2.解説
今回はcolor関数のrgb値が255を超えないようにすることが目的なわけなので、color関数をsaturate_colorの引数に設定します。
ここでcolor関数の要素はred, green, blueなので、このそれぞれの要素の最大値を255から超えないように関数minを各要素につけます。
そして、最後にreturnで飽和を直した正しいred,green,blueの値を戻り値として返すように設定しました。
3.最後に
今回抑えておくべきポイントは関数minの使い方でした。
それ以外は基本的に難しいことはなかったのでしっかりと関数minを忘れないようにしていきたいです。
これさえ設定しておけば、ゲームで色の処理関連でエラーが起きにくくなりますね。
僕はエラーが起きるとそれに気づくのに結構な時間がかかる人なので、これからもエラーに関わりそうなポイントは簡潔にまとめていこうと思っています。
このブログは僕が普段学習したことのアウトプット用に使っています。
大学での専攻は物理学、独学でPythonを学習しているためこの2つが主な内容を占めています。
時間がある時に読んでいただけると嬉しいです。
気に入っていただけたらブックマーク、twitter(@tsureblo_nobu)のフォローよろしくお願いします。
twitterではタイムリーな学問に対する思いなどをつぶやいています。
4.参考文献
僕が勉強に使っている本を載せておきます。
①Pythonゲームプログラミング入門