add full function for Game Hung Vat
parent
b279c190cb
commit
753afba090
143
src/main.cpp
143
src/main.cpp
|
@ -3,7 +3,7 @@
|
||||||
#include <FastLED.h>
|
#include <FastLED.h>
|
||||||
#include <WebServer.h>
|
#include <WebServer.h>
|
||||||
#include <ArduinoJson.h>
|
#include <ArduinoJson.h>
|
||||||
#include <Fonts/FreeSans9pt7b.h>
|
#include <Fonts/FreeMono9pt7b.h>
|
||||||
#pragma region Matrix Config
|
#pragma region Matrix Config
|
||||||
#define R1_PIN 25
|
#define R1_PIN 25
|
||||||
#define G1_PIN 26
|
#define G1_PIN 26
|
||||||
|
@ -52,7 +52,7 @@ static int y_moi = 0;
|
||||||
int num_moi = 0;
|
int num_moi = 0;
|
||||||
bool reached = false;
|
bool reached = false;
|
||||||
bool gen_moi = false;
|
bool gen_moi = false;
|
||||||
|
unsigned long period_time = millis();
|
||||||
uint16_t rgbToUint16(uint8_t r, uint8_t g, uint8_t b, bool mode)
|
uint16_t rgbToUint16(uint8_t r, uint8_t g, uint8_t b, bool mode)
|
||||||
{
|
{
|
||||||
if (mode)
|
if (mode)
|
||||||
|
@ -137,69 +137,89 @@ int MinY_bar = 50;
|
||||||
void Drawbar(int x)
|
void Drawbar(int x)
|
||||||
{
|
{
|
||||||
// measure x dimension
|
// measure x dimension
|
||||||
int dodai = 5;
|
int dodai = 16;
|
||||||
|
MinX_bar = x-dodai/2;
|
||||||
|
MaxX_bar = x+dodai/2;
|
||||||
|
dma_display->drawLine(MinX_bar,MinY_bar-1,MaxX_bar,MinY_bar-1,dma_display->color333(3,3,3));
|
||||||
|
dma_display->drawLine(MinX_bar,MinY_bar,MaxX_bar,MinY_bar,dma_display->color333(3,3,3));
|
||||||
|
|
||||||
MinX_bar = x - 1 - ((dodai * 3) / 3);
|
// MinX_bar = x - 1 - ((dodai * 3) / 3);
|
||||||
MaxX_bar = x + 1 + ((dodai * 3) / 3);
|
// MaxX_bar = x + 1 + ((dodai * 3) / 3);
|
||||||
|
|
||||||
for (int i = MinX_bar; i <= MaxX_bar; i++)
|
// for (int i = MinX_bar; i <= MaxX_bar; i++)
|
||||||
{
|
// {
|
||||||
for (int j = MinY_bar; j <= MinY_bar + 1; j++)
|
// for (int j = MinY_bar; j <= MinY_bar + 1; j++)
|
||||||
{
|
// {
|
||||||
if (j <= 32)
|
// if (j <= 32)
|
||||||
dma_display->drawPixelRGB888(i, j, 214, 24, 192);
|
// dma_display->drawPixelRGB888(i, j, 214, 24, 192);
|
||||||
else
|
// else
|
||||||
dma_display->drawPixelRGB888(i, j, 214, 192, 24);
|
// dma_display->drawPixelRGB888(i, j, 214, 192, 24);
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
bool created = false;
|
bool created = false;
|
||||||
int X_vat = 20;
|
int X_vat = 20;
|
||||||
int Y_vat = 2;
|
int Y_vat = 2;
|
||||||
|
int lastpoint[2];
|
||||||
|
int r = 2;
|
||||||
void DrawObject(bool deleted = false)
|
void DrawObject(bool deleted = false)
|
||||||
{
|
{
|
||||||
// measure x dimension
|
// measure x dimension
|
||||||
int dodai = 5;
|
unsigned long now = millis();
|
||||||
if (!created)
|
if (!created)
|
||||||
{
|
{
|
||||||
|
lastpoint[0]=X_vat;
|
||||||
|
lastpoint[1]=Y_vat;
|
||||||
|
dma_display->fillCircle(X_vat,Y_vat,r,dma_display->color333(0,0,0));
|
||||||
|
dma_display->drawLine(MinX_bar,MinY_bar-1,MaxX_bar,MinY_bar-1,dma_display->color333(3,3,3));
|
||||||
|
dma_display->drawLine(MinX_bar,MinY_bar,MaxX_bar,MinY_bar,dma_display->color333(3,3,3));
|
||||||
|
|
||||||
X_vat = random(20, 109); // random(min, max), max không bao gồm
|
X_vat = random(20, 109); // random(min, max), max không bao gồm
|
||||||
Y_vat = 2;
|
Y_vat = 2;
|
||||||
created = true;
|
created = true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Y_vat += 1;
|
if(now-period_time>=600){
|
||||||
if (Y_vat > 52)
|
dma_display->fillCircle(X_vat,Y_vat,r,dma_display->color333(0,0,0));
|
||||||
created = false;
|
Y_vat += 1;
|
||||||
}
|
if (Y_vat > 52)created = false;
|
||||||
int min_x = X_vat - 1;
|
period_time = now;
|
||||||
int max_x = X_vat + 1;
|
|
||||||
int min_y = Y_vat - 1;
|
|
||||||
int max_y = Y_vat + 1;
|
|
||||||
if (deleted)
|
|
||||||
{
|
|
||||||
for (int i = min_x; i <= max_x; i++)
|
|
||||||
{
|
|
||||||
for (int j = min_y; j <= max_y; j++)
|
|
||||||
{
|
|
||||||
if (j <= 32)
|
|
||||||
dma_display->drawPixelRGB888(i, j, 0, 0, 255);
|
|
||||||
else
|
|
||||||
dma_display->drawPixelRGB888(i, j, 0, 255, 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
for (int i = min_x; i <= max_x; i++)
|
|
||||||
{
|
|
||||||
for (int j = min_y; j <= max_y; j++)
|
|
||||||
{
|
|
||||||
dma_display->drawPixelRGB888(i, j, 0, 0, 0);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//dma_display->drawCircle(X_vat,Y_vat,1,dma_display->color333(7,0,0));
|
||||||
|
dma_display->fillCircle(X_vat,Y_vat,r,dma_display->color333(7,0,0));
|
||||||
|
// else dma_display->fillCircle(X_vat,Y_vat,1,dma_display->color333(0,0,0));
|
||||||
|
|
||||||
|
// int min_x = X_vat - 1;
|
||||||
|
// int max_x = X_vat + 1;
|
||||||
|
// int min_y = Y_vat - 1;
|
||||||
|
// int max_y = Y_vat + 1;
|
||||||
|
// if (deleted)
|
||||||
|
// {
|
||||||
|
// for (int i = min_x; i <= max_x; i++)
|
||||||
|
// {
|
||||||
|
// for (int j = min_y; j <= max_y; j++)
|
||||||
|
// {
|
||||||
|
// if (j <= 32)
|
||||||
|
// dma_display->drawPixelRGB888(i, j, 0, 0, 255);
|
||||||
|
// else
|
||||||
|
// dma_display->drawPixelRGB888(i, j, 0, 255, 0);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// else
|
||||||
|
// {
|
||||||
|
// for (int i = min_x; i <= max_x; i++)
|
||||||
|
// {
|
||||||
|
// for (int j = min_y; j <= max_y; j++)
|
||||||
|
// {
|
||||||
|
// dma_display->drawPixelRGB888(i, j, 0, 0, 0);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
int score = 0;
|
int score = 0;
|
||||||
|
@ -207,16 +227,23 @@ int score = 0;
|
||||||
#define COLOR_WHITE dma_display->color333(7, 7, 7)
|
#define COLOR_WHITE dma_display->color333(7, 7, 7)
|
||||||
void HeldObject()
|
void HeldObject()
|
||||||
{
|
{
|
||||||
if (Y_vat >= MinY_bar && X_vat - 1 >= MinX_bar && X_vat + 1 <= MaxX_bar)
|
if (Y_vat+r >= MinY_bar-1 && X_vat - 1 >= MinX_bar && X_vat + 1 <= MaxX_bar)
|
||||||
{
|
{
|
||||||
|
Serial.println("Created");
|
||||||
created = false;
|
created = false;
|
||||||
DrawObject(true);
|
//DrawObject(true);
|
||||||
DrawObject();
|
DrawObject();
|
||||||
score += 1;
|
score += 1;
|
||||||
dma_display->setFont(&FreeSans9pt7b); // Change to the desired font size
|
dma_display->setFont(&FreeMono9pt7b); // Change to the desired font size
|
||||||
dma_display->setTextColor(COLOR_WHITE);
|
dma_display->setTextColor(COLOR_WHITE);
|
||||||
dma_display->setCursor(4, 4);
|
dma_display->setCursor(2, 11);
|
||||||
dma_display->printf("Score: %d", score);
|
dma_display->printf("%d", score);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
dma_display->setFont(&FreeMono9pt7b); // Change to the desired font size
|
||||||
|
dma_display->setTextColor(COLOR_WHITE);
|
||||||
|
dma_display->setCursor(2, 11);
|
||||||
|
dma_display->printf("%d", score);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -316,7 +343,6 @@ void setup()
|
||||||
}
|
}
|
||||||
|
|
||||||
bool mode = false;
|
bool mode = false;
|
||||||
unsigned long period_time = millis();
|
|
||||||
void loop()
|
void loop()
|
||||||
{
|
{
|
||||||
// server.handleClient();
|
// server.handleClient();
|
||||||
|
@ -335,6 +361,7 @@ void loop()
|
||||||
bufferIndex = 0; // Reset buffer index in case of overflow
|
bufferIndex = 0; // Reset buffer index in case of overflow
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
float data[numRows][numCols];
|
||||||
if (bufferIndex >= 2 * sizeof(int))
|
if (bufferIndex >= 2 * sizeof(int))
|
||||||
{
|
{
|
||||||
// Đã nhận đủ kích thước dữ liệu
|
// Đã nhận đủ kích thước dữ liệu
|
||||||
|
@ -346,7 +373,7 @@ void loop()
|
||||||
if (bufferIndex >= (2 * sizeof(int) + expectedSize))
|
if (bufferIndex >= (2 * sizeof(int) + expectedSize))
|
||||||
{
|
{
|
||||||
dma_display->clearScreen();
|
dma_display->clearScreen();
|
||||||
float data[numRows][numCols];
|
|
||||||
for (int row = 0; row < numRows; ++row)
|
for (int row = 0; row < numRows; ++row)
|
||||||
{
|
{
|
||||||
for (int col = 0; col < numCols; ++col)
|
for (int col = 0; col < numCols; ++col)
|
||||||
|
@ -359,18 +386,16 @@ void loop()
|
||||||
}
|
}
|
||||||
|
|
||||||
Drawbar(int(data[0][0]));
|
Drawbar(int(data[0][0]));
|
||||||
unsigned long now = millis();
|
|
||||||
if (now - period_time >= 600)
|
|
||||||
{
|
|
||||||
DrawObject();
|
|
||||||
HeldObject();
|
|
||||||
period_time = now;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Reset chỉ số chỉ mục sau khi xử lý
|
// Reset chỉ số chỉ mục sau khi xử lý
|
||||||
bufferIndex = 0;
|
bufferIndex = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
//DrawObject(true);
|
||||||
|
DrawObject();
|
||||||
|
HeldObject();
|
||||||
#pragma endregion
|
#pragma endregion
|
||||||
|
|
||||||
// readDataFromSerial();
|
// readDataFromSerial();
|
||||||
|
|
Loading…
Reference in New Issue