Python電卓を使ってみよう 第5回 Python電卓でカラーグラフィック

2025年1月17日(金)12時3分 マイナビニュース


今回はPythonでカラーグラフィックを扱ってみましょう。fx-CG50はPython言語で自由にグラフィック画面に描画することができます。処理速度が遅い場合もありますが、リアルタイムゲームを作るわけではないので十分実用的ではないかと思います。ただし、用意されているのは本当に最小限の機能だけなので線を描画したり円を描く場合はすべて自前で作成する必要があります。
○点を表示する
 最初に基本的な描画である点を表示してみます。電卓でグラフィックを扱うにはcasioplotモジュールを読み込ませる必要があります。
 casioplotモジュールはimportを使って読み込ませます。以下のようにモジュールを読み込ませてしまえば後は様々な機能(メソッド)を呼び出すことができます。以下のような指定をした場合、これまでに使ったimportのようにモジュール名を先頭に付ける必要はありません。randomモジュールも同じようにできますが、これは後ほど。
from casioplot import *
 casioplotモジュールを読み込ませたら最初に画面を消去します。これは以下のように指定します。()内には何も指定するものはありません。すでに画像が描かれている場合は全部消えます。
clear_screen()
 画面を消したら次に点を表示してみます。点を表示するにはset_pixel()を使います。set_pixel()は最低限点を表示するX,Y座標を指定する必要があります。例えば以下のように指定するとX座標の10、Y座標の0に点が表示されます。
set_pixel(10,0)
点の色を指定するにはX,Y座標の後にRGB順に配列またはタプル形式で値を指定します。RGBの値は0〜255の範囲になります。値が大きいほど明るい点になります。例えば以下のように指定するとX座標の10、Y座標の0に緑色の点が表示されます。
set_pixel(10,0,(0,255,0))
 実際にはset_pixel()を実行しただけでは画面は切り替わりません。描画した内容を液晶画面に転送する必要があるからです。そのための命令がshow_screen()です。
 ここまでの手順をプログラムにすると以下のようになります。以下のプログラムは画面の左上に赤い点を表示します。
from casioplot import *
clear_screen()
set_pixel(0,0,(255,0,0))
show_screen()
 これまでと同様にパソコン側でファイルを作成しておき、電卓に転送します。ファイル名はG1.pyとしてあります。実行すると図のようになります。わかりにくいかもしれませんが、左上に赤い点が表示されています。
 なお、座標系は公式のマニュアルにも記載されていますが、一般的なパソコン画面と同じで左上が原点(0,0)で右下にいくに従って座標値が大きくなります。右下の座標は(383,191)になります。
○横線を表示する
 グラフィック描画は点が表示できれば、どうにでもなります。今度は横線を表示してみます。横線はX座標を1つずつ変えて点を表示していくだけです。これは繰り返しを行うforを使えば簡単です。
 プログラムは以下のようになります。
from casioplot import *
clear_screen()
for x in range(256):
set_pixel(x,0,(255,0,0))
show_screen()
 プログラムはパソコンで作成しておきG2.pyという名前のファイルにして保存し電卓に転送します。電卓側で実行すると以下のようになります。一番上に赤い線が表示されます。なお、右端まで表示したい場合はrange(256)の256を384にします。
○全画面一色で塗りつぶす
 次に全画面を塗りつぶしてみます。これは先ほどの横線のプログラムを縦方向にも表示するようにするだけです。注意点としては字下げを間違えないということです。
 なお、最後にまとめて表示した方が高速なのですが、実際に実行してみるとかなり低速です。より高速に画面を塗りつぶすのであれば文字の|を大きめに表示して埋め尽くす方法もあります。ただし、左側に余白ができてしまうので、その部分は点を描画するなど他の方法で表示する必要があります。
 話が少しそれましたがset_pixel()で全画面一色で塗りつぶすプログラムは以下のようになります。プログラムはパソコンで作成しておきG3.pyという名前のファイルにして保存し電卓に転送します。実行が終わるまでには時間がかかるので少し気長に待つ必要があります。
from casioplot import *
clear_screen()
for y in range(192):
for x in range(384):
set_pixel(x,y,(255,0,0))
show_screen()
○ランダムに点を表示する
 次に画面にランダムに点を表示してみます。乱数を使うにはrandomモジュールが必要です。以前にも使いましたが、今回は以下のようにしてモジュールを読み込ませます。このようにすると整数の乱数値を生成する場合randint()とだけ書くだけで済みます。(以前の連載でのプログラムと比較してみてください)
from random import *
 乱数でX,Y座標を生成し、set_pixel()の中に指定します。
 実際のプログラムは以下のようになります。プログラムはパソコンで作成しておきG4.pyという名前のファイルにして保存し電卓に転送し実行します。ランダムな位置に赤い点が表示されます。
from casioplot import *
from random import *
clear_screen()
for i in range(1000):
x=randint(0,383)
y=randint(0,192)
set_pixel(x,y,(255,0,0))
show_screen()
 赤色で表示するだけでは物足りないので今度は色もランダムにしてみます。RGBの値を乱数値にするだけですので難しくはありません。
 実際のプログラムは以下のようになります。プログラムはパソコンで作成しておきG5.pyという名前のファイルにして保存し電卓に転送し実行します。ランダムな位置にカラフルな点が表示されます。
from casioplot import *
from random import *
clear_screen()
for i in range(1000):
x=randint(0,383)
y=randint(0,191)
r=randint(0,255)
g=randint(0,255)
b=randint(0,255)
set_pixel(x,y,(r,g,b))
show_screen()
○グラデーションを表示する
 今度はもう少し見栄えのするものを表示してみましょう。見栄えがするものということでグラデーションを表示してみます。ここでのグラデーション表示はX,Y座標値に応じて赤色と緑色を変化させます。set_pixel()の色指定部分を修正するだけでできます。手軽な割に綺麗な結果を得られます。
 実際のプログラムは以下のようになります。プログラムはパソコンで作成しておきG6.pyという名前のファイルにして保存し電卓に転送し実行します。
from casioplot import *
from random import *
clear_screen()
for y in range(192):
for x in range(256):
set_pixel(x,y,(x,int(y*1.3),0))
show_screen()
.

関連記事(外部サイト)

マイナビニュース

「電卓」をもっと詳しく

「電卓」のニュース

「電卓」のニュース

トピックス

x
BIGLOBE
トップへ