2025年10月16日木曜日

ESP32マイコンでビデオゲーム 3(インベーダ表示)

 スペースインベーダのキャラクタを動かす

 画像が表示できることができると、昭和レトロ「スペースインベーダ」のキャラクタを動かしたくなりました。
 キャラクタ「いか」、「かに」、「たこ」の画像を作り、データ化します。

 あとはキャラクタを移動させながら、2つのキャラクタを交互に表示させるを懐かしいキャラクタが画面に表示されます。

#include "img_ika1.h"
#include "img_ika2.h"
#include "img_kani1.h"
#include "img_kani2.h"
#include "img_tako1.h"
#include "img_tako2.h"

LGFX gfx;

void setup() {
  gfx.init();
}
int x=5, y=10;
void loop() {
  gfx.drawPng((std::uint8_t*)img_ika1, sizeof(img_ika1), x+48, y);
  gfx.drawPng((std::uint8_t*)img_ika1, sizeof(img_ika1), x+26, y);
  gfx.drawPng((std::uint8_t*)img_ika1, sizeof(img_ika1), x+4, y);
  gfx.drawPng((std::uint8_t*)img_kani1, sizeof(img_kani1), x+2, y+20);
  gfx.drawPng((std::uint8_t*)img_tako1, sizeof(img_tako1), x, y+40);
  delay(300);
  x++;
  gfx.drawPng((std::uint8_t*)img_ika2, sizeof(img_ika2), x+48, y);
  gfx.drawPng((std::uint8_t*)img_ika2, sizeof(img_ika2), x+26, y);
  gfx.drawPng((std::uint8_t*)img_ika2, sizeof(img_ika2), x+4, y);
  gfx.drawPng((std::uint8_t*)img_kani2, sizeof(img_kani2), x+2, y+20);
  gfx.drawPng((std::uint8_t*)img_tako2, sizeof(img_tako2), x, y+40);
  delay(300);
  x++;
  if( x> gfx.width() ) x = 5;
}
 実行させると、画像のようになります。


 ここまでの準備で、画面に「グラフィックを描く」、「テキストを表示する」、「画像を表示する」ことができるようになりました。






 YouTubeにINVADERが動く様子の動画をアップしました。



0 件のコメント:

コメントを投稿

LEDマトリックス表示装置の設計・製作 9(画像表示)

  LEDマトリックスに画像を表示させるには、いろいろな画像形式を知る必要があります。現在、よく使われるJPG形式やPNG形式は圧縮処理されて保存されています。これに対して、BMP形式やTIFF形式は非圧縮形式で、画像データがそのまま保存されています。このため、ファイルは大きくな...