Olá Amigos,

 

Na década de 80 existiam vários modelos de relógio Casio com Game embutido e era uma febre entre a molecada. Usei um LCD Nokia 5110 , alguns botões, um Garagino e um pote de Tupperware para replicar o jogo que vinha com relógio Casio Game-10. Vejam o vídeo:

 

 

Componentes utilizados:

1 - Arduino Garagino

1 - LCD Nokia 5110

4 - Botões (chave momentânea)

1 - Buzzer

1 - Bateria 9V

1 - 7805 (conversor de tensão)

2 - Capacitores de 100nF

4 - Resistores de  330

 

Segue a ligação dos pinos utilizados no projeto:

 

Arduino

10 - Positivo do Buzzer

08 - Positivo do botão que movimenta a nave

11 - Positivo do botão de contole de som e led do LCD

09 - Positivo do Botão de tiro

03 - LCD - Serial clock out (SCLK)

04 - LCD - Serial data out (DIN)

05 - LCD - Data/Command select (D/C)

07 - LCD - chip select (CS/CE)

06 - LCD - reset (RST)

02 - LCD - BL (Back Light)

 

Pos - Buzzer     - Botão Nave    

    - Botão Luz e Som    

    - Saida do 7805    

    - VCC do LCD

 

Neg - Resistor (330) do Buzzer    

    - Resistor (330) do Botão nave    

    - Resistor (330) do Botão Luz e Som    

    - Negativo do 7805    

   - GND do LCD

 

Buzzer

Pos - Positivo do Arduino

Neg - Pino 10 do Arduino     

    - Resistor (330)

 

Botão Nave

Pos  - Positivo do Arduino

Neg  - Pino 08 do Arduino     

     - Resistor (330)

 

Botão Tiro

Pos  - Positivo do Arduino

Neg  - Pino 09 do Arduino

     - Resistor (330)

 

Botão Luz e som

Pos  - Positivo do Arduino

Neg  - Pino 11 do Arduino

- Resistor (330)

 

Botão Início

Polo1  - Positivo da bateria

Polo2  - Entrada do 7805

 

Bateria (9V)

Pos  - Polo 1 do botão inicio

Neg  - Negativo do 7805

 

7805 (Usar capacitores de 100nF entre os polos)

Ent  - Polo 2 do botão inicio

Sai  - Positivo do Arduino

Neg  - Negativo da bateria

- GND do Arduino

 

LCD

rst  - Pino 06 do Arduino

ce   - Pino 07 do Arduino

dc   - Pino 05 do Arduino

din  - Pino 04 do Arduino

clk  - Pino 03 do Arduino

vcc - Positivo do Arduino

bl   - Pino 02 do Arduino

gnd  - Ground do Arduino

 

Seguem as bibliotecas utilizadas:

 

Adafruit_GFX.h 

Adafruit_PCD8544.h

pitches.h

 

E o código:

 

/////////////////////////////////////////

// Arduino - Casio Game 10             //

// Autor: Charles Set/2013  V.1.2      //          

/////////////////////////////////////////

 

#include <Adafruit_GFX.h>
#include <Adafruit_PCD8544.h>
#include "pitches.h" //biblioteca para emitir notas musicais

int buzz = 10; //som
int bot_nave = 8; //botão mira no pino 8
int sbot_nave; //leitura do botão
int bot_som = 11; //botão de som e luz
int sbot_som;
int som_cont = 0; //contrador das funções som e luz
boolean luz;
boolean som = true;
int nave_cont = 1; //contador para posição da mira
int bot_tiro = 9; //botão de tiro no pino 9
int sbot_tiro; //leitura do botão
int tiro_posic = 0; //contador para posição da mira
int tiro_cont = 0;
int nave_posic = 2;
int inimigo_cont = 1;
int inimigo1_cont = 0;
int start_tiro = 0; //checa que o tiro foi disparado
int inimigo_posic = 2; //posição da nave inimiga
int tiroi_cont = 0;
int start_tiroi = 0;
int tiroi_posic = 0;
int nivel = 100;
int bonus = 0;
int pontos = 0;
String pontosf;
int vidas = 3;
int num1 = 0;
int num2 = 0;
int num3 = 0;
int num4 = 0;
boolean demomode = true;
int ds = 1;
int contraste = 40;
int contraste_cont = 0;
// pin 3 - Serial clock out (SCLK)
// pin 4 - Serial data out (DIN)
// pin 5 - Data/Command select (D/C)
// pin 7 - LCD chip select (CS/CE)
// pin 6 - LCD reset (RST)
// pin 2 - LCD BL (Back Light)

Adafruit_PCD8544 display = Adafruit_PCD8544(3, 4, 5, 7, 6);
static unsigned char PROGMEM nave[] = { B00110, B01111, B11110, B11110, B01111, B00110, B00000}; //Array graph nave
static unsigned char PROGMEM inimigo[]= { B00000, B00110, B11111, B11111, B00110, B00000, B00000}; //Array graph inimigo
static unsigned char PROGMEM sino[] = { B00100, B01010, B01010, B01010, B11111, B00100}; //Array graph sino
static unsigned char PROGMEM um[] = { B1111111, B1110111, B1100111, B1010111, B1110111, B1000001, B1111111}; //Array graph um
static unsigned char PROGMEM dois[] = { B1111111, B1000011, B1111101, B1100011, B1011111, B1100001, B1111111}; //Array graph dois
static unsigned char PROGMEM tres[] = { B1111111, B1000011, B1111101, B1100011, B1111101, B1000011, B1111111}; //Array graph tres
static unsigned char PROGMEM quatro[] = { B1111111, B1011101, B1011101, B1100001, B1111101, B1111101, B1111111}; //Array graph quatro
static unsigned char PROGMEM tiro[] = { B111,B000,B000,B000,B000,B000,B000,B000}; //Array graph tiro


void setup()

{
Serial.begin(9600);
randomSeed(analogRead(0));
pinMode(bot_nave, INPUT);
pinMode(bot_tiro, INPUT);
pinMode(bot_som, INPUT);
pinMode(buzz, OUTPUT);
pinMode(2, OUTPUT);
monta_tela();
}


void loop()

{

if (luz == true) digitalWrite(2, HIGH);
else digitalWrite(2,LOW);

//demo mode
if (demomode == true) demo();

//move a nave
sbot_nave = digitalRead(bot_nave);
if (sbot_nave == HIGH && tiro_cont == 0) {
nave_cont = nave_cont + 1;
if (nave_cont == 1 ) {nave_posic = 2; move_nave();}
if (nave_cont == 2 ) {nave_posic = 10;move_nave();}
if (nave_cont >= 3 ) {nave_posic = 18;move_nave();nave_cont = 0;}
delay(nivel);
}

//tiro
sbot_tiro = digitalRead(bot_tiro);
if (sbot_tiro == HIGH) start_tiro = 1; delay(nivel);
if (start_tiro == 1) tiro_cont = tiro_cont + 1;
if (tiro_cont == 1) {tiro_posic = 46;move_tiro();}
if (tiro_cont == 2) {tiro_posic = 41;move_tiro();}
if (tiro_cont == 3) {tiro_posic = 34;move_tiro();}
if (tiro_cont == 4) {tiro_posic = 30;move_tiro();}
if (tiro_cont == 5) {tiro_posic = 23;move_tiro();}
if (tiro_cont == 6) {tiro_posic = 19;move_tiro();}
if (tiro_cont == 7) {tiro_posic = 12;move_tiro();}
if (tiro_cont >= 8) {tiro_posic = 8;move_tiro();
if (nave_posic == inimigo_posic){
beep(5);
pisca_inimigo();
placar(10);
}
start_tiro = 0;
tiro_cont = 0;
apaga_tiro();
}

//nave inimiga
if (tiroi_cont == 0) inimigo_cont = inimigo_cont + 1;
if (inimigo_cont >= 15) {
int pos = random(1, 4);
if (pos == 1) inimigo_posic = 2; move_inimigo();
if (pos == 2) inimigo_posic = 10; move_inimigo();
if (pos == 3) inimigo_posic = 18;move_inimigo();
start_tiroi = 1;
}

//Tiro nave inimiga
if (start_tiroi == 1) inimigo1_cont = inimigo1_cont + 1;
if (inimigo1_cont >= 5) {
tiroi_cont = tiroi_cont + 1;
if (tiroi_cont == 1) {tiroi_posic = 8; move_tiroi();}
if (tiroi_cont == 2) {tiroi_posic = 12;move_tiroi();}
if (tiroi_cont == 3) {tiroi_posic = 19;move_tiroi();}
if (tiroi_cont == 4) {tiroi_posic = 23;move_tiroi();}
if (tiroi_cont == 5) {tiroi_posic = 30;move_tiroi();}
if (tiroi_cont == 6) {tiroi_posic = 34;move_tiroi();}
if (tiroi_cont == 7) {tiroi_posic = 41;move_tiroi();}
if (tiroi_cont >= 8) {tiroi_posic = 46;move_tiroi();
beep(1);
start_tiroi = 0;
tiroi_cont = 0;
apaga_tiroi();
pisca_nave();
vidas = vidas - 1;
apaga_numero();
if (vidas == 2) {
display.drawRect(78,11,5,1, WHITE); //vidas
display.display();
}
if (vidas == 1) {
display.drawRect(78,15,5,1, WHITE); //vidas
display.display();
}
if (vidas <= 0) { // FIM DO JOGO
display.drawRect(78,19,5,1, WHITE); //vidas
display.display();
beep(2);
//         while(true){}
demomode = true;
demo();
}
}
inimigo1_cont = 0;
}

//controle de luz e som;
luzesom();
}
/////////////////
/// ROTINAS   ///
/////////////////

