A simple pong game with a NUCLEO board and ILI9163C TFT display.
Dependencies: mbed TFT_ILI9163C Adafruit_GFX_MBED
Revision 0:b07b507bad19, committed 2022-01-20
- Comitter:
- hudakz
- Date:
- Thu Jan 20 16:21:57 2022 +0000
- Commit message:
- A simple pong game with a NUCLEO board and ILI9163C TFT display.
Changed in this revision
diff -r 000000000000 -r b07b507bad19 Adafruit_GFX.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Adafruit_GFX.lib Thu Jan 20 16:21:57 2022 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/infotech1/code/Adafruit_GFX_MBED/#2c772b09cce5
diff -r 000000000000 -r b07b507bad19 TFT_ILI9163C.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TFT_ILI9163C.lib Thu Jan 20 16:21:57 2022 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/billycorgan123/code/TFT_ILI9163C/#f0799be044ff
diff -r 000000000000 -r b07b507bad19 main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Thu Jan 20 16:21:57 2022 +0000 @@ -0,0 +1,152 @@ +#include "mbed.h" +#include "math.h" +#include "Adafruit_GFX.h" +#include "TFT_ILI9163C.h" + +#define M_PI 3.14159265358979323846 + + +// Define TFT to NUCLEO_F446RE pin connection +#define TFT_MOSI PA_7 +#define TFT_SCLK PA_5 +#define TFT_CS PB_6 +#define TFT_DC PC_7 +#define TFT_RST PA_9 + +// SPI speed +#define SPI_BITRATE 50000000L + +// Color definitions +#define BLACK 0x0000 +#define BLUE 0x001F +#define RED 0xF800 +#define GREEN 0x07E0 +#define CYAN 0x07FF +#define MAGENTA 0xF81F +#define YELLOW 0xFFE0 +#define WHITE 0xFFFF + +// Create display object +TFT_ILI9163C display(TFT_MOSI, NC, TFT_SCLK, TFT_CS, TFT_DC, TFT_RST); +AnalogIn a1(PA_0); +AnalogIn a2(PA_1); +DigitalIn startButton(PC_13); + +int bx = 64; +int by = 64; +int P1x1 = 0, P1x2 = 3, P1y1, P1y2; +int P2x1 = 124, P2x2 = 127, P2y1, P2y2; +float angle; +int speed; +int P1S = 0, P2S = 0; +int hold, h1, h2; +char score[32]; + +/** + * @brief + * @note + * @param + * @retval + */ +int main() +{ + // display.text_width(1); + // display.text_height(1); + // display.baudrate(300000); + // Initialize random angle between 0 and 360 + srand(time(NULL)); + do + { + angle = rand() % 361; + } while + ( + (angle < 20) || + (angle > 70 && angle < 110) || + (angle > 160 && angle < 200) || + (angle > 250 && angle < 290) || + (angle > 340) + ); + + ///////////////////////////////////////////////////// + while (1) { + if (startButton == 0) { + hold = 0; + h1 = 0; + h2 = 0; + } + + if (hold == 1) + speed = 0; + else + speed = 5; + + // Set position of the paddles + P1y1 = (a1 * 103) + 8; + P1y2 = P1y1 + 16; + P2y1 = (a2 * 103 + 8); + P2y2 = P2y1 + 16; + + // Control motion of ball + display.fillCircle(bx, by, 2, WHITE); + + if ((bx > 122 && (by > P2y1 && by < P2y2)) || (bx < 5 && (by > P1y1 && by < P1y2))) + angle = 180 - angle; + else + if (by > 125 || by < 10) // I think this is where our problem is + angle = -angle; + + //P1 Scores + else + if (bx > 122) { + P1S++; + bx = 5; + by = P1y1 + 8; + hold = 1; + h1 = 1; + angle = rand() % 120 + 120 + 180; + + //P2 Scores + } + else + if (bx < 5) { + P2S++; + bx = 122; + by = P2y1 + 8; + hold = 1; + h2 = 1; + angle = rand() % 120 + 120; + } + + if (hold == 1 && h1 == 1) { + bx = 6; + by = P1y1 + 8; + } + else + if (hold == 1 && h2 == 1) { + bx = 121; + by = P2y1 + 8; + } + else { + bx = bx + speed * cos(angle * 2 * M_PI / 360); + by = by - speed * sin(angle * 2 * M_PI / 360); + } + + // Print paddles and ball + display.fillCircle(bx, by, 2, WHITE); + display.fillRect(0, P1y1, 3, P1y2, WHITE); + display.fillRect(124, P2y1, 127, P2y2, WHITE); + display.fillRect(0, 9, 3, P1y1 - 1, 0); + display.fillRect(0, P1y2 + 1, 3, 127, 0); + display.fillRect(124, 9, 127, P2y1 - 1, 0); + display.fillRect(124, P2y2 + 1, 127, 127, 0); + display.fillRect(5, 8, 122, 8, WHITE); + + // Print scores + display.setCursor(2, 0); + + //display.printf("P1: %d P2: %d", P1S, P2S); + sprintf(score, "P1: %d P2: %d", P1S, P2S); + display.print(score); + wait(.005); + } +}
diff -r 000000000000 -r b07b507bad19 mbed.bld --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Thu Jan 20 16:21:57 2022 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/2e9cc70d1897 \ No newline at end of file