プログラミング

pythonでゲームに色の変化を加えたい!画像に色の変化を加えるプログラムを解説

今日も今日とてpythonのモジュールであるpygameを使ってプログラミングの勉強をしているわけですが、またまた困ったことが起きました!

 

ゲームに色の変化がないからつまらない!!

 

色の変化がないゲームなんてつまらないな〜、、、と思ってしまったので、今回は色の変化を加えるプログラムを勉強しました。

 

このコードを時間を追って動くようにすれば、マインクラフトで燃えたゾンビが段々と本来のゾンビの色に戻るような変化をゲームに加えられます。

 

マインクラフト?は?知らん??という人はこちらの動画でチェックしてください!


それではいきましょう!

 

1.プログラム

全体の核になる関数を見てみましょう。

色を混ぜるための関数なのでblend_color関数としています。

 

これを利用して自分で色を混ぜれるようにしたプログラムがこちら。

 

 

 

2.実行結果

こんな感じのウィンドウが出てきたら成功です!

それでは解説行ってみましょう!

 

 

3.解説

最初の5行はいつも通りなのでここでは割愛

 

ここは混ぜる変化の最初の色と終わりの色を設定しています。

今回は2つの色の間で変化を加えるのでcolor1とcolor2を設定しました。

factorはそれをどれくらいの割合で混ぜるのかを決めるためのものです。

 

ここで、先ほど紹介したblend_color関数が出てきます。

color1,color2の要素をそれぞれred1,red2,red3とする部分が関数内の1,2行目。

それを3~5行目で各要素ごとに混ぜ合わせています。blend_factorが変化することによって各色の値が変化します。

例えばblend_factor=0.5だったらcolor1とcolor2のちょうど間の値が返される仕組みです。

そして最終行で、混ぜ合わされた結果の各色の要素が返されるようになっています。

 

そしてwhile文の中身

 

最初の3文はいつも通りなので割愛 (ゲームを作るなら毎度おなじみの無限ループ)

 

ここはスクリーン上の背景色を設定、今回は白なので全部255にしました。

 

draw.polygon、draw.circle共に図形を描くためのものです。

.polygon …  多角形

.circle … 円

このように描く図形の名前になっています。

そして各要素について

まずpolygonの要素は

(場所, 色, 頂点の位置)

となっています。ここで頂点の位置まで一度に指定すると見づらくなるので、triに各頂点の値を代入してそれを頂点を決めるための要素としています。

circleの要素は

(場所, 色, 中心の位置, 半径)

となっています。

ただし、今回は少し複雑で中心の位置を動かすことによって混ぜる割合を設定するので割合を表すfactorに円を移動できる距離の639.0をかけています。

これでx方向の移動でfactorを変更できるようになりました。

 

1行目でx,yをマウスの場所から得られるようにします。

そして、get_pressedでマウスを押した時に値を代入できるようにしています。

今回はxの値だけ変化させたいので、配列の最初を表す[0]を置いています。

そして3行目でfactorの値をxの場所で変化できるようにし,

最後にwindowの名前をset_captionを使って決めています。factorの倍率によってwindowの名前の倍率が変わるように%.3fに代入できるようにしました。

 

そしてcolorにblend_color関数から得られる値を代入し,

その色を表す範囲をdraw.rectの範囲で描けるようにしました。

rectは長方形を描きます。rectangleが長方形の英単語なのでそこから来ています。

 

最終行はいつも通り指示をscreen上に出力するためのものです。

 

4.最後に

今回は今までよりも少し難し目のものにチャレンジしたのですごく長いコードになってしまいました。

 

しかし、一行ずつしっかりと追っていけばきっちり理解することができました!また一歩進歩です!!

 

このブログは僕が普段学習したことのアウトプット用に使っています。

 

大学での専攻は物理学、独学でPythonを学習しているためこの2つが主な内容を占めています。

 

時間がある時に読んでいただけると嬉しいです。

 

気に入っていただけたらブックマーク、twitter(@tsureblo_nobu)のフォローよろしくお願いします。

 

twitterではタイムリーな学問に対する思いなどをつぶやいています。

 

5.参考文献

僕が勉強に使っている本を載せておきます。

 

①Pythonゲームプログラミング入門

 

②はじめるPython!ゼロからのゲームプログラミング



スポンサーリンク

-プログラミング
-, , ,

Copyright© 高校から大学への橋渡し , 2020 All Rights Reserved Powered by AFFINGER5.