void move_nave(){
display.drawBitmap(55,2, nave, 8,7, WHITE); //apaga a posição atual da nave
display.drawBitmap(55,10, nave, 8,7, WHITE); //apaga a posição atual da nave
display.drawBitmap(55,18, nave, 8,7, WHITE); //apaga a posição atual da nave
display.drawBitmap(55,nave_posic, nave, 8,7, BLACK); //coloca a nave na nova posição
display.display();
}

void move_inimigo(){
display.drawBitmap(1,2, inimigo, 8,7, WHITE);
display.drawBitmap(1,10, inimigo, 8,7, WHITE);
display.drawBitmap(1,18, inimigo, 8,7, WHITE);
display.drawBitmap(1,inimigo_posic, inimigo, 8,7, BLACK);
display.display();
inimigo_cont = 0;
}

void move_tiro(){
display.drawBitmap(tiro_posic,nave_posic + 2, tiro, 8,3, BLACK);
checa_tiro();
display.display();
}

void move_tiroi(){
checa_tiro();
display.drawBitmap(tiroi_posic,inimigo_posic + 2, tiro, 8,3, BLACK);
display.display();
}

void apaga_tiro(){
//  delay(nivel);
display.drawBitmap(46, nave_posic + 2, tiro, 8,3, WHITE);
display.drawBitmap(41, nave_posic + 2, tiro, 8,3, WHITE);
display.drawBitmap(34, nave_posic + 2, tiro, 8,3, WHITE);
display.drawBitmap(30, nave_posic + 2, tiro, 8,3, WHITE);
display.drawBitmap(23, nave_posic + 2, tiro, 8,3, WHITE);
display.drawBitmap(19, nave_posic + 2, tiro, 8,3, WHITE);
display.drawBitmap(12, nave_posic + 2, tiro, 8,3, WHITE);
display.drawBitmap(8, nave_posic + 2, tiro, 8,3, WHITE);
display.display();
}

void apaga_tiroi(){
//  delay(nivel);
display.drawBitmap(46, inimigo_posic + 2, tiro, 8,3, WHITE);
display.drawBitmap(41, inimigo_posic + 2, tiro, 8,3, WHITE);
display.drawBitmap(34, inimigo_posic + 2, tiro, 8,3, WHITE);
display.drawBitmap(30, inimigo_posic + 2, tiro, 8,3, WHITE);
display.drawBitmap(23, inimigo_posic + 2, tiro, 8,3, WHITE);
display.drawBitmap(19, inimigo_posic + 2, tiro, 8,3, WHITE);
display.drawBitmap(12, inimigo_posic + 2, tiro, 8,3, WHITE);
display.drawBitmap(8, inimigo_posic + 2, tiro, 8,3, WHITE);
display.display();
}

void checa_tiro(){
if (nave_posic == inimigo_posic && tiro_posic == tiroi_posic){
if (tiro_posic == 46 || tiro_posic == 41){
display.drawBitmap(45,25, um, 8,7, BLACK);
placar(1);
display.display();
beep(1);
apaga_tiro();
apaga_tiroi();
tiro_cont = 0;
tiroi_cont = 0;
start_tiro = 0;
start_tiroi = 0;
tiro_posic = 0;
tiroi_posic = 0;
apaga_inimigo();
num1 = 1;
checa_numeros();
}
if (tiro_posic == 34 || tiro_posic == 30){
display.drawBitmap(34,25, dois, 8,7, BLACK);
placar(2);
display.display();
beep(1);
apaga_tiro();
apaga_tiroi();
tiro_cont = 0;
tiroi_cont = 0;
start_tiro = 0;
start_tiroi = 0;
tiro_posic = 0;
tiroi_posic = 0;
apaga_inimigo();
num2 = 1;
checa_numeros();
}
if (tiro_posic == 23 || tiro_posic == 19){
display.drawBitmap(23,25, tres, 8,7, BLACK);
placar(3);
display.display();
beep(1);
apaga_tiro();
apaga_tiroi();
tiro_cont = 0;
tiroi_cont = 0;
start_tiro = 0;
start_tiroi = 0;
tiro_posic = 0;
tiroi_posic = 0;
apaga_inimigo();
num3 = 1;
checa_numeros();
}
if (tiro_posic == 12 || tiro_posic == 8){
display.drawBitmap(12,25, quatro, 8,7, BLACK);
placar(4);
display.display();
beep(1);
apaga_tiro();
apaga_tiroi();
tiro_cont = 0;
tiroi_cont = 0;
start_tiro = 0;
start_tiroi = 0;
tiro_posic = 0;
tiroi_posic = 0;
apaga_inimigo();
num4 = 1;
checa_numeros();
}
}
}

void beep(int tipo){
if (som == true){
if (tipo == 1){
analogWrite(buzz, HIGH);
delay(100);
analogWrite(buzz, LOW);
}
if (tipo == 2){
analogWrite(buzz, HIGH); delay(100);
analogWrite(buzz, LOW); delay(200);
analogWrite(buzz, HIGH); delay(100);
analogWrite(buzz, LOW);
}
if (tipo == 5){
int melody[] = {NOTE_DS8, NOTE_A7, NOTE_F7, NOTE_C7, NOTE_C6};
int noteDurations[] = { 8, 8, 8, 8, 4, 4 };
for (int thisNote = 0; thisNote < 5; thisNote++) {
int noteDuration = 1000/noteDurations[thisNote];
tone(buzz, melody[thisNote],noteDuration);
int pauseBetweenNotes = noteDuration * 1.30;
delay(pauseBetweenNotes);
noTone(buzz);
}
}
}
}

void placar(int qt){
pontos = pontos + qt;
if (pontos <= 9) pontosf = "000" + String(pontos);
if (pontos >= 10 && pontos <=99) pontosf = "00" + String(pontos);
if (pontos >= 100 && pontos <=999) pontosf = "0" + String(pontos);
display.setTextColor(WHITE); //Seta a cor do texto
display.setTextSize(2); //Seta o tamanho do texto
display.setCursor(10,34); //Seta a posição do placar
display.print("0000");
display.setCursor(10,34); //Seta a posição do placar
display.print("1111");
display.setCursor(10,34); //Seta a posição do placar
display.print("2222");
display.setCursor(10,34); //Seta a posição do placar
display.print("3333");
display.setCursor(10,34); //Seta a posição do placar
display.print("4444");
display.setCursor(10,34); //Seta a posição do placar
display.print("5555");
display.setCursor(10,34); //Seta a posição do placar
display.print("6666");
display.setCursor(10,34); //Seta a posição do placar
display.print("7777");
display.setCursor(10,34); //Seta a posição do placar
display.print("8888");
display.setCursor(10,34); //Seta a posição do placar
display.print("9999");
display.setTextColor(BLACK); //Seta a cor do texto
display.setCursor(10,34); //Seta a posição do placar
display.print(pontosf);
}

