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)
|