arduino ide编写的esp32和st773580*160的一个接球小游戏

这篇文章详细描述了一个使用TFT_eSPI库开发的LED游戏,玩家通过移动光点并触碰目标区域来得分,达到一定分数后获胜。代码展示了初始化、设置和游戏循环部分。
摘要由CSDN通过智能技术生成

#include<TFT_eSPI.h>

#define led 2

int bx,by=5,x=65,y=57,mark,level=1;

const int r=5,sjs=23,pin=13;

TFT_eSPI tft=TFT_eSPI();

uint16_t color=tft.color565(128,0,128); //RGB颜色转GBR565,紫色

void setup()

{

  // put your setup code here, to run once:

  Serial.begin(921600);

  pinMode(led,OUTPUT);

  pinMode(pin,INPUT);

  digitalWrite(led,LOW);

  tft.init();

  tft.fillScreen(TFT_WHITE);

  tft.setRotation(3);

  tft.setTextSize(2);

  tft.setTextColor(TFT_BLACK);

  randomSeed(analogRead(sjs)); //使用一个引脚来作为随机数种子

  bx=random(5,155);

}

void loop()

{

  // put your main code here, to run repeatedly:

  if(bx>=x&&bx<=x+15&&by+5>=y&&by+5<=y+3)

  {

    mark++;

    if(mark%5==0)

    {

      level++;

    }

    tft.fillScreen(TFT_WHITE);

    tft.setCursor(0,0);

    tft.println("you win!");

    tft.print("your mark:");

    tft.println(mark);

    tft.print("your level:");

    tft.print(level);

    delay(1000);

    tft.fillScreen(TFT_WHITE);

    randomSeed(analogRead(sjs));

    bx=random(5,155);

    by=5;

    x=65;

    y=57;

  }

  if(bx<=155&&bx>=5&&by>=5&&by<=75)

  {

    tft.fillRect(x,y,15,3,TFT_BLACK);

    tft.fillCircle(bx,by,r,color);

    tft.drawPixel(bx,by,TFT_WHITE);

    delay(100);

    tft.fillCircle(bx,by,r,TFT_WHITE);

    tft.fillRect(x,y,15,3,TFT_WHITE);

    x=double(analogRead(13))/4095.00*145;

    Serial.println(bx>=x&&bx<=x+15&&by+5<=y&&by+5>=y+3);

    Serial.print(x);

    Serial.print(" ");

    Serial.print(bx);

    Serial.print(" ");

    Serial.println(by);

    by+=2*level+1;

  }

  else

  {

    tft.fillScreen(TFT_WHITE);

    tft.setCursor(0,0);

    tft.println("Game ovor!");

    tft.print("your mark:");

    tft.println(mark);

    tft.print("your level:");

    tft.print(level);

    digitalWrite(led,HIGH);

    delay(100);

    digitalWrite(led,LOW);

    delay(100);

    digitalWrite(led,HIGH);

    delay(100);

    digitalWrite(led,LOW);

    delay(100);

    digitalWrite(led,HIGH);

    delay(3000);

    exit(0);

  }

}

#include<TFT_eSPI.h>
#define led 2
int bx,by=5,x=65,y=57,mark,level=1;
const int r=5,sjs=23,pin=13;
TFT_eSPI tft=TFT_eSPI();
uint16_t color=tft.color565(128,0,128); //RGB颜色转GBR565,紫色
void setup()
{
  // put your setup code here, to run once:
  Serial.begin(921600);
  pinMode(led,OUTPUT);
  pinMode(pin,INPUT);
  digitalWrite(led,LOW);
  tft.init();
  tft.fillScreen(TFT_WHITE);
  tft.setRotation(3);
  tft.setTextSize(2);
  tft.setTextColor(TFT_BLACK);
  randomSeed(analogRead(sjs)); //使用一个引脚来作为随机数种子
  bx=random(5,155);
}
void loop()
{
  // put your main code here, to run repeatedly:
  if(bx>=x&&bx<=x+15&&by+5>=y&&by+5<=y+3)
  {
    mark++;
    if(mark%5==0)
    {
      level++;
    }
    tft.fillScreen(TFT_WHITE);
    tft.setCursor(0,0);
    tft.println("you win!");
    tft.print("your mark:");
    tft.println(mark);
    tft.print("your level:");
    tft.print(level);
    delay(1000);
    tft.fillScreen(TFT_WHITE);
    randomSeed(analogRead(sjs));
    bx=random(5,155);
    by=5;
    x=65;
    y=57;
  }
  if(bx<=155&&bx>=5&&by>=5&&by<=75)
  {
    tft.fillRect(x,y,15,3,TFT_BLACK);
    tft.fillCircle(bx,by,r,color);
    tft.drawPixel(bx,by,TFT_WHITE);
    delay(100);
    tft.fillCircle(bx,by,r,TFT_WHITE);
    tft.fillRect(x,y,15,3,TFT_WHITE);
    x=double(analogRead(13))/4095.00*145;
    Serial.println(bx>=x&&bx<=x+15&&by+5<=y&&by+5>=y+3);
    Serial.print(x);
    Serial.print(" ");
    Serial.print(bx);
    Serial.print(" ");
    Serial.println(by);
    by+=2*level+1;
  }
  else
  {
    tft.fillScreen(TFT_WHITE);
    tft.setCursor(0,0);
    tft.println("Game ovor!");
    tft.print("your mark:");
    tft.println(mark);
    tft.print("your level:");
    tft.print(level);
    digitalWrite(led,HIGH);
    delay(100);
    digitalWrite(led,LOW);
    delay(100);
    digitalWrite(led,HIGH);
    delay(100);
    digitalWrite(led,LOW);
    delay(100);
    digitalWrite(led,HIGH);
    delay(3000);
    exit(0);
  }
}

  • 48
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值