您的位置:首页 > 软件教程 > 教程 > 贪吃蛇穿越边界实验

贪吃蛇穿越边界实验

来源:好特整理 | 时间:2024-05-05 15:46:17 | 阅读:178 |  标签: T 2 UNO S C Ino in AR 贪吃蛇 Arduino LCD 实验 蓝牙   | 分享到:

1.前言: 1.1本实验实现的贪吃蛇能穿越边界,结束游戏的唯一条件是贪吃蛇到达指定长度 1.2本实验所用LCD可能不是LCD12864,LCD12864所用库为u8glib,笔者在词库中并没有找到型号为ST77355的初始化函数,而是在ucglib中找到,其方法为 Ucglib_ST7735_18x

1.前言:
1.1 本实验实现的贪吃蛇能穿越边界,结束游戏的唯一条件是贪吃蛇到达指定长度。
1.2 本实验所用LCD可能不是LCD12864,LCD12864所用库为u8glib,笔者在词库中并没有找到型号为ST77355的初始化函数,而是在ucglib中找到,其方法为
Ucglib_ST7735_18x128x160_SWSPI ucg(/*sclk=*/13, /*data=*/11, /*cd=*/9, /*cs=*/10, /*reset=*/8);
1.3 代码由学长LCD1602修改而来。

2.接线方式

蓝牙模块 RXD TXD GND VCC
Arduino uno pin7 pin6 5v GND
ST7735S模块 BLK CS DC RST SDA SCL VDD VCC
Arduino uno 3.3v pin10 pin9 pin8 pin11 pin13 未接 GND

3.话不多说上代码

点击查看代码
#include 
#include 
#include "Ucglib.h"
#define maxlength 4 //蛇最大长度
Ucglib_ST7735_18x128x160_SWSPI ucg(/*sclk=*/13, /*data=*/11, /*cd=*/9, /*cs=*/10, /*reset=*/8);
SoftwareSerial BT(6, 7);
char val;//蓝牙接收字符
int snake_length = 1;//蛇目前长度
int snake_x[maxlength], snake_y[maxlength];
int direction = 6;//方向判断和闪屏控制
int x = 10;
int y = 10;//记录变化的位置
int food_x;
int food_y;//食物
int gameOver = 0;//结束条件
void setup(void) {
  //delay(1000);
  ucg.begin(UCG_FONT_MODE_TRANSPARENT);
  //ucg.begin(UCG_FONT_MODE_SOLID);
  ucg.clearScreen();
  BT.begin(9600);
  snake_x[0] = 10;
  snake_y[0] = 10;
  food_x = 10 + 10 * random(0, 9);
  food_y = 10 + 10 * random(0, 9);
}

void loop(void) {
  if (direction == 6) {//欢迎界面
    ucg.setFont(ucg_font_ncenR12_tr);//字体设置
    ucg.setPrintPos(40, 80);//设定显示坐标
    ucg.print("welcome");
  } else
    ucg.drawFrame(10, 10, 100, 100);//游戏区域,有没有无所谓
  if (BT.available()) {
    val = BT.read();
    if (val == 'w' && direction != 2) direction = 0;
    if (val == 's' && direction != 0) direction = 2;
    if (val == 'a' && direction != 1) direction = 3;
    if (val == 'd' && direction != 3) direction = 1;
  }
  if (direction == 0) y -= 10;  //w
  if (direction == 1) x += 10;  //d
  if (direction == 2) y += 10;  //s
  if (direction == 3) x -= 10;  //a

  if (x < 10) x = 100;
  if (x > 100) x = 10;
  if (y < 10) y = 100;
  if (y > 100) y = 10;//到达边界后穿过边界

  if (x == food_x && y == food_y) {//行动后吃到食物
    snake_length++;
    while (1) {
      int flag = 1;//跳出循环标志
      food_x = 10 + 10 * random(0, 9);
      food_y = 10 + 10 * random(0, 9);//重新生成一个食物

      for (int i = snake_length - 1; i >= 0; i--) {//遍历蛇身看食物是否生成在身上
        if ((food_x == snake_x[i]) && (food_y == snake_y[i]) || ((food_x == x) && (food_y == y))) {
          flag = 0;
          break;
        }
      }
      if (snake_length == maxlength) {//游戏结束条件
        gameOver = 1;
        direction=5;//结束后显示gameover时的闪屏控制
        break;
      }
      if (flag) break;
    }
  }

  if (direction != 6) {
    for (int i = snake_length - 1; i > 0; i--) {
      snake_x[i] = snake_x[i - 1];
      snake_y[i] = snake_y[i - 1];
    }
    snake_x[0] = x;
    snake_y[0] = y;
    if (gameOver) {
      if(direction==5){
        ucg.clearScreen();
        direction=1;
      }
      else{
        ucg.setFont(ucg_font_ncenR12_tr);
        ucg.setPrintPos(40, 80);
        ucg.print("gameover");
      }
      
    }
    if (!gameOver) {
      ucg.clearScreen();
      for (int i = 0; i < snake_length; i++) {
        ucg.drawFrame(snake_x[i], snake_y[i], 10, 10);
      }
      ucg.drawFrame(food_x, food_y, 10, 10);
    }
  }
}

4.来人上图
贪吃蛇穿越边界实验

再上
贪吃蛇穿越边界实验

还上
贪吃蛇穿越边界实验
使用手机app蓝牙串口调试,发送wasd,对应上左下右

5.回顾(复习看)
头文件:

5.1LCD相关函数
LCD初始化
Ucglib_ST7735_18x128x160_SWSPI ucg(/*sclk=*/13, /*data=*/11, /*cd=*/9, /*cs=*/10, /*reset=*/8);
显示矩形,其左上角坐标为(snake_x[i], snake_y[i]),长度和宽度为10
ucg.drawFrame(snake_x[i], snake_y[i], 10, 10);
显示像素点,其坐标坐标为(x,y)
ucg.drawPixel(x,y)
清屏
ucg.clearScreen();
初始化,两者区别不知道
ucg.begin(UCG_FONT_MODE_TRANSPARENT); //ucg.begin(UCG_FONT_MODE_SOLID);
字体、显示坐标、显示函数
ucg.setFont(ucg_font_ncenR12_tr); ucg.setPrintPos(40, 80); ucg.print("welcome");

5.2蓝牙相关函数
SoftwareSerial BT(6, 7);
读app发来的信息
if (BT.available()) char val = BT.read();

6.说明
如有同道中人,请删去注释

小编推荐阅读

好特网发布此文仅为传递信息,不代表好特网认同期限观点或证实其描述。

贪吃蛇 5.15.0
贪吃蛇 5.15.0
类型:休闲益智  运营状态:正式运营  语言:中文   

游戏攻略

游戏礼包

游戏视频

游戏下载

游戏活动

贪吃蛇免费版是一款经典有趣的手机游戏。在游戏中,玩家可以操纵一条小蛇,不断吞噬资源,并努力成为游戏
贪吃蛇io 1.40
贪吃蛇io 1.40
类型:休闲益智  运营状态:正式运营  语言: 英文   

游戏攻略

游戏礼包

游戏视频

游戏下载

游戏活动

《贪吃蛇io》是由开发商VOODOO开发的一款贪吃蛇题材的款技对战类游戏,玩家们将进入一个赛道中,控制自己

相关视频攻略

更多

扫二维码进入好特网手机版本!

扫二维码进入好特网微信公众号!

本站所有软件,都由网友上传,如有侵犯你的版权,请发邮件[email protected]

湘ICP备2022002427号-10 湘公网安备:43070202000427号© 2013~2024 haote.com 好特网