From 89d4f7bf379354b4fedb87ec1a1823bf21b82e60 Mon Sep 17 00:00:00 2001 From: Incursio Hack - Ruan Rocha <114836217+IncursioHack@users.noreply.github.com> Date: Wed, 8 May 2024 10:08:37 -0300 Subject: [PATCH] Jabberjaw The first draft of the game. --- src/main.cpp | 2 + src/tururururu.cpp | 133 +++++++++++++++++++++++++++++++++++++++++++++ src/tururururu.h | 22 ++++++++ 3 files changed, 157 insertions(+) create mode 100644 src/tururururu.cpp create mode 100644 src/tururururu.h diff --git a/src/main.cpp b/src/main.cpp index 7033fec3..bb19f56e 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -43,6 +43,7 @@ TFT_eSprite draw = TFT_eSprite(&tft); #include "mfrc522_i2c.h" #include "TV-B-Gone.h" #include "sniffer.h" +#include "tururururu.h" #ifdef CARDPUTER @@ -217,6 +218,7 @@ void loop() { {"TV-B-Gone", [=]() { StartTvBGone(); }}, {"SD Card", [=]() { loopSD(); }}, {"WebUI", [=]() { loopOptionsWebUi(); }}, + {"Megalodon", [=]() { shark_setup(); }}, }; if(sdcardMounted) options.push_back({"Custom IR", [=]() { otherIRcodes(); }}); #ifdef CARDPUTER diff --git a/src/tururururu.cpp b/src/tururururu.cpp new file mode 100644 index 00000000..c449b405 --- /dev/null +++ b/src/tururururu.cpp @@ -0,0 +1,133 @@ +#include "mykeyboard.h" +#include "tururururu.h" +#include "globals.h" +#include "display.h" + +// Configuração do personagem principal (tubarão) +int sharkX = 40; +int sharkY = 80; +int sharkSize = 10; + +//Configuração dos peixes +struct Fish { + int x, y, size; +}; +Fish fish[5]; // Array de peixes + +// Configuração de pontuação +int score = 0; + +// Função para desenhar o tubarão +void drawShark() { + tft.fillRect(sharkX, sharkY, sharkSize, sharkSize, TFT_BLUE); +} + +// Função para desenhar peixes +void drawFish(Fish &f) { + tft.fillRect(f.x, f.y, f.size, f.size, TFT_GREEN); +} + +// Função para mover o tubarão +void moveShark() { + + if (checkPrevPress() || checkSelPress()) { + sharkY -= 2; // Move para cima + } + if (checkNextPress()) { + sharkY += 2; // Move para baixo + } + if (sharkY < 0) { + sharkY = 0; + } + if (sharkY > tft.height() - sharkSize) { + sharkY = tft.height() - sharkSize; + } +} + +// Função para mover peixes +void moveFish(Fish &f) { + f.x -= 2; // Move o peixe para a esquerda + if (f.x < -10) { + f.x = tft.width() + random(20, 100); + f.y = random(10, tft.height() - 20); + } +} + +// Função para verificar colisões entre o tubarão e os peixes +void checkCollisions() { + for (int i = 0; i < 5; i++) { + if ((sharkX < fish[i].x + fish[i].size) && (sharkX + sharkSize > fish[i].x) && + (sharkY < fish[i].y + fish[i].size) && (sharkY + sharkSize > fish[i].y)) { + // Colidiu com um peixe + fish[i].x = tft.width() + random(20, 100); + fish[i].y = random(10, tft.height() - 20); + score++; + } + } +} + +// Função para exibir a pontuação +void displayScore() { + tft.setTextColor(TFT_WHITE); + tft.setTextSize(2); + tft.setCursor(0, 0); + tft.printf("Score: %d", score); +} + +void shark_setup() { + // Inicializa a tela + tft.begin(); + // tft.fillScreen(TFT_BLACK); + + // Inicializa a posição dos peixes + for (int i = 0; i < 5; i++) { + fish[i].x = tft.width() + random(20, 100); + fish[i].y = random(10, tft.height() - 20); + fish[i].size = 8; + } + shark_loop(); +} + +void shark_loop() { + for(;;) { + // Limpa a tela + tft.fillScreen(TFT_BLACK); + + // Move o tubarão + moveShark(); + + // Desenha o tubarão + drawShark(); + + // Move e desenha os peixes + for (int i = 0; i < 5; i++) { + moveFish(fish[i]); + drawFish(fish[i]); + } + + // Verifica colisões + checkCollisions(); + + // Exibe a pontuação + displayScore(); + + // Pequeno atraso para controlar a velocidade do loop + delay(50); + } + + #ifndef CARDPUTER + if(checkPrevPress()) { // Apertar o botão power dos sticks + tft.fillScreen(BGCOLOR); + goto Exit; + } + #else + Keyboard.update(); + if(Keyboard.isKeyPressed('`')) { + tft.fillScreen(BGCOLOR); + goto Exit; + } // apertar ESC no Cardputer + #endif + Exit: + delay(300); + Serial.println(); +} \ No newline at end of file diff --git a/src/tururururu.h b/src/tururururu.h new file mode 100644 index 00000000..1c9976dd --- /dev/null +++ b/src/tururururu.h @@ -0,0 +1,22 @@ +#include "globals.h" +#include "display.h" + +// Configuração do personagem principal (tubarão) +extern int sharkX; +extern int sharkY; +extern int sharkSize; + +// Configuração de pontuação +extern int score; + +// Funções para manipulação do jogo +void drawShark(); +//void drawFish(Fish &f); +void drawFish(); +void moveShark(); +//void moveFish(Fish &f); +void moveFish(); +void checkCollisions(); +void displayScore(); +void shark_setup(); +void shark_loop(); \ No newline at end of file