写一个arduino代码做贪吃蛇小游戏,oled显示屏0.96寸,arduino开发板,摇杆模块


#include <SPI.h> #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #define OLED_RESET 4 Adafruit_SSD1306 display(OLED_RESET); #define OLED_WIDTH 128 #define OLED_HEIGHT 64 #define SNAKE_SIZE 10 int snakeX[SNAKE_SIZE], snakeY[SNAKE_SIZE]; int appleX, appleY; int snakeDirection; int snakeSpeed = 250; int gameScore = 0; bool gameOver = false; const int joyXPin = A0; const int joyYPin = A1; const int joySwitchPin = 2; void setup() { display.begin(SSD1306_SWITCHCAPVCC, 0x3C); pinMode(joySwitchPin, INPUT_PULLUP); randomSeed(analogRead(0)); snakeX[0] = OLED_WIDTH / 2; snakeY[0] = OLED_HEIGHT / 2; snakeDirection = random(4); generateApple(); } void loop() { if (!gameOver) { display.clearDisplay(); updateSnake(); checkCollision(); drawSnake(); drawApple(); displayScore(); display.display(); delay(snakeSpeed); } } void updateSnake() { int newHeadX = snakeX[0]; int newHeadY = snakeY[0]; int joyX = analogRead(joyXPin); int joyY = analogRead(joyYPin); if (joyX < 100) { snakeDirection = 3; // Left } else if (joyX > 900) { snakeDirection = 1; // Right } else if (joyY < 100) { snakeDirection = 0; // Up } else if (joyY > 900) { snakeDirection = 2; // Down } switch (snakeDirection) { case 0: // Up newHeadY--; break; case 1: // Right newHeadX++; break; case 2: // Down newHeadY++; break; case 3: // Left newHeadX--; break; } for (int i = SNAKE_SIZE - 1; i > 0; i--) { snakeX[i] = snakeX[i - 1]; snakeY[i] = snakeY[i - 1]; } snakeX[0] = newHeadX; snakeY[0] = newHeadY; } void checkCollision() { if (snakeX[0] <= 0 || snakeX[0] >= OLED_WIDTH || snakeY[0] <= 0 || snakeY[0] >= OLED_HEIGHT) { gameOver = true; } for (int i = 1; i < SNAKE_SIZE; i++) { if (snakeX[i] == snakeX[0] && snakeY[i] == snakeY[0]) { gameOver = true; } } if (snakeX[0] == appleX && snakeY[0] == appleY) { eatApple(); generateApple(); } } void drawSnake() { for (int i = 0; i < SNAKE_SIZE; i++) { display.fillRect(snakeX[i], snakeY[i], 4, 4, WHITE); } } void drawApple() { display.fillRect(appleX, appleY, 4, 4, WHITE); } void eatApple() { gameScore++; snakeSpeed -= 10; snakeSpeed = max(snakeSpeed, 50); if (gameScore % 5 == 0 && SNAKE_SIZE < 100) { SNAKE_SIZE++; } for (int i = SNAKE_SIZE - 1; i > 0; i--) { snakeX[i] = snakeX[i - 1]; snakeY[i] = snakeY[i - 1]; } } void generateApple() { appleX = random(1, 127) / 4 * 4; appleY = random(1, 63) / 4 * 4; } void displayScore() { display.setTextSize(1); display.setTextColor(WHITE); display.setCursor(0, 0); display.println("Score: " + String(gameScore)); } [2024-11-12 21:42:49 | AI写代码神器 | 1884点数解答]
- 年会 1.热场视频:工会2024年度活动集锦 2.馆领导新春致辞 3.串场游戏:听前奏猜歌曲 4.钢琴演奏《我爱你中国》 独舞 (待定) 5.小游戏:每轮6个人。主持人提一个问题,每个人按顺序回答,答案必须是三个字,接不上来或答错的人淘汰,最终留下的人获胜。 6.新职工亮相+拜年 7.合唱表演《星辰大海》 8.串场游戏:听前奏猜歌 9.小游戏:以心传心:每组两人搭档,每轮3组共上场6人。游戏开始时每组的书写者转身看大屏幕显示词。书写者需通过写字或简笔画的方式用手指在搭档后背传达看到的内容,不能出声、不能用手势比划其他多余动作。搭档(画画者)要凭借后背感受到的笔画轨迹,尽可能精准地把对应的词语画出来。绘画过程中,不可询问,独立完成。 10.快板儿表演《战马超》 贯口《小孩子》 11.串场游戏:听前奏猜歌 12.小游戏:改名换姓:每轮8个人。参与者每人给自己想一个昵称(5个字以内)。游戏开始后大家从1-8喊数字,喊到相同数字的要尽快说出对方昵称,说错的人淘汰。 13.本命年职工送祝福 字数:200字(270点数解答 | 2025-01-16 14:21:53)146
- 年会 1.热场视频:工会2024年度活动集锦 2.馆领导新春致辞 3.串场游戏:听前奏猜歌曲 4.钢琴演奏《我爱你中国》 独舞 (待定) 5.小游戏:每轮6个人。主持人提一个问题,每个人按顺序回答,答案必须是三个字,接不上来或答错的人淘汰,最终留下的人获胜。 6.新职工亮相+拜年 7.合唱表演《星辰大海》 8.串场游戏:听前奏猜歌 9.小游戏:以心传心:每组两人搭档,每轮3组共上场6人。游戏开始时每组的书写者转身看大屏幕显示词。书写者需通过写字或简笔画的方式用手指在搭档后背传达看到的内容,不能出声、不能用手势比划其他多余动作。搭档(画画者)要凭借后背感受到的笔画轨迹,尽可能精准地把对应的词语画出来。绘画过程中,不可询问,独立完成。 10.快板儿表演《战马超》 贯口《小孩子》 11.串场游戏:听前奏猜歌 12.小游戏:改名换姓:每轮8个人。参与者每人给自己想一个昵称(5个字以内)。游戏开始后大家从1-8喊数字,喊到相同数字的要尽快说出对方昵称,说错的人淘汰。 13.本命年职工送祝福 (392点数解答 | 2025-01-16 14:34:56)110
- #include "stm32f10x.h" // 有问题和需求的,可以联系VX:lwfw********* #include <stdio.h> #include <string.h> #include "sys.h" #include "delay.h" #include "OLED.h" #include "dht11.h" //温湿度传感器 #include "Key.h" #include "jidianqi.h" #include "OLED.h" #include "Serial.h" #include "LED.h" #include "Buzzer.h" #include "Motor.h" #include "CountSensor.h" #include "AD.h" uint16_t AD0; //存储ADC的值 uint8_t KeyNum; //存储按键值 uint8_t RxData; //蓝牙接收到的数据 u8 temp, humi; //存储温湿度 float temp1; //(25点数解答 | 2025-05-06 01:13:43)86
- 写一个arduino代码做贪吃蛇小游戏,oled显示屏0.96寸,arduino UNO开发板,摇杆模块,生成注解和连线图 (1745点数解答 | 2025-07-06 15:59:00)65
- 写一个arduino代码做贪吃蛇小游戏,有边框,能显示分数,oled显示屏0.96寸,arduino UNO开发板,摇杆模块,生成注解和连线图(2196点数解答 | 2025-07-06 16:16:50)48
- 写一个arduino代码做贪吃蛇小游戏,有边框,能显示分数,oled显示屏0.96寸,arduino UNO开发板,摇杆模块,生成注解和连线图 (1952点数解答 | 2025-07-06 16:55:56)49
- 写一个arduino代码做打地鼠小游戏,oled显示屏0.96寸,arduino uno开发板,三个按钮模块和三个led灯,生成注解(1190点数解答 | 2025-09-10 14:17:47)12
- 本次突训,选择 php实训内容是做一个喜闻乐见的电子商务平台,主要内容分以下个三大模块: 1,数括库设计(包括:数据库设计,表结构设计) 2.前台模块(包括:首页、商品列表页、购物车模块、公共 模块,登录注册等) 3.后台模块(后台首页、商品管理、用户管理和信息管理等)并生成相应的实训报告,内容包括实训目的和背景、实训内容、实训规划、实训步骤、测试结果、思考、心得和改进以及不明白的问题。(674点数解答 | 2024-06-17 08:58:32)197
- 一个 5×6 的迷宫样例如下: 要求给出从起点(1,1)到终点(3,4)的路径。 为了处理方便,保证最外圈全都为障碍物。 扩展到一般情况,一个 m×n 的迷宫,要求输出从起点(1,1)到终点(m-2,n-2)的路径。 测试实例保证路径是唯一的。 该题要求自行设计一个栈来做。如果设计的是顺序栈,则保证栈的大小不超过 200 个元素。 输入 第一行为两个整数 m 和 n,表示 m×n 的迷宫。 接下来有 m 行,每行有 n 个数(n 个数之间用空格间隔,值 = 0 表示可以通行,值 = 1 表示为障碍物) 输出 输出从起点到终点的路径,每个坐标占一行,坐标间的行号和列号用一个空格间隔。具体格式可参考样例。c++ 源代码(732点数解答 | 2024-11-03 02:34:53)311
- 贪吃蛇。(57点数解答 | 2025-04-17 20:33:23)74
- 贪吃蛇(1352点数解答 | 2025-06-06 20:22:46)55
- arduino 光敏电阻控制流水灯<500亮,按钮控制开启流水灯(987点数解答 | 2024-06-20 20:05:00)142