#include "SPI.h"
#include "Adafruit_GFX.h"
#include "Adafruit_ILI9341.h"
#include "sprites.h"
#define TFT_DC 9
#define TFT_CS 10
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);
int x = 100;
int y = 30;
void drawOneSprite(int x, int y, uint16_t* spr, int width, int height) {
int length=width*height;
tft.startWrite();
tft.setAddrWindow(x,y,width,height);
for (int n=0; n<length; n++) {
tft.SPI_WRITE16( pgm_read_word( &spr[n] ) );
}
tft.endWrite();
}
void clearOneSprite(int x, int y, int width, int height, unsigned int fon) {
int length=width*height;
tft.startWrite();
tft.setAddrWindow(x,y,width,height);
for (int n=0; n<length; n++) {
tft.SPI_WRITE16( fon );
}
tft.endWrite();
}
void init_mas(){
for (int i=0; i<10; i++) {
mas[i].x = 30 + i*15;
mas[i].y = 50;
mas[i].w = SPRITE_W;
mas[i].h = SPRITE_H;
}
}
void setup() {
tft.begin();
tft.setRotation(1);
tft.println("SpaceInvaders");
init_mas();
for (int n=0; n<50; n++) {
for (int i=0; i<10; i++) {
clearOneSprite(mas[i].x, mas[i].y, mas[i].w, mas[i].h, F );
mas[i].y += random(10)-5;
mas[i].x += random(10)-5;
drawOneSprite(mas[i].x, mas[i].y, sprite, mas[i].w, mas[i].h );
}
delay(20);
}
}
void show_prite(){
//tft.drawRGBBitmap(x,y, sprite, SPRITE_W, SPRITE_H );
drawOneSprite(x,y, sprite, SPRITE_W, SPRITE_H );
}
void loop() {
// put your main code here, to run repeatedly:
}