void apaga_inimigo(){
display.drawBitmap(1,2, inimigo, 8,7, WHITE);
display.drawBitmap(1,10, inimigo, 8,7, WHITE);
display.drawBitmap(1,18, inimigo, 8,7, WHITE);
display.display();
inimigo_posic = 2;
}

void pisca_nave(){
for (int i = 1;i <= 3; i++){
display.drawBitmap(55,2, nave, 8,7, BLACK); //coloca a nave na nova posição
display.drawBitmap(55,10, nave, 8,7, BLACK); //coloca a nave na nova posição
display.drawBitmap(55,18, nave, 8,7, BLACK); //coloca a nave na nova posição
display.display();
delay(200);
display.drawBitmap(55,2, nave, 8,7, WHITE); //apaga a posição atual da nave
display.drawBitmap(55,10, nave, 8,7, WHITE); //apaga a posição atual da nave
display.drawBitmap(55,18, nave, 8,7, WHITE); //apaga a posição atual da nave
display.display();
delay(200);
}
display.drawBitmap(55,2, nave, 8,7, BLACK);
}

void pisca_inimigo(){
for (int i = 1;i <= 3; i++){
display.drawBitmap(1,2, inimigo, 8,7, BLACK);
display.drawBitmap(1,10, inimigo, 8,7, BLACK);
display.drawBitmap(1,18, inimigo, 8,7, BLACK);
display.display();
delay(200);
display.drawBitmap(1,2, inimigo, 8,7, WHITE);
display.drawBitmap(1,10, inimigo, 8,7, WHITE);
display.drawBitmap(1,18, inimigo, 8,7, WHITE);
display.display();
delay(200);
}
}

void pisca_numero(){
for (int i = 1;i <= 3; i++){
display.drawBitmap(45,25, um, 8,7, WHITE);
display.drawBitmap(34,25, dois, 8,7, WHITE);
display.drawBitmap(23,25, tres, 8,7, WHITE);
display.drawBitmap(12,25, quatro, 8,7, WHITE);
display.display();
delay(200);
display.drawBitmap(45,25, um, 8,7, BLACK);
display.drawBitmap(34,25, dois, 8,7, BLACK);
display.drawBitmap(23,25, tres, 8,7, BLACK);
display.drawBitmap(12,25, quatro, 8,7, BLACK);
display.display();
delay(200);
}
num1 = 0; num2 = 0; num3 = 0; num4 = 0;
}

void apaga_numero(){
display.drawBitmap(45,25, um, 8,7, WHITE);
display.drawBitmap(34,25, dois, 8,7, WHITE);
display.drawBitmap(23,25, tres, 8,7, WHITE);
display.drawBitmap(12,25, quatro, 8,7, WHITE);
display.display();
num1 = 0; num2 = 0; num3 = 0; num4 = 0;
}

void checa_numeros(){
/////////////////////////////////
///  inicia sequencia  bonus  ///
/////////////////////////////////
if (num1 == 1 && num2 == 1 && num3 == 1 && num4 == 1){
pisca_numero();
int i = 0;
while (i < 5){
inimigo_cont = inimigo_cont + 1;
if (inimigo_cont >= 15) {
int pos = random(1, 4);
if (i == 4) display.drawBitmap(45,25, um, 8,7, WHITE); display.display();
if (i == 3) display.drawBitmap(34,25, dois, 8,7, WHITE); display.display();
if (i == 2) display.drawBitmap(23,25, tres, 8,7, WHITE); display.display();
if (i == 1) display.drawBitmap(12,25, quatro, 8,7, WHITE); display.display();
if (pos == 1) inimigo_posic = 2; move_inimigo();
if (pos == 2) inimigo_posic = 10; move_inimigo();
if (pos == 3) inimigo_posic = 18;move_inimigo();
inimigo_cont = 0;
beep(1);
i = i + 1;
}

//move a nave
sbot_nave = digitalRead(bot_nave);
if (sbot_nave == HIGH && tiro_cont == 0) {
nave_cont = nave_cont + 1;
if (nave_cont == 1 ) {nave_posic = 2; move_nave();}
if (nave_cont == 2 ) {nave_posic = 10;move_nave();}
if (nave_cont >= 3 ) {nave_posic = 18;move_nave();nave_cont = 0;}
delay(nivel);
}

//tiro
sbot_tiro = digitalRead(bot_tiro);
if (sbot_tiro == HIGH) start_tiro = 1; delay(nivel);
if (start_tiro == 1) tiro_cont = tiro_cont + 1;
if (tiro_cont == 1) {tiro_posic = 46;move_tiro();}
if (tiro_cont == 2) {tiro_posic = 41;move_tiro();}
if (tiro_cont == 3) {tiro_posic = 34;move_tiro();}
if (tiro_cont == 4) {tiro_posic = 30;move_tiro();}
if (tiro_cont == 5) {tiro_posic = 23;move_tiro();}
if (tiro_cont == 6) {tiro_posic = 19;move_tiro();}
if (tiro_cont == 7) {tiro_posic = 12;move_tiro();}
if (tiro_cont >= 8) {tiro_posic = 8;move_tiro();
start_tiro = 0;
tiro_cont = 0;
apaga_tiro();
if (nave_posic == inimigo_posic){
beep(5);
pisca_inimigo();
placar(30);
}
}
}
tiro_posic = 0;
bonus = bonus + 1;
if (bonus == 2){ //aumenta o nível se entrar 2 x no bonus
nivel = nivel - 5;
if (nivel == 50) nivel = 100;
bonus = 0;
niveltx();
}
}
}

void niveltx(){
int nivelval = (100 - nivel)/5;
display.setTextColor(WHITE); //Seta a cor do texto
display.setTextSize(1); //Seta o tamanho do texto
display.setCursor(68,12); display.print("0");
display.setCursor(68,12); display.print("1");
display.setCursor(68,12); display.print("2");
display.setCursor(68,12); display.print("3");
display.setCursor(68,12); display.print("4");
display.setCursor(68,12); display.print("5");
display.setCursor(68,12); display.print("6");
display.setCursor(68,12); display.print("7");
display.setCursor(68,12); display.print("8");
display.setCursor(68,12); display.print("9");
display.setTextColor(BLACK); //Seta a cor do texto
display.setCursor(68,12);
display.print(nivelval);
}

