■gb.display.drawLine関数
Gamebuimo.hライブラリのgb.display.drawLine関数は、ある点から別の点へ直線を描画します。
使用される色は、gb.display.setColor()関数によって定義されます。
■使用例
gb.display.drawLine関数を使ったArduinoIDEのプログラム例は図1の通りです。
このプログラムを実行するとsetup関数中のgb.begin関数でGamebuinoオブジェクトを初期化し、gb.titleScreen関数で画面に「collidePointRect」と表示します。
スタート画面でキーボードの「K」(GamebuinoのA)ボタンを押すと画面左上に「Move with arrows」と表示されポイントをカーソルキーで動かすことが可能になります。この時gb.display.drawLine関数によってポイントの位置を把握し易くする補助線が描画されます。
黒枠内にポイントが移動したとgb.collidePointRect関数で判定されると「Colliding」と画面に表示されます。
参考に図1プログラムをHEXファイルに変換し、それをSimbuino4Webでエミュレートした結果を図2に示します。
#include <SPI.h> #include <Gamebuino.h> Gamebuino gb; byte player_x = 20; byte player_y = 20; byte oponent_x = LCDWIDTH / 2; byte oponent_y = LCDHEIGHT / 2; byte oponent_w = 17; byte oponent_h = 12; void setup() { gb.begin(); gb.titleScreen(F("collidePointRect")); } void loop() { if (gb.update()) { gb.display.println(F("\n Move with arrows")); if (gb.buttons.pressed(BTN_C)) { gb.titleScreen(F("collidePointRect")); } //update player if (gb.buttons.repeat(BTN_RIGHT, 1)) { player_x = player_x + 1; } if (gb.buttons.repeat(BTN_LEFT, 1)) { player_x = player_x - 1; } if (gb.buttons.repeat(BTN_DOWN, 1)) { player_y = player_y + 1; } if (gb.buttons.repeat(BTN_UP, 1)) { player_y = player_y - 1; } //update collisions if (gb.collidePointRect(player_x, player_y, oponent_x, oponent_y, oponent_w, oponent_h)) { gb.sound.playTick(); gb.display.print(F(" Colliding")); } //draw oponent gb.display.fillRect(oponent_x, oponent_y, oponent_w, oponent_h); //draw player gb.display.setColor(INVERT); gb.display.drawPixel(player_x, player_y); gb.display.setColor(BLACK); //draw a few lines to help seeing the pixel: gb.display.drawLine(0, player_y, 3, player_y); gb.display.drawLine(player_x, 0, player_x, 3); gb.display.drawLine(player_x, LCDHEIGHT - 3, player_x, LCDHEIGHT); gb.display.drawLine(LCDWIDTH - 3, player_y, LCDWIDTH, player_y); } }
■構文
gb.display.drawLine(x0、y0、x1、y1)
■パラメータ
x0:最初の点の水平座標
※ディスプレイ左側「0」から、ディスプレイ右側「LCDWIDTH」の間にある必要があります。
y0:最初の点の垂直座標
※ディスプレイ最上部「0」から、ディスプレイ最下部「LCDHEIGHT」の間にある必要があります。
x1:2番目の点の水平座標
y1:2番目の点の垂直座標
■戻り値
ありません