NOBのArduino日記!

NOBのArduino日記!

趣味は車・バイク・自転車・ラジコン・電子工作です。

Arduino IDE(gb.display.drawLine関数の使い方)

■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);
   }
}
イメージ 1
図1:プログラム例
 

 イメージ 1
図2:プログラム実行結果

 

■構文
 gb.display.drawLine(x0、y0、x1、y1)

■パラメータ
 x0:最初の点の水平座標
 ※ディスプレイ左側「0」から、ディスプレイ右側「LCDWIDTH」の間にある必要があります。
 y0:最初の点の垂直座標
 ※ディスプレイ最上部「0」から、ディスプレイ最下部「LCDHEIGHT」の間にある必要があります。
 x1:2番目の点の水平座標
 y1:2番目の点の垂直座標

■戻り値
 ありません
 

イメージ 1 イメージ 3
励みになりますのでよければクリック下さい(^o^)/

↩【Gamebuinoリファレンス】目次に戻る