0.png (86.57 KB, 下載次數: 51)
下載附件
2019-3-18 22:34 上傳
Arduino源程序如下:
- #include "U8glib.h"
- #define RIGHT 0
- #define UP 1
- #define LEFT 2
- #define DOWN 3
- /*
- * OLED
- arduino OLED
- D9 > MOSI
- D10 > SCK
- D11 > DC
- D12 > CS
- D13 > RES
- SW SPI COM:
- SCK = 10, MOSI = 9 , CS = 12, A0 = 11, RES = 13
- */
- U8GLIB_SSD1306_128X64 u8g(10, 9, 12, 11, 13);
- int score = 0;
- int level = 1;
- int gamespeed = 100;
- int i;
- //組成單位,4X4像素點的方塊。
- const uint8_t ele[] PROGMEM = {
- 0xf0, //B1111000
- 0xb0, //B1011000
- 0xd0, //B1101000
- 0xf0, //B1111000
- };
- //蛇
- void element(int x, int y) {
- u8g.drawBitmapP(x,y, 1,4, ele);
- }
- struct FOOD {
- int x;
- int y;
- int yes;
- };
- FOOD food = {25, 30, 1};
- struct SNAKE {
- int x[200];
- int y[200];
- int node;
- int dir;
- int lefe;
- };
- SNAKE snake = {{9,5}, {30,30}, 2, RIGHT, 0};
- //游戲基本界面
- void UI() {
- u8g.drawFrame(0,1, 102,62); //內邊界
- u8g.drawFrame(0,0, 102,64); //外邊界
- u8g.setFont(u8g_font_5x7); //設置字體
- u8g.drawStr(104,12, "LEVEL"); //等級提示
- u8g.drawStr(104,40, "SCORE"); //分數提示
- }
- void printScore(int x, int y, int s) {
- u8g.setFont(u8g_font_6x10);
- u8g.setPrintPos(x, y);
- u8g.print(s);
- }
- void key() {
- if(LOW == digitalRead(2)) {
- snake.dir = DOWN;
- }
- if(LOW == digitalRead(3)) {
- snake.dir = RIGHT;
- }
- if(LOW == digitalRead(4)) {
- snake.dir = LEFT;
- }
- if(LOW == digitalRead(5)) {
- snake.dir = UP;
- }
- }
- void snakeGame() {
- switch(snake.dir) {
- case RIGHT:
- snake.x[0] += 4;
- if(snake.x[0]>=101) {
- snake.x[0] = 1;
- } break;
- case UP:
- snake.y[0] -= 4;
- if(snake.y[0]<=1) {
- snake.y[0] = 58;
- } break;
- case LEFT:
- snake.x[0] -= 4;
- if(snake.x[0]<=0) {
- snake.x[0] = 97;
- } break;
- case DOWN:
- snake.y[0] += 4;
- if(snake.y[0]>=62) {
- snake.y[0] = 2;
- } break;
- }
-
- if((snake.x[0] == food.x) && (snake.y[0] == food.y)) {
- snake.x[0] = food.x;
- snake.y[0] = food.y;
-
- snake.node++;
- food.yes = 1;
- score += 2;
- level = score/10+1;
- }
- for(i=snake.node-1;i>0;i--) {
- snake.x[i] = snake.x[i-1];
- snake.y[i] = snake.y[i-1];
- }
- }
- void setup() {
- pinMode(2, INPUT);
- pinMode(3, INPUT);
- pinMode(4, INPUT);
- pinMode(5, INPUT);
-
- digitalWrite(2, HIGH);
- digitalWrite(3, HIGH);
- digitalWrite(4, HIGH);
- digitalWrite(5, HIGH);
- }
- void loop() {
- u8g.firstPage();
- do {
- UI();
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
7Pin0.96 SPIsnake_arduino.rar
(453.49 KB, 下載次數: 32)
2019-3-18 20:17 上傳
點擊文件名下載附件
arduino控制 下載積分: 黑幣 -5
|