Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Dangerstein, by Maximiliano Ozono. For private use and non profit purposes only.
- // VGAX Library is property of Sandro Maffiodo.
- #include <VGAX.h>
- //font generated from BITFONZI - by Sandro Maffiodo
- #define FNT_NANOFONT_HEIGHT 6
- #define FNT_NANOFONT_SYMBOLS_COUNT 95
- //data size=570 bytes
- const unsigned char fnt_nanofont_data[FNT_NANOFONT_SYMBOLS_COUNT][1+FNT_NANOFONT_HEIGHT] PROGMEM={
- { 1, 128, 128, 128, 0, 128, 0, }, //glyph '!' code=0
- { 3, 160, 160, 0, 0, 0, 0, }, //glyph '"' code=1
- { 5, 80, 248, 80, 248, 80, 0, }, //glyph '#' code=2
- { 5, 120, 160, 112, 40, 240, 0, }, //glyph '$' code=3
- { 5, 136, 16, 32, 64, 136, 0, }, //glyph '%' code=4
- { 5, 96, 144, 104, 144, 104, 0, }, //glyph '&' code=5
- { 2, 128, 64, 0, 0, 0, 0, }, //glyph ''' code=6
- { 2, 64, 128, 128, 128, 64, 0, }, //glyph '(' code=7
- { 2, 128, 64, 64, 64, 128, 0, }, //glyph ')' code=8
- { 3, 0, 160, 64, 160, 0, 0, }, //glyph '*' code=9
- { 3, 0, 64, 224, 64, 0, 0, }, //glyph '+' code=10
- { 2, 0, 0, 0, 0, 128, 64, }, //glyph ',' code=11
- { 3, 0, 0, 224, 0, 0, 0, }, //glyph '-' code=12
- { 1, 0, 0, 0, 0, 128, 0, }, //glyph '.' code=13
- { 5, 8, 16, 32, 64, 128, 0, }, //glyph '/' code=14
- { 4, 96, 144, 144, 144, 96, 0, }, //glyph '0' code=15
- { 3, 64, 192, 64, 64, 224, 0, }, //glyph '1' code=16
- { 4, 224, 16, 96, 128, 240, 0, }, //glyph '2' code=17
- { 4, 224, 16, 96, 16, 224, 0, }, //glyph '3' code=18
- { 4, 144, 144, 240, 16, 16, 0, }, //glyph '4' code=19
- { 4, 240, 128, 224, 16, 224, 0, }, //glyph '5' code=20
- { 4, 96, 128, 224, 144, 96, 0, }, //glyph '6' code=21
- { 4, 240, 16, 32, 64, 64, 0, }, //glyph '7' code=22
- { 4, 96, 144, 96, 144, 96, 0, }, //glyph '8' code=23
- { 4, 96, 144, 112, 16, 96, 0, }, //glyph '9' code=24
- { 1, 0, 128, 0, 128, 0, 0, }, //glyph ':' code=25
- { 2, 0, 128, 0, 0, 128, 64, }, //glyph ';' code=26
- { 3, 32, 64, 128, 64, 32, 0, }, //glyph '<' code=27
- { 3, 0, 224, 0, 224, 0, 0, }, //glyph '=' code=28
- { 3, 128, 64, 32, 64, 128, 0, }, //glyph '>' code=29
- { 4, 224, 16, 96, 0, 64, 0, }, //glyph '?' code=30
- { 4, 96, 144, 176, 128, 112, 0, }, //glyph '@' code=31
- { 4, 96, 144, 240, 144, 144, 0, }, //glyph 'A' code=32
- { 4, 224, 144, 224, 144, 224, 0, }, //glyph 'B' code=33
- { 4, 112, 128, 128, 128, 112, 0, }, //glyph 'C' code=34
- { 4, 224, 144, 144, 144, 224, 0, }, //glyph 'D' code=35
- { 4, 240, 128, 224, 128, 240, 0, }, //glyph 'E' code=36
- { 4, 240, 128, 224, 128, 128, 0, }, //glyph 'F' code=37
- { 4, 112, 128, 176, 144, 112, 0, }, //glyph 'G' code=38
- { 4, 144, 144, 240, 144, 144, 0, }, //glyph 'H' code=39
- { 3, 224, 64, 64, 64, 224, 0, }, //glyph 'I' code=40
- { 4, 240, 16, 16, 144, 96, 0, }, //glyph 'J' code=41
- { 4, 144, 160, 192, 160, 144, 0, }, //glyph 'K' code=42
- { 4, 128, 128, 128, 128, 240, 0, }, //glyph 'L' code=43
- { 5, 136, 216, 168, 136, 136, 0, }, //glyph 'M' code=44
- { 4, 144, 208, 176, 144, 144, 0, }, //glyph 'N' code=45
- { 4, 96, 144, 144, 144, 96, 0, }, //glyph 'O' code=46
- { 4, 224, 144, 224, 128, 128, 0, }, //glyph 'P' code=47
- { 4, 96, 144, 144, 144, 96, 16, }, //glyph 'Q' code=48
- { 4, 224, 144, 224, 160, 144, 0, }, //glyph 'R' code=49
- { 4, 112, 128, 96, 16, 224, 0, }, //glyph 'S' code=50
- { 3, 224, 64, 64, 64, 64, 0, }, //glyph 'T' code=51
- { 4, 144, 144, 144, 144, 96, 0, }, //glyph 'U' code=52
- { 3, 160, 160, 160, 160, 64, 0, }, //glyph 'V' code=53
- { 5, 136, 168, 168, 168, 80, 0, }, //glyph 'W' code=54
- { 4, 144, 144, 96, 144, 144, 0, }, //glyph 'X' code=55
- { 3, 160, 160, 64, 64, 64, 0, }, //glyph 'Y' code=56
- { 4, 240, 16, 96, 128, 240, 0, }, //glyph 'Z' code=57
- { 2, 192, 128, 128, 128, 192, 0, }, //glyph '[' code=58
- { 5, 128, 64, 32, 16, 8, 0, }, //glyph '\' code=59
- { 2, 192, 64, 64, 64, 192, 0, }, //glyph ']' code=60
- { 5, 32, 80, 136, 0, 0, 0, }, //glyph '^' code=61
- { 4, 0, 0, 0, 0, 240, 0, }, //glyph '_' code=62
- { 2, 128, 64, 0, 0, 0, 0, }, //glyph '`' code=63
- { 3, 0, 224, 32, 224, 224, 0, }, //glyph 'a' code=64
- { 3, 128, 224, 160, 160, 224, 0, }, //glyph 'b' code=65
- { 3, 0, 224, 128, 128, 224, 0, }, //glyph 'c' code=66
- { 3, 32, 224, 160, 160, 224, 0, }, //glyph 'd' code=67
- { 3, 0, 224, 224, 128, 224, 0, }, //glyph 'e' code=68
- { 2, 64, 128, 192, 128, 128, 0, }, //glyph 'f' code=69
- { 3, 0, 224, 160, 224, 32, 224, }, //glyph 'g' code=70
- { 3, 128, 224, 160, 160, 160, 0, }, //glyph 'h' code=71
- { 1, 128, 0, 128, 128, 128, 0, }, //glyph 'i' code=72
- { 2, 0, 192, 64, 64, 64, 128, }, //glyph 'j' code=73
- { 3, 128, 160, 192, 160, 160, 0, }, //glyph 'k' code=74
- { 1, 128, 128, 128, 128, 128, 0, }, //glyph 'l' code=75
- { 5, 0, 248, 168, 168, 168, 0, }, //glyph 'm' code=76
- { 3, 0, 224, 160, 160, 160, 0, }, //glyph 'n' code=77
- { 3, 0, 224, 160, 160, 224, 0, }, //glyph 'o' code=78
- { 3, 0, 224, 160, 160, 224, 128, }, //glyph 'p' code=79
- { 3, 0, 224, 160, 160, 224, 32, }, //glyph 'q' code=80
- { 3, 0, 224, 128, 128, 128, 0, }, //glyph 'r' code=81
- { 2, 0, 192, 128, 64, 192, 0, }, //glyph 's' code=82
- { 3, 64, 224, 64, 64, 64, 0, }, //glyph 't' code=83
- { 3, 0, 160, 160, 160, 224, 0, }, //glyph 'u' code=84
- { 3, 0, 160, 160, 160, 64, 0, }, //glyph 'v' code=85
- { 5, 0, 168, 168, 168, 80, 0, }, //glyph 'w' code=86
- { 3, 0, 160, 64, 160, 160, 0, }, //glyph 'x' code=87
- { 3, 0, 160, 160, 224, 32, 224, }, //glyph 'y' code=88
- { 2, 0, 192, 64, 128, 192, 0, }, //glyph 'z' code=89
- { 3, 96, 64, 192, 64, 96, 0, }, //glyph '{' code=90
- { 1, 128, 128, 128, 128, 128, 0, }, //glyph '|' code=91
- { 3, 192, 64, 96, 64, 192, 0, }, //glyph '}' code=92
- { 3, 96, 192, 0, 0, 0, 0, }, //glyph '~' code=93
- { 4, 48, 64, 224, 64, 240, 0, }, //glyph '£' code=94
- };
- VGAX vga;
- static const char str0[] PROGMEM="DANGERSTEIN";
- static const char str1[] PROGMEM="BY CIRUJADIGITAL";
- static const char str2[] PROGMEM="Tiempo";
- static const char str3[] PROGMEM="Nivel";
- static const char str4[] PROGMEM="Perdiste";
- static const char str5[] PROGMEM="Bien!";
- static const byte tiempo PROGMEM= 30;
- boolean screen = true;
- byte i = 0;
- byte tiempo_contador;
- char tiemp[4];
- byte nivel=1;
- char niv[2];
- byte velocidad=100;
- byte x_bomb1=rand()%VGAX_WIDTH;
- byte y_bomb1=random(0,40);
- byte x_bomb2=rand()%VGAX_WIDTH;
- byte y_bomb2=random(0,40);
- byte x_bomb3=rand()%VGAX_WIDTH;
- byte y_bomb3=random(0,40);
- byte x_bomb4=rand()%VGAX_WIDTH;
- byte y_bomb4=random(0,40);
- byte x_bomb5=rand()%VGAX_WIDTH;
- byte y_bomb5=random(0,40);
- byte x_bomb6=rand()%VGAX_WIDTH;
- byte y_bomb6=random(0,40);
- byte x_bomb7=rand()%VGAX_WIDTH;
- byte y_bomb7=random(0,40);
- byte x_bomb8=rand()%VGAX_WIDTH;
- byte y_bomb8=random(0,40);
- byte x_bomb9=rand()%VGAX_WIDTH;
- byte y_bomb9=random(0,40);
- byte x_bomb10=rand()%VGAX_WIDTH;
- byte y_bomb10=random(0,40);
- void setup() {
- vga.begin();
- pinMode(11,INPUT); //definirlos despues de vgabegin sino se caga.
- pinMode(10,INPUT);
- tiempo_contador = tiempo;
- vga.clear(2);
- //x_bomb =rand()%VGAX_WIDTH;
- // vga.putpixel4(0,1, 0x55); //ox55 = todo verde, pasar lso valores binarios de cada color a hex (uno al lado del otro)
- }
- void loop() {
- if (screen==true)
- {vga.printPROGMEM((byte*)fnt_nanofont_data, FNT_NANOFONT_SYMBOLS_COUNT, FNT_NANOFONT_HEIGHT, 2, 3, str0, 10, 10, 0);
- vga.printPROGMEM((byte*)fnt_nanofont_data, FNT_NANOFONT_SYMBOLS_COUNT, FNT_NANOFONT_HEIGHT, 2, 1, str1, 10, 50, 1);
- vga.delay(5000);
- vga.clear(0);
- screen=false;
- }
- if (digitalRead(11)==HIGH)
- {
- i = i+1;
- }
- if (digitalRead(10)==HIGH)
- {
- if (i>=1)
- {
- i = i-1;
- }
- else {i=0;}
- }
- vga.clear(0);
- bomba();
- tanque(i,1);
- if (i>= VGAX_BWIDTH) {i=14;}
- if (i<=0) {i=0;}
- GUI();
- piso_objetivo();
- vga.delay(velocidad); //velocidad del juego
- }
- /*
- vga.putpixel(1,2,0); //0 =negro posicionX,PosicionY,numColor
- vga.putpixel(2,2,1); // 1= verde
- vga.putpixel(3,2,2); // 2= rojo
- vga.putpixel(4,2,3); // 3= amarillo
- */
- void tanque(byte X,byte Y)
- {
- vga.putpixel4(X,VGAX_HEIGHT-(Y+1), 0x44);
- vga.putpixel4(X+1,VGAX_HEIGHT-(Y+1), 0x44);
- vga.putpixel4(X,VGAX_HEIGHT-(Y+2), 0x55);
- vga.putpixel4(X+1,VGAX_HEIGHT-(Y+2), 0x55);
- vga.putpixel4(X+1,VGAX_HEIGHT-(Y+3), 0x54);
- vga.putpixel4(X,VGAX_HEIGHT-(Y+3), 0x15);
- vga.putpixel4(X+1,VGAX_HEIGHT-(Y+4), 0x55);
- vga.putpixel4(X,VGAX_HEIGHT-(Y+4), 0x15);
- vga.putpixel4(X+2,VGAX_HEIGHT-(Y+4), 0x55);
- // vga.putpixel(X+6,VGAX_HEIGHT-(Y+3),1); // 1= verde
- if ((i*4+13)>=(x_bomb1) && (i*4)<=(x_bomb1) && (VGAX_HEIGHT-3) <= y_bomb1) { perdiste(); }
- if ((i*4+13)>=(x_bomb2) && (i*4)<=(x_bomb2) && (VGAX_HEIGHT-3) <= y_bomb2) { perdiste(); }
- if ((i*4+13)>=(x_bomb3) && (i*4)<=(x_bomb3) && (VGAX_HEIGHT-3) <= y_bomb3) { perdiste(); }
- if ((i*4+13)>=(x_bomb4) && (i*4)<=(x_bomb4) && (VGAX_HEIGHT-3) <= y_bomb4) { perdiste(); }
- if ((i*4+13)>=(x_bomb5) && (i*4)<=(x_bomb5) && (VGAX_HEIGHT-3) <= y_bomb5) { perdiste(); }
- if ((i*4+13)>=(x_bomb6) && (i*4)<=(x_bomb6) && (VGAX_HEIGHT-3) <= y_bomb6) { perdiste(); }
- if ((i*4+13)>=(x_bomb7) && (i*4)<=(x_bomb7) && (VGAX_HEIGHT-3) <= y_bomb7) { perdiste(); }
- if ((i*4+13)>=(x_bomb8) && (i*4)<=(x_bomb8) && (VGAX_HEIGHT-3) <= y_bomb8) { perdiste(); }
- if ((i*4+13)>=(x_bomb9) && (i*4)<=(x_bomb9) && (VGAX_HEIGHT-3) <= y_bomb9) { perdiste(); }
- if ((i*4+13)>=(x_bomb10) && (i*4)<=(x_bomb10) && (VGAX_HEIGHT-3) <= y_bomb10) { perdiste(); }
- if (X>=(VGAX_BWIDTH-4)) {ganaste();}
- }
- void bomba()
- {
- //0x2 negro negro negro verde
- //0x80 verde negro negro negro
- vga.putpixel(x_bomb1,y_bomb1,2);
- vga.putpixel(x_bomb2,y_bomb2,2);
- vga.putpixel(x_bomb3,y_bomb3,2);
- vga.putpixel(x_bomb4,y_bomb4,2);
- vga.putpixel(x_bomb5,y_bomb5,2);
- vga.putpixel(x_bomb6,y_bomb6,2);
- vga.putpixel(x_bomb7,y_bomb7,2);
- vga.putpixel(x_bomb8,y_bomb8,2);
- vga.putpixel(x_bomb9,y_bomb9,2);
- vga.putpixel(x_bomb10,y_bomb10,2);
- y_bomb1=y_bomb1+random(2,4);
- y_bomb2=y_bomb2+random(2,4);
- y_bomb3=y_bomb3+random(2,4);
- y_bomb4=y_bomb4+random(2,4);
- y_bomb5=y_bomb5+random(2,4);
- y_bomb6=y_bomb6+random(2,4);
- y_bomb7=y_bomb7+random(2,4);
- y_bomb8=y_bomb8+random(2,4);
- y_bomb9=y_bomb9+random(2,4);
- y_bomb10=y_bomb10+random(2,4);
- if(y_bomb1>=VGAX_HEIGHT) {x_bomb1 =rand()%VGAX_WIDTH; y_bomb1=random(0,20); tiempo_contador = tiempo_contador-1;}
- if(y_bomb2>=VGAX_HEIGHT) {x_bomb2 =rand()%VGAX_WIDTH; y_bomb2=random(0,25);}
- if(y_bomb3>=VGAX_HEIGHT) {x_bomb3 =rand()%VGAX_WIDTH; y_bomb3=random(0,20);}
- if(y_bomb4>=VGAX_HEIGHT) {x_bomb4 =rand()%VGAX_WIDTH; y_bomb4=random(0,20);}
- if(y_bomb5>=VGAX_HEIGHT) {x_bomb5 =rand()%VGAX_WIDTH; y_bomb5=random(0,20);}
- if(y_bomb6>=VGAX_HEIGHT) {x_bomb6 =rand()%VGAX_WIDTH; y_bomb6=random(0,20);}
- if(y_bomb7>=VGAX_HEIGHT) {x_bomb7 =rand()%VGAX_WIDTH; y_bomb7=random(0,20);}
- if(y_bomb8>=VGAX_HEIGHT) {x_bomb8 =rand()%VGAX_WIDTH; y_bomb8=random(0,20);}
- if(y_bomb9>=VGAX_HEIGHT) {x_bomb9 =rand()%VGAX_WIDTH; y_bomb9=random(0,20);}
- if(y_bomb10>=VGAX_HEIGHT) {x_bomb10 =rand()%VGAX_WIDTH; y_bomb10=random(0,20);}
- }
- void piso_objetivo()
- {
- vga.putpixel(VGAX_WIDTH-4,VGAX_HEIGHT-4,2); //debug
- for (int i =0; i< VGAX_WIDTH; i++)
- {
- vga.putpixel(i,VGAX_HEIGHT-1,1); //
- }
- //casita bandera:
- vga.putpixel4(VGAX_BWIDTH-2,VGAX_HEIGHT-2,0xc0);
- vga.putpixel4(VGAX_BWIDTH-2,VGAX_HEIGHT-3,0xC0);
- vga.putpixel4(VGAX_BWIDTH-2,VGAX_HEIGHT-4,0xC0);
- vga.putpixel4(VGAX_BWIDTH-2,VGAX_HEIGHT-5,0xD5);
- vga.putpixel4(VGAX_BWIDTH-2,VGAX_HEIGHT-6,0xD5);
- vga.putpixel4(VGAX_BWIDTH-2,VGAX_HEIGHT-7,0xD5);
- }
- void GUI()
- {
- vga.printPROGMEM((byte*)fnt_nanofont_data, FNT_NANOFONT_SYMBOLS_COUNT, FNT_NANOFONT_HEIGHT, 2, 3, str0, VGAX_WIDTH-75, 5, 3); //dangerstein
- vga.printPROGMEM((byte*)fnt_nanofont_data, FNT_NANOFONT_SYMBOLS_COUNT, FNT_NANOFONT_HEIGHT, 2, 1, str1, VGAX_WIDTH-75, 15, 3); //by cirujadigital
- sprintf(tiemp,"%03u",tiempo_contador); //convierto el byte al char array.
- vga.printSRAM((byte*)fnt_nanofont_data, FNT_NANOFONT_SYMBOLS_COUNT, FNT_NANOFONT_HEIGHT, 1, 1, tiemp, 25, 5, 2); //var tiempo
- vga.printPROGMEM((byte*)fnt_nanofont_data, FNT_NANOFONT_SYMBOLS_COUNT, FNT_NANOFONT_HEIGHT, 1, 1, str2, 0, 5, 3);
- sprintf(niv,"%03u",nivel); //convierto el byte al char array.
- vga.printSRAM((byte*)fnt_nanofont_data, FNT_NANOFONT_SYMBOLS_COUNT, FNT_NANOFONT_HEIGHT, 1, 1, niv, 25, 15, 2); //var nivel
- vga.printPROGMEM((byte*)fnt_nanofont_data, FNT_NANOFONT_SYMBOLS_COUNT, FNT_NANOFONT_HEIGHT, 1, 1, str3, 0, 15,3);
- if (tiempo_contador==0) { tiempo_contador=tiempo;
- perdiste();
- }
- }
- void perdiste()
- {i=0;
- tiempo_contador=tiempo;
- vga.printPROGMEM((byte*)fnt_nanofont_data, FNT_NANOFONT_SYMBOLS_COUNT, FNT_NANOFONT_HEIGHT, 1, 1, str4, VGAX_WIDTH/3, VGAX_HEIGHT/2,2);
- vga.delay(3000);
- byte y_bomb1=random(0,40);
- byte y_bomb2=random(0,40);
- byte y_bomb3=random(0,40);
- byte y_bomb4=random(0,40);
- byte y_bomb5=random(0,40);
- byte y_bomb6=random(0,40);
- byte y_bomb7=random(0,40);
- byte y_bomb8=random(0,40);
- byte y_bomb9=random(0,40);
- byte y_bomb10=random(0,40);
- vga.clear(0);
- }
- void ganaste()
- { vga.printPROGMEM((byte*)fnt_nanofont_data, FNT_NANOFONT_SYMBOLS_COUNT, FNT_NANOFONT_HEIGHT, 1, 1, str5, VGAX_WIDTH/3, VGAX_HEIGHT/2,3);
- nivel++;
- i=0;
- velocidad=velocidad-30;
- if (nivel>4)
- {nivel =1;
- velocidad=100;
- }
- vga.delay(3000);
- vga.clear(0);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement