Gamebuino制作的小游戏之2048代码分析 setup部分

期末实验截止日期将近,奈何还是啥也不会。这次实验选择在gamebunio上制作自己DIY一个小游戏。可是对于ardunio实在不熟悉,万般无奈只好选择官网上2048的小游戏进行代码分析,来了解大致结构,以备后期画瓢。

void setup() {
  gb.begin();               //初始化Gamebuino。应该在setup()函数的开头调用一次.然后调用gb.titleScreen() and gb.pickRandomSeed().
  gb.titleScreen(F("JWinslow23 presents"), Title2048);//显示标题屏幕。应该在启动时出现的gb.begin()函数之后调用。当用户按下“C”键离开游戏时,您还应该允许用户返回标题屏幕
  gb.display.persistence = true;     //不清除每一帧之间的显示;
  ResetDisplay();         //复位显示
  gb.battery.show = false;        //电池状态显示
  gb.pickRandomSeed();
  if(isValidGame()) {
    restoreGame();
    gb.popup(F("Back already?"),40);
  } else {
    newSave(false);
    gb.popup(F("Welcome to 2048!"),40);    //弹出文本2s
  }
}

gb.begin

初始化Gamebuino。应该在setup()函数的开头调用一次,然后调用gb.titleScreen()和gb.pickRandomSeed()。

gb.begin();

gb.titleScreen

  显示标题屏幕。应该在启动时出现的gb.begin()函数之后调用。当用户按下“C”键离开游戏时,您还应该允许用户返回标题屏幕,因为标题屏幕允许您在游戏之间切换。
在标题界面,你可以做以下事情:

  • 按钮A:离开标题屏幕(回到游戏中)
  • 按钮B:切换声音(静音/非静音)。如果你在启动Gamebuino时按住B键,它就会静音,无法播放启动声音。
  • 按钮C:加载加载器。
gb.titleScreen(F("name"), logo);

F("name")(可选):将“name”替换为游戏名(但保留“”)。将显示在“开始”菜单中。
logo(可选):游戏的logo。任何大小,从8*8px到64*30px,或者,如果没有指定名称,到64*36px


gb.pickRandomSeed

混合使用电池电压,环境光传感器和自启动以来经过的时间来随机选择seed。 它应放在gb.begin()和gb.titleScreen()之后,这样随机seed将取决于用户按下“ A”离开标题屏幕所花费的时间。

gb.pickRandomSeed();

gb.display.persistence

选择是否自动清除屏幕之间的每一帧

gb.display.persistence = true;
  • true:不清除每一帧之间的显示;
  • false:清除每一帧之间的显示默认值为false。

接下来看一看ResetDisplay();

void ResetDisplay() {
  gb.display.clear();
  gb.display.drawBitmap(56,0,Logo2048);
  gb.display.drawRect(53,7,31,13);
  gb.display.drawRect(53,21,31,13);
  gb.display.cursorX = 55;
  gb.display.cursorY = 9;
  gb.display.print(gameState.score);
  gb.display.cursorX = 55;
  gb.display.cursorY = 23;
  gb.display.print(gameState.highscore);
  gb.display.setFont(font3x3);
  gb.display.cursorX = 55;
  gb.display.cursorY = 15;
  gb.display.print(F("POINTS"));
  gb.display.cursorX = 55;
  gb.display.cursorY = 29;
  gb.display.print(F("HIGH"));
  gb.display.setFont(font3x5);
  gb.display.cursorX = 53;
  gb.display.cursorY = 35;
  gb.display.print(F("\25:save"));
  gb.display.cursorX = 53;
  gb.display.cursorY = 42;
  gb.display.print(F("\26:reset"));
}

效果图(右侧部分)

Gamebuino制作的小游戏之2048代码分析 setup部分_第1张图片

 

gb.display.clear

清除显示缓冲区(清除所有内容)并将文本光标设置回0,0(左上角)。如果您需要在每一帧清除显示,请设置 gb.display.persistence=ture(与手动相比,它将提供更好的图像稳定性)。

