第四章 arduboy游戏编程之Arduboy2库介绍

第四章 arduboy游戏编程之Arduboy2库介绍

Arduboy 为开发者提供了一套能够自己编写游戏的库,在进行 arduboy 游戏编程之前,都需要在Arduino IDE 中安装该库,下面就对所安装的 Arduboy2 库进行说明。

Arduboy2 库源码链接

Arduboy2

Arduboy2 库函数文档说明

这里提供一份 Arduboy2 库相关的说明文档,该文档使用 doxygen 生成可以下载下来直接用浏览器打开查看。
Arduboy2库函数说明文档

绘图函数

//绘制空心圆
void drawCircle (int16_t x0, int16_t y0, uint8_t r, uint8_t color=WHITE);
void fillCircle (int16_t x0, int16_t y0, uint8_t r, uint8_t color=WHITE);
// 绘制线
void drawLine (int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint8_t color=WHITE);
// 绘制垂直线
void drawFastVLine (int16_t x, int16_t y, uint8_t h, uint8_t color=WHITE);
// 绘制水平线
void drawFastHLine (int16_t x, int16_t y, uint8_t w, uint8_t color=WHITE);
// 绘制矩形
void drawRect (int16_t x, int16_t y, uint8_t w, uint8_t h, uint8_t color=WHITE);
// 绘制填充矩形
void fillRect (int16_t x, int16_t y, uint8_t w, uint8_t h, uint8_t color=WHITE);
// 填充屏幕
void fillScreen(uint8_t color = WHITE);
// 绘制圆角矩形
void drawRoundRect(int16_t x,int16_t y,uint8_t w,uint8_t h,uint8_t r,uint8_t color = WHITE);
// 绘制圆角填充矩形
void fillRoundRect(int16_t x,int16_t y,uint8_t w,uint8_t h,uint8_t r,uint8_t color = WHITE);
// 绘制三角形 (x0,y0) (x1,y1) (x2,y2) 为三角形的三个角的坐标
void drawTriangle(int16_t x0,int16_t y0,int16_t x1,int16_t y1,int16_t x2,int16_t y2,uint8_t color = WHITE);
// 绘制填充三角形
void fillTriangle(int16_t x0,int16_t y0,int16_t x1,int16_t y1,int16_t x2,int16_t y2,uint8_t color = WHITE);
// 绘制点
void drawPixel(int16_t x,int16_t y,uint8_t color = WHITE);

绘图函数测试

#include <Arduboy2.h>
Arduboy2 arduboy;
void setup() {
  arduboy.begin();
  arduboy.setFrameRate(15);
}

void loop() {
  if (!(arduboy.nextFrame()))
    return;
  arduboy.clear();
  // (positions start at 0, 0)
  arduboy.setCursor(4, 5);
  // then we print to screen what is in the Quotation marks ""
  arduboy.print(F("Hello, world!"));
  arduboy.drawCircle(50,20,5,WHITE);
  arduboy.drawCircle(80,20,5,WHITE);
  arduboy.drawLine(0,40,127,40,WHITE);
  arduboy.fillRect(65,32,2,6,WHITE);
  arduboy.drawRect(55,50,20,3,WHITE);
  arduboy.display();
}

arduboy-draw

按键相关函数

Arduboy 上面一共提供了 6个按键,分别为 上、下、左、右、A、B,可以利用这六个按键作为输入进行游戏控制,下面介绍一下这六个按键控制相关的库函数及宏。

按键相关宏

// 上
UP_BUTTON
// 下
DOWN_BUTTON
// 左
LEFT_BUTTON
// 右
RIGHT_BUTTON

// A
A_BUTTON
// B
B_BUTTON

按键相关库函数

// 检测按键是否按下
bool 	pressed (uint8_t buttons);
bool 	anyPressed (uint8_t buttons);
//检测按键是否未按下
bool 	notPressed (uint8_t buttons);
// 轮询按钮并跟踪状态
void 	pollButtons ();
// 检测按键是否刚刚按下
bool 	justPressed (uint8_t button);
// 检测按键是否刚刚释放
bool 	justReleased (uint8_t button);
// 检测所有按键的当前状态并返回位掩码
static uint8_t 	buttonsState ();

测试代码

#include <Arduboy2.h>
Arduboy2 arduboy;
int counter;
void setup() {
  arduboy.begin();
  arduboy.clear();
  counter = 0;
}
void loop() {
  arduboy.clear();
  if( arduboy.pressed(UP_BUTTON) ) {
    counter = counter + 1;
  }
  if( arduboy.pressed(DOWN_BUTTON) ) {
    counter = counter - 1;
  }
  if(arduboy.pressed(LEFT_BUTTON))
  {
    arduboy.setCursor(30, 40);
     arduboy.print("LEFT!");
  }
  if(arduboy.pressed(RIGHT_BUTTON))
  {
    arduboy.setCursor(30, 40);
     arduboy.print("RIGHT!");
  }
 if(arduboy.pressed(A_BUTTON))
  {
    arduboy.setCursor(30, 40);
     arduboy.print("A BUTTON TEST!");
  }
   if(arduboy.pressed(B_BUTTON))
  {
    arduboy.setCursor(30, 40);
    arduboy.print("B BUTTON TEST!");
  }
  if( counter > 36 ) {
    
    arduboy.setCursor(30, 30);
    arduboy.print("Yay!");
  }
  arduboy.setCursor(0, 0);
  arduboy.print(counter);
  arduboy.display();
}

arduboy-button-test

RGB-LED相关函数

arduboy 硬件带有一颗RGB-LED ,可以用这颗led灯珠来指示当前游戏的进度和状态。

控制rgb-led函数

// RGB LED 模拟控制 可以调整LED的亮度值
static void 	setRGBled (uint8_t red, uint8_t green, uint8_t blue);
static void 	setRGBled (uint8_t color, uint8_t val);
// 释放 RGB LED 模拟控制
static void 	freeRGBled ();
// RGB LED 数字控制 只能开关 RGB LED
static void 	digitalWriteRGB (uint8_t red, uint8_t green, uint8_t blue);
static void 	digitalWriteRGB (uint8_t color, uint8_t val);

测试代码

这里使用模拟器测试 RGB-LED 的代码好像有点问题,在模拟器上面有一些测试的不太准,不过RGB-LED 灯还是有的,可以在模拟器上面运行下面的代码进行测试。

#include <Arduboy2.h>
Arduboy2 arduboy;
int counter;
void setup() {
  arduboy.begin();
  arduboy.clear();
  counter = 0;
 
  
}
void loop() {
  arduboy.clear();
  if( arduboy.pressed(UP_BUTTON) ) {
    counter = counter + 1;
  }
  if( arduboy.pressed(DOWN_BUTTON) ) {
    counter = counter - 1;
  }
  if(arduboy.pressed(LEFT_BUTTON))
  {
    arduboy.setCursor(30, 40);
     arduboy.print("LEFT!");
  }
  if(arduboy.pressed(RIGHT_BUTTON))
  {
    arduboy.setCursor(30, 40);
     arduboy.print("RIGHT!");
  }
 if(arduboy.pressed(A_BUTTON))
  {
    arduboy.setCursor(30, 40);
     arduboy.print("A BUTTON TEST!");
    //arduboy.freeRGBled();
    //arduboy.digitalWriteRGB(RGB_OFF,RGB_ON,RGB_ON);
  }
   if(arduboy.pressed(B_BUTTON))
  {
    arduboy.setCursor(30, 40);
    arduboy.print("B BUTTON TEST!");
  }
  if( counter > 36 ) {
    
    arduboy.setCursor(30, 30);
    arduboy.print("RGB-LED TEST");
    arduboy.freeRGBled();
    arduboy.digitalWriteRGB(RGB_ON,RGB_ON,RGB_ON);
  }
  else
  {
    arduboy.freeRGBled();
    arduboy.digitalWriteRGB(RGB_OFF,RGB_ON,RGB_OFF);
  }
  arduboy.setCursor(0, 0);
  arduboy.print(counter);
  arduboy.display();
}

rgbled1
rgbled2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

飘雪冰峰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值