-
Notifications
You must be signed in to change notification settings - Fork 0
/
arena.ino
168 lines (130 loc) · 10.3 KB
/
arena.ino
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
const byte arene[] PROGMEM = {88,48,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x62,0x7,0xFF,0xFF,0xFC,0x3,0xFF,0xFF,0xFE,0xC,0xE0,0x56,0x4,0x4,0x4,0x4,0x2,0x2,0x2,0x2,0xA,0x20,0x62,0x4,0x4,0x4,0x4,0x2,0x2,0x2,0x2,0xC,0xE0,0x42,0x4,0x4,0x4,0x4,0x2,0x2,0x2,0x2,0x8,0x80,0x47,0x7,0xFF,0xFF,0xFC,0x3,0xFF,0xFF,0xFE,0x8,0xE0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x31,0x8C,0x0,0x0,0x0,0x0,0x0,0x0,0x3,0x18,0xC0,0x4A,0x52,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0xA5,0x20,0x4A,0x52,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0xA5,0x20,0x31,0x8C,0x0,0x0,0x0,0x0,0x0,0x0,0x3,0x18,0xC0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0xD5,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x50,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,};
const byte cptBold1[] PROGMEM = {8,12,0x18,0x28,0x48,0xA8,0xE8,0xE8,0x28,0x28,0xEC,0x84,0xFC,0xFC,};
const byte cptBold2[] PROGMEM = {8,12,0xFC,0x84,0xF4,0xF4,0xF4,0x84,0xBC,0xBC,0xBC,0x84,0xFC,0xFC,};
const byte cptBold3[] PROGMEM = {8,12,0xFC,0x84,0xF4,0xF4,0xF4,0x84,0xF4,0xF4,0xF4,0x84,0xFC,0xFC,};
const byte fight[] PROGMEM = {32,12,0xFD,0xF7,0xEF,0xDF,0x85,0x14,0x2B,0x51,0xBD,0xB5,0xEB,0x5B,0xBD,0xB5,0xEB,0x5B,0xBC,0xA5,0xB,0x4A,0x84,0xA5,0xE8,0x4A,0xBC,0xA5,0x2B,0x4A,0xBC,0xA5,0xAB,0x4A,0xA0,0xA5,0xAB,0x4A,0xA1,0x14,0x2B,0x4A,0xE1,0xF7,0xEF,0xCE,0xE1,0xF7,0xEF,0xCE,};
const byte timeUp[] PROGMEM = {48,12,0xFB,0xEF,0xDF,0x80,0x7E,0xFC,0x8A,0x28,0x50,0x80,0x5A,0x84,0xDB,0x68,0x57,0x80,0x5A,0xB4,0xDB,0x68,0x57,0x80,0x5A,0xB4,0x51,0x4B,0x57,0x80,0x5A,0x84,0x51,0x4B,0x50,0x80,0x5A,0xBC,0x51,0x4B,0x57,0x80,0x5A,0xBC,0x51,0x4B,0x57,0x80,0x5A,0xA0,0x51,0x4B,0x57,0x80,0x5A,0xA0,0x52,0x2B,0x50,0x80,0x42,0xA0,0x73,0xEF,0xDF,0x80,0x7E,0xE0,0x73,0xEF,0xDF,0x80,0x7E,0xE0,};
const byte p1ko[] PROGMEM = {40,12,0xF0,0x30,0x7,0xEF,0xC0,0x88,0x50,0x5,0xA8,0x40,0xB4,0x90,0x5,0xAB,0x40,0xB5,0x50,0x5,0xAB,0x40,0xB5,0xD0,0x5,0xAB,0x40,0x8D,0xD0,0x4,0x6B,0x40,0xB8,0x50,0x5,0xAB,0x40,0xB0,0x50,0x5,0xAB,0x40,0xA1,0xD8,0x5,0xAB,0x40,0xA1,0x8,0x5,0xA8,0x40,0xE1,0xF8,0x7,0xEF,0xC0,0xE1,0xF8,0x7,0xEF,0xC0,};
const byte p2ko[] PROGMEM = {40,12,0xF1,0xF8,0x7,0xEF,0xC0,0x89,0x8,0x5,0xA8,0x40,0xB5,0xE8,0x5,0xAB,0x40,0xB5,0xE8,0x5,0xAB,0x40,0xB5,0xE8,0x5,0xAB,0x40,0x8D,0x8,0x4,0x6B,0x40,0xB9,0x78,0x5,0xAB,0x40,0xB1,0x78,0x5,0xAB,0x40,0xA1,0x78,0x5,0xAB,0x40,0xA1,0x8,0x5,0xA8,0x40,0xE1,0xF8,0x7,0xEF,0xC0,0xE1,0xF8,0x7,0xEF,0xC0,};
const byte barreHaut[] PROGMEM = {88,10,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x60,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x60,0x60,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x60,0x60,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x60,0x60,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x60,0x60,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x60,0x6F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x60,0x76,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x6,0xE0,0x62,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0x60,0x1C,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3,0x80,};
const byte barreHautMask[] PROGMEM = {88,10,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0xFE,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7,0xF0,0xFE,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7,0xF0,0xFC,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3,0xF0,};
const byte ileTresor[] PROGMEM = {88,48,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF1,0xFF,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x1F,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x1F,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x0,0x3,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0xFF,0xF8,0xFF,0xFF,0xF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0xFF,0xE0,0xF,0xFF,0x7,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0xFF,0xE0,0xF,0xF8,0x3,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0xFF,0x0,0x1,0xFF,0xFF,0xFF,0xF0,0xFF,0xFF,0xFF,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x7F,0xFF,0xFF,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x3F,0xFF,0xFF,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0x81,0xFE,0x7,0xFF,0xFF,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x78,0x1F,0xFF,0xFF,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0x20,0x7F,0xFF,0xFF,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xE0,0x1,0xFF,0xFF,0xFF,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0x0,0x3,0xFF,0xFF,0xFF,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x0,0x7,0xFF,0xFF,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x0,0x73,0xFF,0xFF,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xC7,0x3,0xFD,0xFF,0xFF,0xF0,0xFF,0xFF,0xFF,0xFF,0xDF,0x9C,0x4F,0xFF,0xFF,0xFF,0xF0,0xFF,0xFF,0xFF,0xFF,0xE7,0xF8,0x4F,0xFF,0xFF,0xFF,0xF0,0xFF,0xFF,0xFF,0xFF,0x73,0xF8,0xCF,0xFF,0xFF,0xFF,0xF0,0xFF,0xFF,0xFF,0xFF,0x1B,0x13,0xCF,0xFF,0xFF,0xFF,0xF0,0xFF,0xFF,0xFF,0xFF,0xE0,0x3F,0xCF,0xFF,0xFF,0xFF,0xF0,0xFF,0xFF,0xFF,0xFF,0xE0,0x1F,0xCF,0xFF,0xFF,0xFF,0xF0,0xFF,0xFF,0xFF,0xFF,0xD8,0xEF,0x9F,0xFF,0xFF,0xFF,0xF0,0xFF,0xFF,0xFF,0xFF,0xBA,0x7F,0x1F,0xFF,0xFF,0xFF,0xF0,0xFF,0xFF,0xFF,0xFF,0xFB,0xBF,0x1F,0xFF,0xFF,0xFF,0xF0,0xFF,0xFF,0xFF,0xFF,0xF3,0xFE,0x3F,0xFF,0xFF,0xFF,0xF0,0xFF,0xFF,0xFF,0xFF,0xF7,0xFC,0x7F,0xFF,0xFF,0xFF,0xF0,0xFF,0xFF,0xFF,0xFF,0xE7,0xF8,0x7F,0xFF,0xFF,0xFF,0xF0,0xFF,0xFF,0xFF,0xFF,0xCF,0xF8,0xFF,0xFF,0xFF,0xFF,0xF0,0xFF,0xFF,0xFF,0xFF,0x9F,0xF0,0xFF,0xFF,0xFF,0xFF,0xF0,0xFF,0xFF,0xFF,0xFE,0x3F,0xE1,0xFF,0xFF,0xFF,0xFF,0xF0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,};
byte const * tabCpt[4] = {fight,cptBold1,cptBold2,cptBold3};
void drawBitmapMask(int8_t dst_x, int8_t dst_y, const uint8_t *bitmap, const uint8_t *mask)
{
uint8_t w = pgm_read_byte(bitmap);
uint8_t h = pgm_read_byte(bitmap + 1);
bitmap = bitmap + 2; //add an offset to the pointer to start after the width and height
mask = mask+2;
int i, j, byteNum, bitNum, byteWidth = (w + 7) >> 3;
for (int dy = 0; dy < h; dy++)
{
for (int dx = 0; dx < w; dx++)
{
if (pgm_read_byte(mask + (dy * byteWidth + dx / 8)) & (B10000000 >> (dx % 8)))
{
if (pgm_read_byte(bitmap + (dy * byteWidth + dx / 8)) & (B10000000 >> (dx % 8)))
{
gb.display.setColor(BLACK);
}
else {
gb.display.setColor(WHITE);
}
gb.display.drawPixel(dst_x + dx, dst_y + dy);
}
}
}
gb.display.setColor(BLACK);
}
void initArena()
{
cptCombat = CPT_COMBAT_INIT;
cptTechArena = 80;
stateFight = 0;
xoffsetCptGras = 0;
yoffsetTimeUp = 0;
}
void updateArena()
{
if(cptTechArena>0) cptTechArena--;
if(stateFight == 0)
{
if(cptTechArena == 19)
{
xoffsetCptGras = 13;
}
else if(cptTechArena == 0)
{
stateFight = 1;
}
}
if(stateFight == 1 && cptCombat == 0)
{
stateFight = 3;
cptTechArena = 60;
}
if((Player1.life == 0 ||Player2.life == 0) && stateFight != 2)
{
stateFight = 2;
cptTechArena = 60;
}
if(stateFight == 1)
{
if(gb.frameCount%20 == 0) cptCombat--;
}
if(stateFight == 3 || stateFight == 2)
{
if(cptTechArena >= 30 )
{
yoffsetTimeUp = cptTechArena-30;
}
if(cptTechArena ==0 )
{
stateFight = 4;
}
}
}
void drawArena()
{
//if(gb.frameCount%2 ==0){ gb.display.drawBitmap(0,0,ileTresor); };
gb.display.setColor(GRAY);
gb.display.drawBitmap(0,0,ileTresor);
gb.display.setColor(BLACK);
//return;
//gb.display.drawBitmap(0,0,arene);
switch(stateFight)
{
case 0 :
//3, 2, 1 Fight!
gb.display.drawBitmap(39-xoffsetCptGras,18,tabCpt[((uint8_t)cptTechArena/20)]);
break;
case 1 :
//Fight
//displayInt(cptCombat,38,1,2);
break;
case 2 :
//Figther KO
if(Player1.life != Player2.life)
{
gb.display.drawBitmap(29,18 + yoffsetTimeUp,((Player1.life == 0)? p1ko : p2ko) );
}
break;
case 3 :
//Time UP
gb.display.drawBitmap(21,18 + yoffsetTimeUp,timeUp);
break;
}
drawBitmapMask(0,0,barreHaut,barreHautMask);
byte dizaine = cptCombat/10;
byte unite = cptCombat - (dizaine*10);
gb.display.cursorX = 39;
gb.display.cursorY = 1;
gb.display.print(dizaine);
gb.display.cursorX = 42;
gb.display.print(unite);
}
void restartCombat()
{
initPlayer(false);
initArena();
}