void demo(){
while (demomode = true){
//acerta contraste
Serial.println(contraste_cont);
sbot_tiro = digitalRead(bot_tiro);
if (sbot_tiro == HIGH){
contraste_cont = contraste_cont + 1;
if (contraste_cont == 1) contraste = 20;
if (contraste_cont == 2) contraste = 25;
if (contraste_cont == 3) contraste = 30;
if (contraste_cont == 4) contraste = 35;
if (contraste_cont == 5) contraste = 40;
if (contraste_cont == 6) contraste = 45;
if (contraste_cont == 7) contraste = 50;
if (contraste_cont == 8) {contraste = 55;contraste_cont = 0;}
beep(1);
monta_tela();
}
sbot_nave = digitalRead(bot_nave);
if (sbot_nave == HIGH) { //sai do demomode
demomode = false;
beep(1);
limpa_demo();
display.drawBitmap(55,2, nave, 8,7, BLACK);
display.display();
nave_posic = 2;
vidas = 3;
display.drawRect(78,11,5,1, BLACK); //vidas
display.drawRect(78,15,5,1, BLACK); //vidas
display.drawRect(78,19,5,1, BLACK); //vidas
apaga_numero();
break;
}
luzesom();
int i = i + 1;
if (i == 1) {
display.drawBitmap(55,2, nave, 8,7, BLACK);
display.drawBitmap(55,18, nave, 8,7, BLACK);
display.drawBitmap(1,10, inimigo, 8,7, BLACK);
display.drawBitmap(46,4, tiro, 8,3, BLACK);
display.drawBitmap(46,20, tiro, 8,3, BLACK);
display.drawBitmap(8,12, tiro, 8,3, BLACK);
display.display();
delay(1000);
}
if (i == 2) {
display.drawBitmap(41,4, tiro, 8,3, BLACK);
display.drawBitmap(41,20, tiro, 8,3, BLACK);
display.drawBitmap(12,12, tiro, 8,3, BLACK);
display.display();
delay(1000);
}
if (i == 3) {
display.drawBitmap(34,4, tiro, 8,3, BLACK);
display.drawBitmap(34,20, tiro, 8,3, BLACK);
display.drawBitmap(19,12, tiro, 8,3, BLACK);
display.display();
delay(1000);
}
if (i == 4) {
display.drawBitmap(30,4, tiro, 8,3, BLACK);
display.drawBitmap(30,20, tiro, 8,3, BLACK);
display.drawBitmap(23,12, tiro, 8,3, BLACK);
display.display();
delay(1000);
}
if (i == 5) {
display.drawBitmap(23,4, tiro, 8,3, BLACK);
display.drawBitmap(23,20, tiro, 8,3, BLACK);
display.drawBitmap(30,12, tiro, 8,3, BLACK);
display.display();
delay(1000);
}
if (i == 6) {
display.drawBitmap(19,4, tiro, 8,3, BLACK);
display.drawBitmap(19,20, tiro, 8,3, BLACK);
display.drawBitmap(34,12, tiro, 8,3, BLACK);
display.display();
delay(1000);
}
if (i == 7) {
display.drawBitmap(12,4, tiro, 8,3, BLACK);
display.drawBitmap(12,20, tiro, 8,3, BLACK);
display.drawBitmap(41,12, tiro, 8,3, BLACK);
display.display();
delay(1000);
}
if (i == 8) {
display.drawBitmap(8,4, tiro, 8,3, BLACK);
display.drawBitmap(8,20, tiro, 8,3, BLACK);
display.drawBitmap(46,12, tiro, 8,3, BLACK);
display.display();
limpa_demo();
delay(1000);
}

if (i == 9) {
display.drawBitmap(1,2, inimigo, 8,7, BLACK);
display.drawBitmap(55,10, nave, 8,7, BLACK);
display.drawBitmap(1,18, inimigo, 8,7, BLACK);
display.drawBitmap(8,4, tiro, 8,3, BLACK);
display.drawBitmap(8,20, tiro, 8,3, BLACK);
display.drawBitmap(46,12, tiro, 8,3, BLACK);
display.display();
delay(1000);
}
if (i == 10) {
display.drawBitmap(12,4, tiro, 8,3, BLACK);
display.drawBitmap(12,20, tiro, 8,3, BLACK);
display.drawBitmap(41,12, tiro, 8,3, BLACK);
display.display();
delay(1000);
}
if (i == 11) {
display.drawBitmap(19,4, tiro, 8,3, BLACK);
display.drawBitmap(19,20, tiro, 8,3, BLACK);
display.drawBitmap(34,12, tiro, 8,3, BLACK);
display.display();
delay(1000);
}
if (i == 12) {
display.drawBitmap(23,4, tiro, 8,3, BLACK);
display.drawBitmap(23,20, tiro, 8,3, BLACK);
display.drawBitmap(30,12, tiro, 8,3, BLACK);
display.display();
delay(1000);
}
if (i == 13) {
display.drawBitmap(30,4, tiro, 8,3, BLACK);
display.drawBitmap(30,20, tiro, 8,3, BLACK);
display.drawBitmap(23,12, tiro, 8,3, BLACK);
display.display();
delay(1000);
}
if (i == 14) {
display.drawBitmap(34,4, tiro, 8,3, BLACK);
display.drawBitmap(34,20, tiro, 8,3, BLACK);
display.drawBitmap(19,12, tiro, 8,3, BLACK);
display.display();
delay(1000);
}
if (i == 15) {
display.drawBitmap(41,4, tiro, 8,3, BLACK);
display.drawBitmap(41,20, tiro, 8,3, BLACK);
display.drawBitmap(12,12, tiro, 8,3, BLACK);
display.display();
delay(1000);
}
if (i == 16) {
display.drawBitmap(46,4, tiro, 8,3, BLACK);
display.drawBitmap(46,20, tiro, 8,3, BLACK);
display.drawBitmap(8,12, tiro, 8,3, BLACK);
display.display();
delay(1000);
limpa_demo();
i = 0;
}
}
}

