92浏览
查看: 92|回复: 6

[项目] 【花雕学编程】Arduino动手做(249)---GC9A01小球避障游戏

[复制链接]
【花雕学编程】Arduino动手做(249)---GC9A01小球避障游戏图2

【花雕学编程】Arduino动手做(249)---GC9A01小球避障游戏图1

驴友花雕  中级技神
 楼主|

发表于 3 天前

【花雕学编程】Arduino动手做(249)---GC9A01小球避障游戏

【花雕学编程】Arduino动手做(249)---GC9A01小球避障游戏图1

【花雕学编程】Arduino动手做(249)---GC9A01小球避障游戏图2
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 3 天前

【花雕学编程】Arduino动手做(249)---GC9A01小球避障游戏

【花雕学编程】Arduino动手做(249)---GC9A01小球避障游戏图2

【花雕学编程】Arduino动手做(249)---GC9A01小球避障游戏图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 3 天前

【花雕学编程】Arduino动手做(249)---GC9A01小球避障游戏

【Arduino】189种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验二百四十九:1.28寸圆形彩色TFT显示屏 高清IPS 模块 240*240 SPI接口GC9A01驱动
  项目之一百一十七:ESP32+GC9A01之模拟一款小球避障游戏

实验开源代码

  1. /*
  2.   【Arduino】189种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3.   实验二百四十九:1.28寸圆形彩色TFT显示屏 高清IPS 模块 240*240 SPI接口GC9A01驱动
  4.   项目之一百一十七:ESP32+GC9A01之模拟一款小球避障游戏
  5. */
  6. //       GC9A01---------- ESP32
  7. //       RST ------------ NC(复位引脚,此处未连接)
  8. //       CS ------------- D4(片选引脚,连接到ESP32的D4引脚)
  9. //       DC ------------- D2(数据/命令选择引脚,连接到ESP32的D2引脚)
  10. //       SDA ------------ D23 (green)(主数据输出引脚,连接到ESP32的D23引脚,绿色线)
  11. //       SCL ------------ D18 (yellow)(时钟信号引脚,连接到ESP32的D18引脚,黄色线)
  12. //       GND ------------ GND(接地引脚,连接到ESP32的接地端)
  13. //       VCC -------------3V3(电源引脚,连接到ESP32的3.3V电源)
  14. #include <TFT_eSPI.h>
  15. #define SCREEN_WIDTH 240
  16. #define SCREEN_HEIGHT 240
  17. #define BALL_SIZE 10        // 小球大小
  18. #define OBSTACLE_WIDTH 40   // 障碍物宽度
  19. #define OBSTACLE_HEIGHT 20  // 障碍物高度
  20. #define BALL_SPEED 30        // 小球下落速度
  21. TFT_eSPI tft = TFT_eSPI();
  22. int ballX = random(20, SCREEN_WIDTH - 20);  // **小球随机生成**
  23. int ballY = 0;  // **小球从顶部开始下降**
  24. int obstacleX = random(20, SCREEN_WIDTH - OBSTACLE_WIDTH); // **障碍物随机出现**
  25. int obstacleY = SCREEN_HEIGHT - 50;  // **障碍物靠近底部**
  26. int score = 0;  // **记录分数**
  27. void setup() {
  28.     Serial.begin(115200);
  29.     tft.init();
  30.     tft.setRotation(2);
  31.     tft.fillScreen(TFT_BLACK);
  32. }
  33. void drawGame() {
  34.     tft.fillScreen(TFT_BLACK);
  35.     // **绘制黄色小球**
  36.     tft.fillCircle(ballX, ballY, BALL_SIZE, TFT_YELLOW);
  37.     // **绘制红色障碍物**
  38.     tft.fillRect(obstacleX, obstacleY, OBSTACLE_WIDTH, OBSTACLE_HEIGHT, TFT_RED);
  39.     // **显示分数**
  40.     tft.setCursor(70, 30);
  41.     tft.setTextColor(TFT_WHITE);
  42.     tft.setTextSize(2);
  43.     tft.print("Score: " + String(score));
  44. }
  45. void updateGame() {
  46.     ballY += BALL_SPEED;  // **小球不断向下移动**
  47.     // **检测碰撞**
  48.     if (abs(ballX - obstacleX) < BALL_SIZE && abs(ballY - obstacleY) < OBSTACLE_HEIGHT) {
  49.         score = 0;  // **碰撞后重置分数**
  50.         ballY = 0;  // **小球回到顶部**
  51.         ballX = random(20, SCREEN_WIDTH - 20);  // **重新随机生成小球**
  52.         obstacleX = random(20, SCREEN_WIDTH - OBSTACLE_WIDTH);  // **障碍物重新随机出现**
  53.     }
  54.     // **小球成功通过底部,增加分数**
  55.     if (ballY > SCREEN_HEIGHT) {
  56.         score += 1;
  57.         ballY = 0;  // **小球回到顶部**
  58.         ballX = random(20, SCREEN_WIDTH - 20);  // **随机生成新小球**
  59.         obstacleX = random(20, SCREEN_WIDTH - OBSTACLE_WIDTH);  // **障碍物重新随机出现**
  60.     }
  61. }
  62. void loop() {
  63.     updateGame();
  64.     drawGame();
  65.     delay(10);
  66. }
复制代码


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 3 天前

【花雕学编程】Arduino动手做(249)---GC9A01小球避障游戏

这段代码模拟了一款小球避障游戏 ,小球从顶部不断下降,而障碍物随机出现并阻挡路径。玩家的目标是让小球成功穿越障碍物,以获得更高分数 。


代码结构1️⃣ 初始化游戏
  • TFT_eSPI 让 ESP32 控制 GC9A01 显示屏,设定 黑色背景
  • 随机设定 小球位置(顶部)障碍物位置(底部)

2️⃣ 绘制游戏画面
  • drawGame() 用 黄色小球 表示下落物体,红色方块 作为障碍物。
  • 显示分数,让玩家知道当前成绩。

3️⃣ 更新游戏状态
  • updateGame() 让 小球不断下降,模拟重力效果。
  • 检测碰撞:如果小球触碰障碍物,则分数归零,游戏重置。
  • 成功穿越:小球顺利通过底部,分数增加,并重新生成障碍物。

4️⃣ 循环刷新
  • loop() 让游戏持续运行,不断更新小球和障碍物的状态。
  • delay(50); 控制动画速度,确保流畅度。



最终效果
小球不断下降,尝试穿越障碍
红色方块随机出现,阻挡路径
成功避开障碍后得分增加
小球碰撞后游戏重置,继续挑战

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 3 天前

【花雕学编程】Arduino动手做(249)---GC9A01小球避障游戏

实验场景图  动态图

【花雕学编程】Arduino动手做(249)---GC9A01小球避障游戏图2

【花雕学编程】Arduino动手做(249)---GC9A01小球避障游戏图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 3 天前

【花雕学编程】Arduino动手做(249)---GC9A01小球避障游戏

【花雕学编程】Arduino动手做(249)---GC9A01小球避障游戏图1

【花雕学编程】Arduino动手做(249)---GC9A01小球避障游戏图2
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4 备案 沪公网安备31011502402448

© 2013-2025 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail