From a096d06ee22c6d221adc567ac72409996fc28201 Mon Sep 17 00:00:00 2001 From: botamochi6277 Date: Sat, 26 Aug 2017 14:34:15 +0900 Subject: [PATCH] remove clear() --- i2cLCDanalog/i2cLCDanalog.ino | 2 +- i2cLCDgame/i2cLCD.h | 13 ++++++++++++ i2cLCDgame/i2cLCDgame.ino | 40 ++++++++++++++++++++++++++++------- 3 files changed, 46 insertions(+), 9 deletions(-) diff --git a/i2cLCDanalog/i2cLCDanalog.ino b/i2cLCDanalog/i2cLCDanalog.ino index 0781b94..2bee42c 100644 --- a/i2cLCDanalog/i2cLCDanalog.ino +++ b/i2cLCDanalog/i2cLCDanalog.ino @@ -44,7 +44,7 @@ void loop() { average = total / numReadings; if(cnt%10){ - mylcd.clear(); + mylcd.move(0,0); sprintf(s, "A0 avr = %04d", average); for(int i=0;i<16;i++){ mylcd.writeData(s[i]); diff --git a/i2cLCDgame/i2cLCD.h b/i2cLCDgame/i2cLCD.h index b234748..f5a5c17 100644 --- a/i2cLCDgame/i2cLCD.h +++ b/i2cLCDgame/i2cLCD.h @@ -90,6 +90,19 @@ class i2cLCD { } delay(20); } + /** + * @brief fill the display with one charactor + * @param c filling charactor + */ + void fill(char c){ + for(int j = 0; j < 2; ++j){ + move(j,0); + for(int i=0;i<16;++i){ + writeData(c); + } + } + + } }; #endif diff --git a/i2cLCDgame/i2cLCDgame.ino b/i2cLCDgame/i2cLCDgame.ino index 8741699..8ad3fa1 100644 --- a/i2cLCDgame/i2cLCDgame.ino +++ b/i2cLCDgame/i2cLCDgame.ino @@ -7,6 +7,7 @@ int const BUTTON_PIN = 2; int playerPos[2];// player position, x-y int obstaclePos[10][2];// obstacle position, first index: obstacleId,second index: positon +char pixels[16][2]; int numObs = 0; unsigned long cnt = 0; @@ -72,18 +73,33 @@ void loop() { } //display - mylcd.clear(); + + // fill pixels with ` `(space) + for(int x = 0;x<16;++x){ + for(int y = 0; y<2 ;++y){ + pixels[x][y] = ' '; + } + } + for(int i=0;i < numObs;++i){ if(obstaclePos[i][0] > -1){ - mylcd.move(obstaclePos[i][1],obstaclePos[i][0]); - mylcd.writeData('*'); + pixels[obstaclePos[i][0]][obstaclePos[i][1]] = '*'; } } - mylcd.move(playerPos[1],playerPos[0]); + if(!isCrush){ - mylcd.writeData('>'); + pixels[playerPos[0]][playerPos[1]] = '>'; }else{ - mylcd.writeData('X'); + pixels[playerPos[0]][playerPos[1]] = 'X'; + } + + // write display + + for(int y = 0; y<2 ;++y){ + mylcd.move(y,0); + for(int x = 0;x<16;++x){ + mylcd.writeData(pixels[x][y]); + } } cnt++; @@ -98,7 +114,7 @@ void loop() { // Game over delay(3000); - mylcd.clear(); + mylcd.fill(' '); mylcd.move(0,0); char msg[] = "** GAME OVER **"; for(int i=0;i<16;i++){ @@ -114,5 +130,13 @@ void loop() { isCrush = false; cnt = 0; numObs = 0; - delay(10000); + + for(int i=0;i < numObs;++i){ + obstaclePos[i][0] = 0; + obstaclePos[i][1] = 0; + } + while(digitalRead(BUTTON_PIN)){ + delay(30); + } + }