M5Stackでボールが永久に動くアニメーションを表示
永久……といっても、いつか動かなくなる日は来るのですが。
M5StackにM5Cloudを導入してPythonプログラミングを始めてみました
Pythonといっても、M5Cloudで使えるのは「Micropython」という、Arduinoなどの非力なマイクロコンピューターで使える簡易的なもの。これにM5Stack用のモジュールを読み込ませることで、M5Stack本体の液晶画面に図形や文字、画像などを表示できるようになっています。
今回作ったのはこんな感じのもの。
ボールが移動し、壁面で反射するのが延々と続くだけです。ええ。かんたんなものですが、はじめてプログラムするよー、という方(自分も含め)には、ちょうどいい練習になるかもです。
左右に操作できるバーを加えればATARIのPONGっぽくなったり、四角いブロックなどを付ければ、ブロック崩しっぽくなったりと、夢が広がりまくったりしませんか?
プログラムは下記です。
from m5stack import lcd import time x = ox = 160 y = oy = 120 px = 1 py = 1 speed = 8 lcd.clear() lcd.setCursor(120, 120) lcd.setColor(lcd.RED) def ballDraw(x,y,ox,oy): lcd.circle(ox, oy, 10, lcd.BLACK, lcd.BLACK) lcd.circle(x, y, 8, lcd.RED, lcd.WHITE) while True: if x > 300 or x < 20: px *= -1 if y > 220 or y < 20: py *= -1 x = x + px * speed y = y + py * speed ballDraw(x, y, ox, oy) time.sleep(0.02) ox = x oy = y
座標を計算し、円を表示するだけではどんどん残像が残って見づらくなります。
そこで、古い円を消して、新しい円を描画するようにしています。
実際に円を描くための座標は「x」「y」とし、描画したあとで「ox」「oy」に格納しておきます。
移動後の座標(x,y)を計算し終えたら、古い座標(ox,oy)を消して、新しい座標(x,y)を描く。
こんな流れてプログラムが動いています。
以上!
この投稿へのトラックバック
トラックバックはありません。
- トラックバック URL
この投稿へのコメント