gb.display.clear();

gb.display.drawBitmap

用于在屏幕上显示作为字节数组的位图

gb.display.drawBitmap(x,y,bitmap,rotation,flip);
  • x:绘制位图的x坐标
  • y:绘制位图的y坐标
  • bitmap:字节数组旋转(可选):位图的旋转NOROT, ROTCCW, ROT180, ROTCW
  • flip(可选):位图如何翻转NOFLIP, FLIPH, FLIPV, FLIPVH

gb.display.drawRect

在指定位置绘制矩形。使用的颜色是使用gb.display.setColor()定义的。如果指定的值导致矩形的某些部分离开屏幕,则不会呈现它们。

gb.display.drawRect(x, y, w, h);
  • x:左上角的横坐标。
  • y:左上角的垂直坐标。
  • w:矩形的宽度。
  • h:矩形的高。

gb.display.cursorX

gb.display.cursorY

设置光标的X位置。用于设置gb.display.print的位置。打印和gb.display.println。使用0到83之间的值可以查看文本(或文本的一部分)。设置光标的Y位置。用于设置gb.display.print的位置。打印和gb.display.println。使用0到47之间的值可以查看文本(或文本的一部分)。(因为是用Nokia5110屏幕分辨率为84*48

gb.display.cursorX = x;
gb.display.cursorY = y;
  • x:任何数字都可以。
  • y:任何数字都可以。

gb.display.print

将数据作为可读的ASCII文本打印到屏幕上。这个命令可以有多种形式。数字使用ASCII字符打印每个数字。浮点数以类似的方式打印为ASCII数字,默认为两位小数。字节作为单个字符发送。字符和字符串按原样发送。

  • Serial.print(78) gives "78"
  • Serial.print(1.23456) gives "1.23"
  • Serial.print('N') gives "N"
  • Serial.print("Hello world.") gives "Hello world."

可选的第二个参数指定要使用的基本(格式);允许的值是BIN(二进制)、OCT(八进制)、DEC(十进制)、HEX(十六进制)。对于浮点数,此参数指定要使用的小数位数。

  • Serial.print(78, BIN) gives "1001110"
  • Serial.print(78, OCT) gives "116"
  • Serial.print(78, DEC) gives "78"
  • Serial.print(78, HEX) gives "4E"
  • Serial.println(1.23456, 0) gives "1"
  • Serial.println(1.23456, 2) gives "1.23"

为了节省RAM,建议将基于闪存的字符串传递给Serial.print(),方法是用F()封装它们。

  • Serial.print(F(“Hello World”))

用于设置要打印的位置以使用gb.display.cursorX 和gb.display.cursorY。在打印文本/数字之后,光标将位于所打印内容的末尾。
您可以gb.display.setFont更改字体。可以使用gb.display.fontSize更改文本的大小。

gb.display.setFont

更改在gb.display.print和gb.display.drawChar中使用的字体,可以是一种默认字体,也可以是一种自定义字体。创建你自己的工具在GitHub上。要使用一种默认字体,不要忘记添加extern const byte font3x3[],在程序的开头

gb.display.setFont(font);

字体:自己想要的字体

  • font3x3(长3宽3)
  • font3x5(长5宽3)
  • font5x7(长7宽5)

gb.battery.show

选择在屏幕右上角显示或不显示电池电量指示。注意,电池电量指示将设置为每次 gb.titleScreen is calls

gb.battery.show = true;
  • true:显示电池指示错误:
  • false:不显示电池指示

gb.popup

在给定的持续时间内,在屏幕底部显示弹出消息。

gb.popup(F("Text"), duration);
  • F("Text") (progmem char*):要弹出的文本
  • duration(byte):弹出窗口在屏幕上停留的时间,以帧数表示(默认为每秒20帧)

告一段落,明天继续来loop

你可能感兴趣的:(Gamebuino制作的小游戏之2048代码分析 setup部分)