void limpa_demo(){
display.drawBitmap(55,2, nave, 8,7, WHITE);
display.drawBitmap(55,10, nave, 8,7, WHITE);
display.drawBitmap(55,18, nave, 8,7, WHITE);
display.drawBitmap(1,2, inimigo, 8,7, WHITE);
display.drawBitmap(1,10, inimigo, 8,7, WHITE);
display.drawBitmap(1,18, inimigo, 8,7, WHITE);
display.display();
nave_posic = 2;  apaga_tiro(); apaga_tiroi();
nave_posic = 10; apaga_tiro(); apaga_tiroi();
nave_posic = 18; apaga_tiro(); apaga_tiroi();
}


void luzesom(){
//controle de som e luz
sbot_som = digitalRead(bot_som);
if (sbot_som == HIGH) {
delay(100);
som_cont = som_cont + 1;
if (som_cont == 1){
som = false;
display.drawBitmap(75,1, sino, 8,6, WHITE);
display.display();
luz = false;
}
if (som_cont == 2){
som = false;
display.drawBitmap(75,1, sino, 8,6, WHITE);
display.display();
luz = true;
}
if (som_cont == 3){
som = true;
display.drawBitmap(75,1, sino, 8,6, BLACK);
display.display();
luz = true;
}
if (som_cont == 4){
som = true;
luz = false;
display.drawBitmap(75,1, sino, 8,6, BLACK);
display.display();
som_cont = 0;
}
}
}

void monta_tela(){
display.begin();
display.setContrast(contraste); //Ajusta o contraste do display
display.clearDisplay(); //Apaga o buffer e o display
//Monta tela
display.drawRoundRect(0,0,66,33,1,BLACK); //box
display.drawRect(11,0,1,33, BLACK); //linhas verticais
display.drawRect(22,0,1,33, BLACK); //linhas verticais
display.drawRect(33,0,1,33, BLACK); //linhas verticais
display.drawRect(44,0,1,33, BLACK); //linhas verticais
display.drawRect(55,0,1,33, BLACK); //linhas verticais
display.setTextSize(2); //Seta o tamanho do texto
display.setTextColor(BLACK); //Seta a cor do texto
display.setCursor(10,34); //Seta a posição do placar
display.print("0000");
display.setTextSize(1); //Seta o tamanho do texto
display.setCursor(68,12); //Seta a posição do cursor
display.print("0");
display.drawRect(78,11,5,1, BLACK); //vidas
display.drawRect(78,15,5,1, BLACK); //vidas
display.drawRect(78,19,5,1, BLACK); //vidas
display.drawBitmap(55,2, nave, 8,7, BLACK);
display.drawBitmap(75,1, sino, 8,6, BLACK);
display.display();
}

 

Bom jogo !
Charles

Exibições: 1112

Comentar

Você precisa ser um membro de Laboratorio de Garagem (arduino, eletrônica, robotica, hacking) para adicionar comentários!

Entrar em Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)

Comentário de alexandre cavalcante em 20 agosto 2015 às 12:07

No meu nao rodou meu arduino 1.6.6 qual versao eu deve usar para rodar

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço