亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

蛇形 LED 16x16 矩阵游戏

组件和用品

Arduino UNO
× 1
RGB LED 像素矩阵,NeoPixel NeoMatrix
我不确定这个。我在 aliexpress 上买了我的 LED 矩阵。链接在这里 http://ali.pub/4wxs2s
× 1
跳线(通用)
× 1
模拟操纵杆(通用)
× 1
面包板(通用)
× 1

关于这个项目

你好呀!我正在学习 arduino 机会。我决定从我的旧诺基亚复制经典的街机蛇游戏。所以,这里是。

我使用了 16x16 LED 矩阵、操纵杆和 Arduino UNO。这不是一件容易的事,每个 LED 都是一致连接的。所以,移动逻辑有点棘手。

在这里你可以控制蛇的角色。吃一些美味的食物,长大,然后死去。程序代码已准备好升级。

玩得开心,享受。如果你喜欢订阅我的 youtube 和 instagram,请不要三思而后行 :) 它们是俄语,但我很快就会制作字幕。

代码

  • 代码
代码C/C++
#include //矩阵设置#define NUM_LEDS 256#define DATA_PIN 3#define BRIGHTNESS 8//操纵杆设置#define pinX A2 // ось X джойстика#define pinY A1 // ось Y джойстика#define swPin 2 // кнопка джойстикаint 蛇[256]; // 蛇元素数组int snakeSize =2; // 真正的蛇大小 int snakeSpeed =500; int row; // 行号int col; // 列号int lastDirection =135; // 开始方向int i, newDirection, OlddX =1, OlddY, f;int red, green, blue, fred, fgreen, fblue; //colorsCRGB LEDs[NUM_LEDS];void setup() { red =random(0, 255);绿色 =随机 (0, 255);蓝色 =随机 (0, 255);弗雷德 =随机(127, 255); fgreen =随机(127, 255); fblue =随机(127, 255); Serial.begin(9600); pinMode(pinX,输入); pinMode(pinY,输入); pinMode(swPin,输入);数字写入(swPin,高); FastLED.addLeds(leds, NUM_LEDS); FastLED.setBrightness(BRIGHTNESS); for( i=0; i<=255; i++ ){ 蛇[i] =0; } for( i=0; i<=snakeSize; i++ ){ snake[i] =lastDirection+i; f =随机 (0, 255); FastLED.show();}int Snakedirection(int last, int dX, int dY){ dX =map(dX, 0, 1000, -1, 1); dY =地图(dY, 0, 1000, -1, 1); if(dX ==0 &&dY ==0 &&OlddX !=dX){ dX =OlddX; } if(dY ==0 &&dX ==0 &&OlddY !=dY){ dY =OlddY; } int newDirection =最后; if( dX !=0 ){ // 在 X 方向移动 if ( row&1 ){ if( col ==0 &&dX ==1){ newDirection =last -15; } else if( col ==15 &&dX ==-1){ newDirection =last +15; } else newDirection =last + dX; // четная } else { if( col ==0 &&dX ==1){ newDirection =last +15; } else if( col ==15 &&dX ==-1 ){ newDirection =last -15; } else newDirection =last - dX; // не четная } } if( dY <0){ // 沿 Y 向下方向移动 if(row ==15 &&dY ==-1){newDirection =col;} else if ( row&1 ){ newDirection =last + (列*2)+1; // четная } else { newDirection =last + (16-col-1)+(16-col); // не четная } } if( dY> 0){ // 沿 Y 向上方向移动 if( row ==0 &&dY ==1){ newDirection =255 - col;} else if ( row&1 ){ newDirection =last - (last - 16*row) - (16 - col); // четная } else { newDirection =last - (col*2)-1; // не четная } } OlddX =dX; OlddY =dY; return newDirection;}int snakeMove(int snakeDirection){ for( i=0; i<=255; i++ ){ if( snake[i] ==snakeDirection ){ death(); FastLED.clear(); for(i=snakeSize; i>=1; i--){ 蛇[i] =蛇[i-1]; }蛇[0] =蛇方向; for( i=0; i<=255; i++ ){ if( snake[i] ){ leds[snake[i]].setRGB(red, green, blue); FastLED.show();行 =(int)(snakeDirection/16); // 行号 if ( row&1 ){ col =(row+1) * 16 - snakeDirection - 1; } else { col =snakeDirection - 行 * 16; }返回snakeDirection;}void food(int Eated){ if(eated ==f){ snakeSize++; f =随机 (0, 255);红色 =弗雷德;绿色 =fgreen;蓝色 =fblue;弗雷德 =随机 (0, 255); fgreen =随机 (0, 255); fblue =随机 (0, 255);蛇速度 =蛇速度 / 1.1; } else { leds[f].setRGB(fred, fgreen, fblue); FastLED.show(); }}无效死亡(){蛇大小=2;蛇速度 =500;红色 =255;绿色 =0;蓝色 =0; }void color(boolean sw){ if(!sw){ red =random(0,255);绿色 =随机(0,255);蓝色 =随机(0,255); }}void loop() { color( digitalRead(swPin) ); newDirection =Snakedirection(lastDirection,analogRead(pinX),analogRead(pinY)); lastDirection =蛇移动(新方向);食物(新方向);延迟(蛇速度);}

示意图


制造工艺

  1. Arduino 游戏控制器
  2. Arduino Pong Game on 24x16 Matrix with MAX7219
  3. 自制 16x8 矩阵上的 Arduino Nano 俄罗斯方块游戏
  4. Arduino 带蓝牙控制 LED!
  5. LED Matrix + Motion Sensor Door Display [Arduino Holiday]
  6. Arduino Quadruped
  7. 像素追逐游戏
  8. 单 LED 矩阵 Arduino 翻转时钟
  9. Arduino RGB 混色器
  10. 使用 Arduino Uno 控制 LED 矩阵
  11. 带 WS2812 LED 灯条的 DIY Arduino 1D 乒乓球游戏
  12. DMX RGB LED 户外