feat: add leds integration for lives
This commit is contained in:
parent
04d24f0f9e
commit
4b3cc98b15
|
@ -18,7 +18,9 @@ const unsigned long display_interval = 100;
|
||||||
// number of milliseconds we refresh nunchuck info
|
// number of milliseconds we refresh nunchuck info
|
||||||
const unsigned long nunchuk_interval = 100;
|
const unsigned long nunchuk_interval = 100;
|
||||||
const unsigned int sound_tempo = 10;
|
const unsigned int sound_tempo = 10;
|
||||||
|
const int dataPin = 11;
|
||||||
|
const int clockPin = 5;
|
||||||
|
const int latchPin = 6;
|
||||||
U8G2_ST7920_128X64_2_SW_SPI u8g2(U8G2_R0, /* clock=*/ 2, /* data=*/ 10, /* cs=*/ 7);
|
U8G2_ST7920_128X64_2_SW_SPI u8g2(U8G2_R0, /* clock=*/ 2, /* data=*/ 10, /* cs=*/ 7);
|
||||||
//A5 A4 A3 A2
|
//A5 A4 A3 A2
|
||||||
ArduinoNunchuk nunchuk = ArduinoNunchuk();
|
ArduinoNunchuk nunchuk = ArduinoNunchuk();
|
||||||
|
@ -48,9 +50,21 @@ bool game_init = true;
|
||||||
bool jump = false;
|
bool jump = false;
|
||||||
bool jumpBack = false;
|
bool jumpBack = false;
|
||||||
bool jumpInProgress = false;
|
bool jumpInProgress = false;
|
||||||
unsigned int score = 0;
|
int score = 0;
|
||||||
unsigned int max_score = 0;
|
int max_score = 0;
|
||||||
short lives = 5;
|
short lives = 5;
|
||||||
|
int lives_leds[] = {
|
||||||
|
0b00000000,
|
||||||
|
0b00000001,
|
||||||
|
0b00000011,
|
||||||
|
0b00000111,
|
||||||
|
0b00001111,
|
||||||
|
0b00011111,
|
||||||
|
0b00111111,
|
||||||
|
0b00111111,
|
||||||
|
0b00111111,
|
||||||
|
0b00111111
|
||||||
|
};
|
||||||
|
|
||||||
//set A3 and A2 has +5V / GND
|
//set A3 and A2 has +5V / GND
|
||||||
void nunchuck_setpowerpins()
|
void nunchuck_setpowerpins()
|
||||||
|
@ -62,11 +76,14 @@ void nunchuck_setpowerpins()
|
||||||
PORTC |= _BV(pwrpin);
|
PORTC |= _BV(pwrpin);
|
||||||
delay(100); // wait for things to stabilize
|
delay(100); // wait for things to stabilize
|
||||||
}
|
}
|
||||||
|
|
||||||
void setup(void) {
|
void setup(void) {
|
||||||
|
|
||||||
//init serial for debug
|
//init serial for debug
|
||||||
Serial.begin(115200);
|
Serial.begin(115200);
|
||||||
|
//init leds
|
||||||
|
pinMode( dataPin, OUTPUT );
|
||||||
|
pinMode( clockPin, OUTPUT );
|
||||||
|
pinMode( latchPin, OUTPUT );
|
||||||
//init nunchuck
|
//init nunchuck
|
||||||
nunchuck_setpowerpins();
|
nunchuck_setpowerpins();
|
||||||
nunchuk.init();
|
nunchuk.init();
|
||||||
|
@ -74,9 +91,18 @@ void setup(void) {
|
||||||
u8g2.begin();
|
u8g2.begin();
|
||||||
//init sound
|
//init sound
|
||||||
tone1.begin(8);
|
tone1.begin(8);
|
||||||
|
//test leds
|
||||||
|
for(int i = 0; i <= 9; i++){
|
||||||
|
update_lives_leds(lives_leds[i]);
|
||||||
|
delay(200);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
void update_lives_leds( int value ){
|
||||||
|
digitalWrite( latchPin, LOW );
|
||||||
|
shiftOut( dataPin, clockPin, MSBFIRST,value );
|
||||||
|
digitalWrite( latchPin, HIGH );
|
||||||
|
}
|
||||||
void play_intro(){
|
void play_intro(){
|
||||||
if(SOUND_ENABLE){
|
if(SOUND_ENABLE){
|
||||||
if(millis() >= next_note){
|
if(millis() >= next_note){
|
||||||
|
@ -167,6 +193,7 @@ void init_game(){
|
||||||
score = 0;
|
score = 0;
|
||||||
max_score = 0;
|
max_score = 0;
|
||||||
lives = 5;
|
lives = 5;
|
||||||
|
update_lives_leds(lives_leds[lives]);
|
||||||
posX = INIT_X;
|
posX = INIT_X;
|
||||||
posY = INIT_Y;
|
posY = INIT_Y;
|
||||||
for ( short i = 0 ; i < NUM_FISHES; i++){
|
for ( short i = 0 ; i < NUM_FISHES; i++){
|
||||||
|
@ -177,7 +204,7 @@ void init_game(){
|
||||||
void missed_or_bomb(){
|
void missed_or_bomb(){
|
||||||
score = score - 10;
|
score = score - 10;
|
||||||
lives = lives - 1;
|
lives = lives - 1;
|
||||||
|
update_lives_leds(lives_leds[lives]);
|
||||||
play_sound(NOTE_B1,300);
|
play_sound(NOTE_B1,300);
|
||||||
if (score <= 0 || lives == 0){
|
if (score <= 0 || lives == 0){
|
||||||
play_sound(NOTE_G1,300);
|
play_sound(NOTE_G1,300);
|
||||||
|
@ -197,8 +224,11 @@ void compute_fishes_position(){
|
||||||
if(fishes[i][0] <= fish_step)
|
if(fishes[i][0] <= fish_step)
|
||||||
{
|
{
|
||||||
fishes[i][0] = random(MAX_X+1,255);
|
fishes[i][0] = random(MAX_X+1,255);
|
||||||
|
// do not remove lives if it was a bomb
|
||||||
|
if(fishes[i][2] != FT_BOMB){
|
||||||
missed_or_bomb();
|
missed_or_bomb();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
//move fish to the left
|
//move fish to the left
|
||||||
else{
|
else{
|
||||||
fishes[i][0] = fishes[i][0] - fish_step;
|
fishes[i][0] = fishes[i][0] - fish_step;
|
||||||
|
@ -219,7 +249,10 @@ void compute_fishes_position(){
|
||||||
}
|
}
|
||||||
|
|
||||||
if(fishes[i][2] == FT_LIFE){
|
if(fishes[i][2] == FT_LIFE){
|
||||||
|
if(lives < 6){
|
||||||
lives = lives + 1;
|
lives = lives + 1;
|
||||||
|
update_lives_leds(lives_leds[lives]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
fishes[i][0] = random(MAX_X+1,255);
|
fishes[i][0] = random(MAX_X+1,255);
|
||||||
//random type
|
//random type
|
||||||
|
|
Loading…
Reference in New Issue