Great Gamebuino game by AJSB. Ported to Pokitto by Jonne using automatic parser

Dependencies:   PokittoLib

Fork of Armageddon by Pokitto Community Team

Committer:
Pokitto
Date:
Wed May 02 06:33:25 2018 +0000
Revision:
15:d89b75a69052
Parent:
9:949027352af6
New pokittolib with improved volume controls & better button handling

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Pokitto 9:949027352af6 1 /* This file was automatically parsed from an Arduino sourcefile */
Pokitto 9:949027352af6 2 /* by PokittoParser v0.1 Copyright 2016 Jonne Valola */
Pokitto 9:949027352af6 3 /* USE AT YOUR OWN RISK - NO GUARANTEES GIVEN OF 100% CORRECTNESS */
Pokitto 9:949027352af6 4
Pokitto 9:949027352af6 5 #include <stdint.h>
Pokitto 9:949027352af6 6 #include "PokittoCore.h"
Pokitto 9:949027352af6 7
Pokitto 9:949027352af6 8 const char lev[] PROGMEM = {
Pokitto 9:949027352af6 9 " "/////////////////////////////////
Pokitto 9:949027352af6 10 " BBBB F"
Pokitto 9:949027352af6 11 " BM?B CC B BB G"
Pokitto 9:949027352af6 12 " C C B ?BB M?? GG"
Pokitto 9:949027352af6 13 " gGGG GGG g g B BB GGG"
Pokitto 9:949027352af6 14 "GGGGGGGGGGGGGG GGGGGGGGGGGGGGG GGGGGGGGGGGGGGGGGGGGGG"
Pokitto 9:949027352af6 15
Pokitto 9:949027352af6 16 " GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG"/////////////////////////////////
Pokitto 9:949027352af6 17 " CCC g GCCCCCCCCCCCCCCCCCCCCCCC "
Pokitto 9:949027352af6 18 " B??B GBBGGGGGGGGGGGGGGGGGGGGG CCC "
Pokitto 9:949027352af6 19 " ?M? BBBBBBB?B B "
Pokitto 9:949027352af6 20 " g B BB g g F"
Pokitto 9:949027352af6 21 "GGGGGGGG GGGGGGGGGGGGGGGGGG GGG GG GG GGGGGGGGGGGGGGGGGG"
Pokitto 9:949027352af6 22
Pokitto 9:949027352af6 23 " GGGGGGGGGGG GGGGGGGGGGGGGGGGGGGGG GGGG"/////////////////////////////////
Pokitto 9:949027352af6 24 " GGGGGGGG G CCCCCC GG GGGGGGGGGGGGGGGGGGGGGGGG GGGG"
Pokitto 9:949027352af6 25 "GGG G GGGGGGGGGGG GGG GGGG"
Pokitto 9:949027352af6 26 "GGG GGGGGGGGGGGGGGGGGGGGGGGG GGGGGG GGGGGGGGGGG GGG "
Pokitto 9:949027352af6 27 "GGG g GGGGGGGGGGGFGGG "
Pokitto 9:949027352af6 28 "GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG"
Pokitto 9:949027352af6 29
Pokitto 9:949027352af6 30 " BB "/////////////////////////////////
Pokitto 9:949027352af6 31 " BBCCC "
Pokitto 9:949027352af6 32 " CC CC CC CC CC CC BBCCCCCC CC CC CC CC CC CC CC CC CC "
Pokitto 9:949027352af6 33 " CCCCCC GG F"
Pokitto 9:949027352af6 34 "GGGG g g g g g g g g g g Gg g G g g g g gGGGGGG"
Pokitto 9:949027352af6 35 "GGGGSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSGGGGGG"
Pokitto 9:949027352af6 36
Pokitto 9:949027352af6 37 " S GGG "/////////////////////////////////
Pokitto 9:949027352af6 38 " B M S S GFG "
Pokitto 9:949027352af6 39 "BBBBBBB BBB BBB GBG "
Pokitto 9:949027352af6 40 "CCCCCCC BB S "
Pokitto 9:949027352af6 41 " GGG BBB BBB G g g g g gG "
Pokitto 9:949027352af6 42 "GGGGGGGGGGGGGGGGG GGGGGGGGGGGGGGGGG "
Pokitto 9:949027352af6 43
Pokitto 9:949027352af6 44 " "/////////////////////////////////
Pokitto 9:949027352af6 45 " IIII F"
Pokitto 9:949027352af6 46 " IM?I CC I II I"
Pokitto 9:949027352af6 47 " C C I ?II M?? II"
Pokitto 9:949027352af6 48 " gIII III g g I II III"
Pokitto 9:949027352af6 49 "IIIIIIIIIIIIII IIIIIIIIIIIIIII IIIIIIIIIIIIIIIIIIIIII"
Pokitto 9:949027352af6 50
Pokitto 9:949027352af6 51
Pokitto 9:949027352af6 52
Pokitto 9:949027352af6 53 "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC"/////////////////////////////////
Pokitto 9:949027352af6 54 "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC"
Pokitto 9:949027352af6 55 "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC"
Pokitto 9:949027352af6 56 "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC"
Pokitto 9:949027352af6 57 "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC"
Pokitto 9:949027352af6 58 "GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG"
Pokitto 9:949027352af6 59 };
Pokitto 9:949027352af6 60
Pokitto 9:949027352af6 61
Pokitto 9:949027352af6 62
Pokitto 9:949027352af6 63
Pokitto 9:949027352af6 64 #include "PokittoCore.h"
Pokitto 9:949027352af6 65 /* Auto-generated function declarations */
Pokitto 9:949027352af6 66 void loadLevel(int);
Pokitto 9:949027352af6 67 void nextLevel();
Pokitto 9:949027352af6 68 void drawLevel();
Pokitto 9:949027352af6 69 void removeEnt(int);
Pokitto 9:949027352af6 70 void clearEnts();
Pokitto 9:949027352af6 71 void addEnt(int, int,const byte *);
Pokitto 9:949027352af6 72 void updateEnt();
Pokitto 9:949027352af6 73 boolean Collide(float, float, const byte*);
Pokitto 9:949027352af6 74 void setup();
Pokitto 9:949027352af6 75 void loop();
Pokitto 9:949027352af6 76 void Menu();
Pokitto 9:949027352af6 77 void start();
Pokitto 9:949027352af6 78 void startGame();
Pokitto 9:949027352af6 79 void inputCode();
Pokitto 9:949027352af6 80 void controls();
Pokitto 9:949027352af6 81 void lose();
Pokitto 9:949027352af6 82 void win();
Pokitto 9:949027352af6 83 void startTimer();
Pokitto 9:949027352af6 84 void updateDisplay();
Pokitto 9:949027352af6 85 void startPlayer();
Pokitto 9:949027352af6 86 void updatePlayer();
Pokitto 9:949027352af6 87 void drawPlayer();
Pokitto 9:949027352af6 88 void getBig();
Pokitto 9:949027352af6 89 void getSmall();
Pokitto 9:949027352af6 90 void die();
Pokitto 9:949027352af6 91 boolean playerCollide();
Pokitto 9:949027352af6 92 void checkCode(char*);
Pokitto 9:949027352af6 93 Pokitto::Core gb;
Pokitto 9:949027352af6 94
Pokitto 9:949027352af6 95
Pokitto 9:949027352af6 96 #define MENULENGTH 4
Pokitto 9:949027352af6 97 const char strPlay[] PROGMEM = "Play Game";
Pokitto 9:949027352af6 98 const char strMainMenu[] PROGMEM = "Main Menu";
Pokitto 9:949027352af6 99 const char strCode[] PROGMEM = "Input a code";
Pokitto 9:949027352af6 100 const char strControls[] PROGMEM = "Controls";
Pokitto 9:949027352af6 101 const char* const menu[MENULENGTH] PROGMEM = {
Pokitto 9:949027352af6 102 strPlay, strMainMenu, strControls, strCode,
Pokitto 9:949027352af6 103 };
Pokitto 9:949027352af6 104
Pokitto 9:949027352af6 105
Pokitto 9:949027352af6 106 typedef struct {
Pokitto 9:949027352af6 107 int invincible;
Pokitto 9:949027352af6 108 float x;
Pokitto 9:949027352af6 109 float vx;
Pokitto 9:949027352af6 110 float y;
Pokitto 9:949027352af6 111 float vy;
Pokitto 9:949027352af6 112 byte h;
Pokitto 9:949027352af6 113 boolean flip;
Pokitto 9:949027352af6 114 boolean big;
Pokitto 9:949027352af6 115 boolean crouch;
Pokitto 9:949027352af6 116 } Char;
Pokitto 9:949027352af6 117
Pokitto 9:949027352af6 118 typedef struct{
Pokitto 9:949027352af6 119 float x;
Pokitto 9:949027352af6 120 float y;
Pokitto 9:949027352af6 121 float vx;
Pokitto 9:949027352af6 122 float vy;
Pokitto 9:949027352af6 123 boolean flip;
Pokitto 9:949027352af6 124 const byte *bitmap;
Pokitto 9:949027352af6 125 } Entity;
Pokitto 9:949027352af6 126
Pokitto 9:949027352af6 127
Pokitto 9:949027352af6 128
Pokitto 9:949027352af6 129 extern const byte font3x5[];
Pokitto 9:949027352af6 130 extern const byte font5x7[];
Pokitto 9:949027352af6 131 extern const byte Title[] PROGMEM;
Pokitto 9:949027352af6 132 extern const char lev[] PROGMEM;
Pokitto 9:949027352af6 133 extern const byte Ground[] PROGMEM;
Pokitto 9:949027352af6 134 extern const byte Spikes[] PROGMEM;
Pokitto 9:949027352af6 135 extern const byte Brick[] PROGMEM;
Pokitto 9:949027352af6 136 extern const byte MysteryBlockC[] PROGMEM;
Pokitto 9:949027352af6 137 extern const byte MysteryBlockM[] PROGMEM;
Pokitto 9:949027352af6 138 extern const byte Coin[] PROGMEM;
Pokitto 9:949027352af6 139 extern const byte Empty[] PROGMEM;
Pokitto 9:949027352af6 140 extern const byte PlayerS[] PROGMEM;
Pokitto 9:949027352af6 141 extern const byte PlayerS1[] PROGMEM;
Pokitto 9:949027352af6 142 extern const byte PlayerT[] PROGMEM;
Pokitto 9:949027352af6 143 extern const byte PlayerT1[] PROGMEM;
Pokitto 9:949027352af6 144 extern const byte PlayerT2[] PROGMEM;
Pokitto 9:949027352af6 145 extern const byte PlayerT3[] PROGMEM;
Pokitto 9:949027352af6 146 extern const byte PlayerT4[] PROGMEM;
Pokitto 9:949027352af6 147 extern const byte PlayerT5[] PROGMEM;
Pokitto 9:949027352af6 148 extern const byte PlayerT6[] PROGMEM;
Pokitto 9:949027352af6 149 extern const byte PlayerC[] PROGMEM;
Pokitto 9:949027352af6 150 extern const byte Mushroom[] PROGMEM;
Pokitto 9:949027352af6 151 extern const byte Goomba[] PROGMEM;
Pokitto 9:949027352af6 152 extern const byte Flag[] PROGMEM;
Pokitto 9:949027352af6 153 Char player;
Pokitto 9:949027352af6 154
Pokitto 9:949027352af6 155
Pokitto 9:949027352af6 156 int cameraPos;
Pokitto 9:949027352af6 157 int frames;
Pokitto 9:949027352af6 158 int score;
Pokitto 9:949027352af6 159 int curLev;
Pokitto 9:949027352af6 160 int numLevs = 6;
Pokitto 9:949027352af6 161 int lives = 5;
Pokitto 9:949027352af6 162 byte time_b;
Pokitto 9:949027352af6 163 boolean running;
Pokitto 9:949027352af6 164 boolean disp = true;
Pokitto 9:949027352af6 165 char code[12] = "";
Pokitto 9:949027352af6 166
Pokitto 9:949027352af6 167 const byte *_block;
Pokitto 9:949027352af6 168 char curLevel[384] = "";
Pokitto 9:949027352af6 169
Pokitto 9:949027352af6 170
Pokitto 9:949027352af6 171 int main() {
Pokitto 9:949027352af6 172 setup();
Pokitto 9:949027352af6 173 while (gb.isRunning()) {
Pokitto 9:949027352af6 174 loop();
Pokitto 9:949027352af6 175 }
Pokitto 9:949027352af6 176 }
Pokitto 9:949027352af6 177
Pokitto 9:949027352af6 178 void loadLevel(int curLev){
Pokitto 9:949027352af6 179 for(int i = 0; i<384; i++){//Loops through the level
Pokitto 9:949027352af6 180 curLevel[i] = (char)pgm_read_byte(lev + 384 * (curLev - 1) + i);
Pokitto 9:949027352af6 181 }
Pokitto 9:949027352af6 182
Pokitto 9:949027352af6 183
Pokitto 9:949027352af6 184 }
Pokitto 9:949027352af6 185
Pokitto 9:949027352af6 186 void nextLevel(){
Pokitto 9:949027352af6 187 if(curLev == numLevs){
Pokitto 9:949027352af6 188 win();
Pokitto 9:949027352af6 189 }
Pokitto 9:949027352af6 190 else{
Pokitto 9:949027352af6 191 gb.popup(("Next Level!"), 20);
Pokitto 9:949027352af6 192 if(curLev == 6){
Pokitto 9:949027352af6 193 gb.popup(("Remember lvl 1?"), 20);
Pokitto 9:949027352af6 194 }
Pokitto 9:949027352af6 195 curLev ++;
Pokitto 9:949027352af6 196 loadLevel(curLev);
Pokitto 9:949027352af6 197 player.y = player.x = 0;
Pokitto 9:949027352af6 198 time_b = 130;
Pokitto 9:949027352af6 199 cameraPos = 0;
Pokitto 9:949027352af6 200 }
Pokitto 9:949027352af6 201 }
Pokitto 9:949027352af6 202
Pokitto 9:949027352af6 203 void drawLevel(){
Pokitto 9:949027352af6 204 for(int i = 0; i<6; i++){
Pokitto 9:949027352af6 205 for(int j = 0; j<64; j++){
Pokitto 9:949027352af6 206 if((j*8 - cameraPos >= -8 && j*8 - cameraPos <= LCDWIDTH +8)){
Pokitto 9:949027352af6 207 _block = NULL;
Pokitto 9:949027352af6 208 switch(curLevel[(i)*64+j]){
Pokitto 9:949027352af6 209 case 'G' :
Pokitto 9:949027352af6 210 _block = Ground;
Pokitto 9:949027352af6 211 break;
Pokitto 9:949027352af6 212 case 'B' :
Pokitto 9:949027352af6 213 _block = Brick;
Pokitto 9:949027352af6 214 break;
Pokitto 9:949027352af6 215 case '?' :
Pokitto 9:949027352af6 216 _block = MysteryBlockC;
Pokitto 9:949027352af6 217 break;
Pokitto 9:949027352af6 218 case 'M' :
Pokitto 9:949027352af6 219 _block = MysteryBlockM;
Pokitto 9:949027352af6 220 break;
Pokitto 9:949027352af6 221 case 'C' :
Pokitto 9:949027352af6 222 _block = Coin;
Pokitto 9:949027352af6 223 break;
Pokitto 9:949027352af6 224 case 'S' :
Pokitto 9:949027352af6 225 _block = Spikes;
Pokitto 9:949027352af6 226 break;
Pokitto 9:949027352af6 227 case 'E' :
Pokitto 9:949027352af6 228 _block = Empty;
Pokitto 9:949027352af6 229 break;
Pokitto 9:949027352af6 230 case 'F' :
Pokitto 9:949027352af6 231 _block = Flag;
Pokitto 9:949027352af6 232 break;
Pokitto 9:949027352af6 233 case 'g' :
Pokitto 9:949027352af6 234 curLevel[(i)*64+j] = 'Q';
Pokitto 9:949027352af6 235 addEnt(j*8, LCDHEIGHT - (8 * (6-i)), Goomba);
Pokitto 9:949027352af6 236 break;
Pokitto 9:949027352af6 237 default:
Pokitto 9:949027352af6 238 break;
Pokitto 9:949027352af6 239 }
Pokitto 9:949027352af6 240
Pokitto 9:949027352af6 241 if(_block != NULL) {
Pokitto 9:949027352af6 242 if((_block == Coin || _block == Spikes) && gb.frameCount%20 >= 10){
Pokitto 9:949027352af6 243 gb.display.drawBitmap(j*8 - cameraPos, LCDHEIGHT - (8 * (6-i)), _block, NOROT, FLIPH);
Pokitto 9:949027352af6 244 }
Pokitto 9:949027352af6 245 else{
Pokitto 9:949027352af6 246 gb.display.drawBitmap(j*8 - cameraPos, LCDHEIGHT - (8 * (6-i)), _block);
Pokitto 9:949027352af6 247 }
Pokitto 9:949027352af6 248 }
Pokitto 9:949027352af6 249 }
Pokitto 9:949027352af6 250 else if(curLevel[(i)*64+j] == 'Q'){
Pokitto 9:949027352af6 251 curLevel[(i)*64+j] = 'g';
Pokitto 9:949027352af6 252 }
Pokitto 9:949027352af6 253
Pokitto 9:949027352af6 254 }
Pokitto 9:949027352af6 255 }
Pokitto 9:949027352af6 256 }
Pokitto 9:949027352af6 257
Pokitto 9:949027352af6 258 #define numEnt 10
Pokitto 9:949027352af6 259 Entity entities[10];
Pokitto 9:949027352af6 260 boolean collide;
Pokitto 9:949027352af6 261
Pokitto 9:949027352af6 262
Pokitto 9:949027352af6 263
Pokitto 9:949027352af6 264 void removeEnt(int i){
Pokitto 9:949027352af6 265 entities[i].bitmap = PlayerC;
Pokitto 9:949027352af6 266 entities[i].x = 0;
Pokitto 9:949027352af6 267 entities[i].vx = 0;
Pokitto 9:949027352af6 268 entities[i].y = 0;
Pokitto 9:949027352af6 269 entities[i].vy = 0;
Pokitto 9:949027352af6 270 }
Pokitto 9:949027352af6 271
Pokitto 9:949027352af6 272 void clearEnts(){
Pokitto 9:949027352af6 273 for(int i = 0; i<numEnt; i++){
Pokitto 9:949027352af6 274 entities[i].x = entities[i].y = entities[i].vx = entities[i].vy = 0;
Pokitto 9:949027352af6 275 entities[i].bitmap = PlayerC;
Pokitto 9:949027352af6 276 }
Pokitto 9:949027352af6 277 }
Pokitto 9:949027352af6 278
Pokitto 9:949027352af6 279 void addEnt(int x, int y,const byte *b){
Pokitto 9:949027352af6 280 for(int i = 0; i<numEnt; i++){
Pokitto 9:949027352af6 281 if(entities[i].bitmap == PlayerC){
Pokitto 9:949027352af6 282 entities[i].bitmap = b;
Pokitto 9:949027352af6 283 entities[i].x = x;
Pokitto 9:949027352af6 284 entities[i].y = y;
Pokitto 9:949027352af6 285 entities[i].vy = 0;
Pokitto 9:949027352af6 286 if(b == Mushroom){
Pokitto 9:949027352af6 287 entities[i].vx = 1;
Pokitto 9:949027352af6 288 }
Pokitto 9:949027352af6 289 else{
Pokitto 9:949027352af6 290 entities[i].vx = -1;
Pokitto 9:949027352af6 291 }
Pokitto 9:949027352af6 292
Pokitto 9:949027352af6 293 break;
Pokitto 9:949027352af6 294 }
Pokitto 9:949027352af6 295 }
Pokitto 9:949027352af6 296 }
Pokitto 9:949027352af6 297
Pokitto 9:949027352af6 298 void updateEnt(){
Pokitto 9:949027352af6 299 for(int i = 0; i< numEnt; i++){
Pokitto 9:949027352af6 300 if(entities[i].bitmap != PlayerC){
Pokitto 9:949027352af6 301
Pokitto 9:949027352af6 302 entities[i].x += entities[i].vx;
Pokitto 9:949027352af6 303 if(Collide(entities[i].x, entities[i].y, entities[i].bitmap)){
Pokitto 9:949027352af6 304 entities[i].x -= entities[i].vx;
Pokitto 9:949027352af6 305 entities[i].vx *= -1;
Pokitto 9:949027352af6 306 }
Pokitto 9:949027352af6 307
Pokitto 9:949027352af6 308 entities[i].vy += .4;
Pokitto 9:949027352af6 309 if(entities[i].vy >2){
Pokitto 9:949027352af6 310 entities[i].vy = 2;
Pokitto 9:949027352af6 311 }
Pokitto 9:949027352af6 312
Pokitto 9:949027352af6 313 entities[i].y += entities[i].vy;
Pokitto 9:949027352af6 314 if(Collide(entities[i].x, entities[i].y, entities[i].bitmap)){
Pokitto 9:949027352af6 315 entities[i].y -= entities[i].vy;
Pokitto 9:949027352af6 316 entities[i].vy /= 2;
Pokitto 9:949027352af6 317 }
Pokitto 9:949027352af6 318
Pokitto 9:949027352af6 319 if(entities[i].y > LCDHEIGHT || entities[i].x - cameraPos <= -8 || entities[i].x - cameraPos > LCDWIDTH + 8){
Pokitto 9:949027352af6 320 removeEnt(i);
Pokitto 9:949027352af6 321 }
Pokitto 9:949027352af6 322
Pokitto 9:949027352af6 323 if(entities[i].bitmap == Goomba && gb.frameCount%10 >= 5){
Pokitto 9:949027352af6 324 gb.display.drawBitmap(entities[i].x - cameraPos, entities[i].y, entities[i].bitmap, NOROT, FLIPH);
Pokitto 9:949027352af6 325 }
Pokitto 9:949027352af6 326
Pokitto 9:949027352af6 327 else{
Pokitto 9:949027352af6 328 gb.display.drawBitmap(entities[i].x - cameraPos, entities[i].y, entities[i].bitmap, NOROT, NOFLIP);
Pokitto 9:949027352af6 329 }
Pokitto 9:949027352af6 330
Pokitto 9:949027352af6 331 }
Pokitto 9:949027352af6 332 }
Pokitto 9:949027352af6 333 }
Pokitto 9:949027352af6 334
Pokitto 9:949027352af6 335 boolean Collide(float x, float y, const byte* bMap){
Pokitto 9:949027352af6 336 collide = false;
Pokitto 9:949027352af6 337 for(int i = 0; i<6; i++){
Pokitto 9:949027352af6 338 for(int j = 0; j<64; j++){
Pokitto 9:949027352af6 339 _block = NULL;
Pokitto 9:949027352af6 340 switch(curLevel[(i)*64+j]){
Pokitto 9:949027352af6 341 case 'G' :
Pokitto 9:949027352af6 342 _block = Ground;
Pokitto 9:949027352af6 343 break;
Pokitto 9:949027352af6 344 case 'B' :
Pokitto 9:949027352af6 345 _block = Brick;
Pokitto 9:949027352af6 346 break;
Pokitto 9:949027352af6 347 case '?' :
Pokitto 9:949027352af6 348 _block = MysteryBlockC;
Pokitto 9:949027352af6 349 break;
Pokitto 9:949027352af6 350 case 'M' :
Pokitto 9:949027352af6 351 _block = MysteryBlockM;
Pokitto 9:949027352af6 352 break;
Pokitto 9:949027352af6 353 case 'S' :
Pokitto 9:949027352af6 354 case 'I' :
Pokitto 9:949027352af6 355 case 'E' :
Pokitto 9:949027352af6 356 _block = Empty;
Pokitto 9:949027352af6 357 break;
Pokitto 9:949027352af6 358 default:
Pokitto 9:949027352af6 359 break;
Pokitto 9:949027352af6 360 }
Pokitto 9:949027352af6 361
Pokitto 9:949027352af6 362 if(!(_block == NULL)){
Pokitto 9:949027352af6 363 if(gb.collideBitmapBitmap(x, y, bMap, j*8, LCDHEIGHT - (8*(6-i)), _block)){
Pokitto 9:949027352af6 364 collide = true;
Pokitto 9:949027352af6 365 }
Pokitto 9:949027352af6 366 }
Pokitto 9:949027352af6 367 }
Pokitto 9:949027352af6 368 }
Pokitto 9:949027352af6 369 return collide;
Pokitto 9:949027352af6 370 }
Pokitto 9:949027352af6 371
Pokitto 9:949027352af6 372
Pokitto 9:949027352af6 373 void setup(){
Pokitto 9:949027352af6 374 // initialize the Gamebuino object
Pokitto 9:949027352af6 375
Pokitto 9:949027352af6 376 gb.begin();
Pokitto 9:949027352af6 377 gb.display.palette[0]=COLOR_WHITE;
Pokitto 9:949027352af6 378 gb.display.palette[1]=COLOR_BLACK;
Pokitto 9:949027352af6 379 gb.display.setFont(font5x7);
Pokitto 9:949027352af6 380 gb.battery.show = false;
Pokitto 9:949027352af6 381 start();
Pokitto 9:949027352af6 382 }
Pokitto 9:949027352af6 383
Pokitto 9:949027352af6 384
Pokitto 9:949027352af6 385 void loop(){
Pokitto 9:949027352af6 386 if(gb.update()){
Pokitto 9:949027352af6 387 gb.battery.show = false;
Pokitto 9:949027352af6 388 if(running){
Pokitto 9:949027352af6 389 updatePlayer();
Pokitto 9:949027352af6 390 updateEnt();
Pokitto 9:949027352af6 391 drawPlayer();
Pokitto 9:949027352af6 392 drawLevel();
Pokitto 9:949027352af6 393 updateDisplay();
Pokitto 9:949027352af6 394 }
Pokitto 9:949027352af6 395
Pokitto 9:949027352af6 396 }
Pokitto 9:949027352af6 397 }
Pokitto 9:949027352af6 398
Pokitto 9:949027352af6 399 void Menu(){
Pokitto 9:949027352af6 400 running = false;
Pokitto 9:949027352af6 401 gb.display.setFont(font5x7);
Pokitto 9:949027352af6 402 switch(gb.menu(menu, MENULENGTH)){
Pokitto 9:949027352af6 403 case -1: //Nothing
Pokitto 9:949027352af6 404 start();
Pokitto 9:949027352af6 405 break;
Pokitto 9:949027352af6 406 case 0: //Play game
Pokitto 9:949027352af6 407 startGame();
Pokitto 9:949027352af6 408 break;
Pokitto 9:949027352af6 409 case 1: //Main menu
Pokitto 9:949027352af6 410 start();
Pokitto 9:949027352af6 411 break;
Pokitto 9:949027352af6 412 case 2: //Display controls
Pokitto 9:949027352af6 413 controls();
Pokitto 9:949027352af6 414 break;
Pokitto 9:949027352af6 415 case 3: //Code input screen
Pokitto 9:949027352af6 416 inputCode();
Pokitto 9:949027352af6 417 break;
Pokitto 9:949027352af6 418 default:
Pokitto 9:949027352af6 419 break;
Pokitto 9:949027352af6 420 }
Pokitto 9:949027352af6 421 }
Pokitto 9:949027352af6 422
Pokitto 9:949027352af6 423 void start(){
Pokitto 9:949027352af6 424 // show the start menu
Pokitto 9:949027352af6 425 gb.titleScreen(("By: ajsb113"), Title);
Pokitto 9:949027352af6 426 Menu();
Pokitto 9:949027352af6 427
Pokitto 9:949027352af6 428 }
Pokitto 9:949027352af6 429 void startGame(){
Pokitto 9:949027352af6 430 cameraPos = 0;
Pokitto 9:949027352af6 431 score = 0;
Pokitto 9:949027352af6 432 lives = 5;
Pokitto 9:949027352af6 433 running = true;
Pokitto 9:949027352af6 434 curLev = 1;
Pokitto 9:949027352af6 435 clearEnts();
Pokitto 9:949027352af6 436 startTimer();
Pokitto 9:949027352af6 437 startPlayer();
Pokitto 9:949027352af6 438 loadLevel(curLev);
Pokitto 9:949027352af6 439
Pokitto 9:949027352af6 440 }
Pokitto 9:949027352af6 441
Pokitto 9:949027352af6 442 void inputCode(){
Pokitto 9:949027352af6 443 while(!gb.buttons.pressed(BTN_A)){
Pokitto 9:949027352af6 444 if(gb.update()){
Pokitto 9:949027352af6 445 gb.display.cursorX = 0;
Pokitto 9:949027352af6 446 gb.display.cursorY = 5;
Pokitto 9:949027352af6 447 gb.display.textWrap = true;
Pokitto 9:949027352af6 448 gb.display.println("Press \25 to enter a code or \27 to return to menu");
Pokitto 9:949027352af6 449 gb.display.textWrap = false;
Pokitto 9:949027352af6 450 }
Pokitto 9:949027352af6 451 }
Pokitto 9:949027352af6 452 gb.keyboard(code, 12);
Pokitto 9:949027352af6 453 Menu();
Pokitto 9:949027352af6 454 }
Pokitto 9:949027352af6 455
Pokitto 9:949027352af6 456 void controls(){
Pokitto 9:949027352af6 457 while(!gb.buttons.pressed(BTN_A)){
Pokitto 9:949027352af6 458 if(gb.update()){
Pokitto 9:949027352af6 459 gb.display.cursorX = 0;
Pokitto 9:949027352af6 460 gb.display.cursorY = 0;
Pokitto 9:949027352af6 461 gb.display.setFont(font3x5);
Pokitto 9:949027352af6 462 gb.display.textWrap = true;
Pokitto 9:949027352af6 463 gb.display.println("Use \33 & \32 to move.");
Pokitto 9:949027352af6 464 gb.display.cursorY += 1;
Pokitto 9:949027352af6 465 gb.display.println("Press \30 to toggle HUD size.");
Pokitto 9:949027352af6 466 gb.display.cursorY += 1;
Pokitto 9:949027352af6 467 gb.display.println("Press \25 to jump.");
Pokitto 9:949027352af6 468 gb.display.cursorY += 1;
Pokitto 9:949027352af6 469 gb.display.println("Hold \26 to crouch");
Pokitto 9:949027352af6 470 gb.display.cursorY += 1;
Pokitto 9:949027352af6 471 gb.display.println("Press \27 to return to menu.");
Pokitto 9:949027352af6 472 }
Pokitto 9:949027352af6 473 }
Pokitto 9:949027352af6 474 Menu();
Pokitto 9:949027352af6 475 }
Pokitto 9:949027352af6 476
Pokitto 9:949027352af6 477 void lose(){//temporary
Pokitto 9:949027352af6 478 running = false;
Pokitto 9:949027352af6 479 while(!gb.buttons.pressed(BTN_A)){
Pokitto 9:949027352af6 480 if(gb.update()){
Pokitto 9:949027352af6 481 gb.display.setFont(font5x7);
Pokitto 9:949027352af6 482 gb.display.cursorY = 5;
Pokitto 9:949027352af6 483 gb.display.cursorX = 15;
Pokitto 9:949027352af6 484
Pokitto 9:949027352af6 485 gb.display.println("You lose \1");
Pokitto 9:949027352af6 486 gb.display.print("Score:");
Pokitto 9:949027352af6 487 gb.display.println(score);
Pokitto 9:949027352af6 488 gb.display.println("Press \25 to \n continue");
Pokitto 9:949027352af6 489 }
Pokitto 9:949027352af6 490 }
Pokitto 9:949027352af6 491 Menu();
Pokitto 9:949027352af6 492 }
Pokitto 9:949027352af6 493
Pokitto 9:949027352af6 494 void win(){
Pokitto 9:949027352af6 495 running = false;
Pokitto 9:949027352af6 496 while(!gb.buttons.pressed(BTN_A)){
Pokitto 9:949027352af6 497 if(gb.update()){
Pokitto 9:949027352af6 498 gb.display.setFont(font5x7);
Pokitto 9:949027352af6 499 gb.display.cursorY = 5;
Pokitto 9:949027352af6 500 gb.display.cursorX = 20;
Pokitto 9:949027352af6 501
Pokitto 9:949027352af6 502 gb.display.println("You win!!\2");
Pokitto 9:949027352af6 503 gb.display.print("Score:");
Pokitto 9:949027352af6 504 gb.display.println(score);
Pokitto 9:949027352af6 505 gb.display.println("Press \25 to \n continue");
Pokitto 9:949027352af6 506 }
Pokitto 9:949027352af6 507 }
Pokitto 9:949027352af6 508 Menu();
Pokitto 9:949027352af6 509 }
Pokitto 9:949027352af6 510
Pokitto 9:949027352af6 511 void startTimer(){
Pokitto 9:949027352af6 512 time_b = 130;
Pokitto 9:949027352af6 513 frames = gb.frameCount;
Pokitto 9:949027352af6 514 }
Pokitto 9:949027352af6 515
Pokitto 9:949027352af6 516 void updateDisplay(){
Pokitto 9:949027352af6 517 if((gb.frameCount - frames)>=20){
Pokitto 9:949027352af6 518 frames = gb.frameCount;
Pokitto 9:949027352af6 519 time_b --;
Pokitto 9:949027352af6 520 }
Pokitto 9:949027352af6 521 if(disp){
Pokitto 9:949027352af6 522 gb.display.fillRect(0,0,LCDWIDTH,7);
Pokitto 9:949027352af6 523 gb.display.setColor(WHITE,BLACK);
Pokitto 9:949027352af6 524 gb.display.setFont(font3x5);
Pokitto 9:949027352af6 525 gb.display.cursorY = 1;
Pokitto 9:949027352af6 526 gb.display.cursorX = 1;
Pokitto 9:949027352af6 527 gb.display.print("\35:");
Pokitto 9:949027352af6 528 gb.display.print((int)time_b);
Pokitto 9:949027352af6 529 gb.display.print(" \44:");
Pokitto 9:949027352af6 530 gb.display.print((int)score);
Pokitto 9:949027352af6 531 gb.display.print(" \03:");
Pokitto 9:949027352af6 532 gb.display.print((int)lives);
Pokitto 9:949027352af6 533 gb.display.setColor(BLACK,WHITE);
Pokitto 9:949027352af6 534 }
Pokitto 9:949027352af6 535 else{
Pokitto 9:949027352af6 536 gb.display.fillRect(0,0,LCDWIDTH,5);
Pokitto 9:949027352af6 537 gb.display.setColor(WHITE,BLACK);
Pokitto 9:949027352af6 538 gb.display.setFont(font3x3);
Pokitto 9:949027352af6 539 gb.display.cursorY = 1;
Pokitto 9:949027352af6 540 gb.display.cursorX = 1;
Pokitto 9:949027352af6 541 gb.display.print("\35:");
Pokitto 9:949027352af6 542 gb.display.print((int)time_b);
Pokitto 9:949027352af6 543 gb.display.print(" \44:");
Pokitto 9:949027352af6 544 gb.display.print((int)score);
Pokitto 9:949027352af6 545 gb.display.print(" \03:");
Pokitto 9:949027352af6 546 gb.display.print((int)lives);
Pokitto 9:949027352af6 547 gb.display.setColor(BLACK,WHITE);
Pokitto 9:949027352af6 548 }
Pokitto 9:949027352af6 549 gb.display.setFont(font3x5);
Pokitto 9:949027352af6 550 }
Pokitto 9:949027352af6 551
Pokitto 9:949027352af6 552 boolean canJump = false;
Pokitto 9:949027352af6 553 boolean walking = false;
Pokitto 9:949027352af6 554 boolean bounce = false;
Pokitto 9:949027352af6 555 const byte *character;
Pokitto 9:949027352af6 556
Pokitto 9:949027352af6 557 void startPlayer(){
Pokitto 9:949027352af6 558 player.x = 0;
Pokitto 9:949027352af6 559 player.y = 0;
Pokitto 9:949027352af6 560 player.vx = 0;
Pokitto 9:949027352af6 561 player.vy = 0;
Pokitto 9:949027352af6 562 player.h = 4;
Pokitto 9:949027352af6 563 player.invincible = 40;
Pokitto 9:949027352af6 564 player.flip = false;
Pokitto 9:949027352af6 565 player.big = false;
Pokitto 9:949027352af6 566 player.crouch = false;
Pokitto 9:949027352af6 567 }
Pokitto 9:949027352af6 568
Pokitto 9:949027352af6 569
Pokitto 9:949027352af6 570 void updatePlayer(){
Pokitto 9:949027352af6 571 walking = false;
Pokitto 9:949027352af6 572 if(time_b == 0){//time_b out
Pokitto 9:949027352af6 573 die();
Pokitto 9:949027352af6 574 }
Pokitto 9:949027352af6 575 if(player.invincible > 0){//Invincibility frames
Pokitto 9:949027352af6 576 player.invincible--;
Pokitto 9:949027352af6 577 }
Pokitto 9:949027352af6 578
Pokitto 9:949027352af6 579 if(gb.buttons.pressed(BTN_C)){//Main menu
Pokitto 9:949027352af6 580 Menu();
Pokitto 9:949027352af6 581 }
Pokitto 9:949027352af6 582 if(gb.buttons.pressed(BTN_UP)){//Toggle display
Pokitto 9:949027352af6 583 disp = !disp;
Pokitto 9:949027352af6 584 }
Pokitto 9:949027352af6 585
Pokitto 9:949027352af6 586 if(gb.buttons.timeHeld(BTN_B)){//Smart crouching
Pokitto 9:949027352af6 587 if(player.big && !player.crouch){
Pokitto 9:949027352af6 588 player.y += 8;
Pokitto 9:949027352af6 589 }
Pokitto 9:949027352af6 590 player.crouch = true;
Pokitto 9:949027352af6 591 }
Pokitto 9:949027352af6 592
Pokitto 9:949027352af6 593 else{
Pokitto 9:949027352af6 594 if(player.big && player.crouch){//Checks if player can stand without colliding.
Pokitto 9:949027352af6 595 player.y -= 8;
Pokitto 9:949027352af6 596 if(playerCollide()){
Pokitto 9:949027352af6 597 player.y += 8;
Pokitto 9:949027352af6 598 }
Pokitto 9:949027352af6 599 else{
Pokitto 9:949027352af6 600 player.crouch = false;
Pokitto 9:949027352af6 601 }
Pokitto 9:949027352af6 602 }
Pokitto 9:949027352af6 603 }
Pokitto 9:949027352af6 604
Pokitto 9:949027352af6 605
Pokitto 9:949027352af6 606
Pokitto 9:949027352af6 607 player.vx *= 0.75;//So player.vx slows
Pokitto 9:949027352af6 608 if(gb.buttons.repeat(BTN_RIGHT, 1)){//Move right
Pokitto 9:949027352af6 609 player.vx += .4;
Pokitto 9:949027352af6 610 player.flip = false;
Pokitto 9:949027352af6 611 walking = true;
Pokitto 9:949027352af6 612 }
Pokitto 9:949027352af6 613
Pokitto 9:949027352af6 614 if(gb.buttons.repeat(BTN_LEFT,1)){//Move left
Pokitto 9:949027352af6 615 player.vx -= .4;
Pokitto 9:949027352af6 616 player.flip = true;
Pokitto 9:949027352af6 617 walking = true;
Pokitto 9:949027352af6 618 }
Pokitto 9:949027352af6 619
Pokitto 9:949027352af6 620 if(player.big){
Pokitto 9:949027352af6 621 if(player.crouch){
Pokitto 9:949027352af6 622 character = PlayerC;
Pokitto 9:949027352af6 623 player.h = 8;
Pokitto 9:949027352af6 624 }
Pokitto 9:949027352af6 625 else if(walking){//Walking animation
Pokitto 9:949027352af6 626 player.h = 16;
Pokitto 9:949027352af6 627 if(gb.frameCount % 12 >= 0 && gb.frameCount % 12 < 2){character = PlayerT1;}
Pokitto 9:949027352af6 628 else if(gb.frameCount % 12 >= 2 && gb.frameCount % 12 < 4) { character = PlayerT2; }
Pokitto 9:949027352af6 629 else if(gb.frameCount % 12 >= 4 && gb.frameCount % 12 < 6) { character = PlayerT3; }
Pokitto 9:949027352af6 630 else if(gb.frameCount % 12 >= 6 && gb.frameCount % 12 < 8) { character = PlayerT4; }
Pokitto 9:949027352af6 631 else if(gb.frameCount % 12 >= 8 && gb.frameCount % 12 < 10) { character = PlayerT5; }
Pokitto 9:949027352af6 632 else if(gb.frameCount % 12 >= 10 && gb.frameCount % 12 < 12) { character = PlayerT6; }
Pokitto 9:949027352af6 633 }
Pokitto 9:949027352af6 634 else{
Pokitto 9:949027352af6 635 character = PlayerT;
Pokitto 9:949027352af6 636 player.h = 16;
Pokitto 9:949027352af6 637 }
Pokitto 9:949027352af6 638 }
Pokitto 9:949027352af6 639
Pokitto 9:949027352af6 640 else{
Pokitto 9:949027352af6 641 if(gb.frameCount % 6 >= 0 && gb.frameCount % 6 < 3 && walking){
Pokitto 9:949027352af6 642 character = PlayerS1;
Pokitto 9:949027352af6 643 player.h = 8;
Pokitto 9:949027352af6 644 }
Pokitto 9:949027352af6 645 else{
Pokitto 9:949027352af6 646 character = PlayerS;
Pokitto 9:949027352af6 647 player.h = 8;
Pokitto 9:949027352af6 648 }
Pokitto 9:949027352af6 649 }
Pokitto 9:949027352af6 650
Pokitto 9:949027352af6 651 checkCode(code);
Pokitto 9:949027352af6 652
Pokitto 9:949027352af6 653 if(player.vx > 2){
Pokitto 9:949027352af6 654 player.vx = 2;
Pokitto 9:949027352af6 655 }
Pokitto 9:949027352af6 656
Pokitto 9:949027352af6 657 player.x += player.vx;
Pokitto 9:949027352af6 658 if(playerCollide()){//Collision on x-axis
Pokitto 9:949027352af6 659 player.x -= player.vx;
Pokitto 9:949027352af6 660 player.vx = 0;
Pokitto 9:949027352af6 661 }
Pokitto 9:949027352af6 662
Pokitto 9:949027352af6 663 if(player.vy > 1){//Falling
Pokitto 9:949027352af6 664 canJump = false;
Pokitto 9:949027352af6 665 }
Pokitto 9:949027352af6 666 if(canJump && (gb.buttons.timeHeld(BTN_A) > 0 && gb.buttons.timeHeld(BTN_A) < 5)){//Jump
Pokitto 9:949027352af6 667 player.vy -= 1.3;
Pokitto 9:949027352af6 668 if (gb.buttons.timeHeld(BTN_A) < 2){
Pokitto 9:949027352af6 669 gb.sound.playOK();
Pokitto 9:949027352af6 670 }
Pokitto 9:949027352af6 671 }
Pokitto 9:949027352af6 672 player.vy += 0.4;
Pokitto 9:949027352af6 673 if(player.vy >5){
Pokitto 9:949027352af6 674 player.vy = 2;
Pokitto 9:949027352af6 675 }
Pokitto 9:949027352af6 676
Pokitto 9:949027352af6 677
Pokitto 9:949027352af6 678
Pokitto 9:949027352af6 679 if(gb.buttons.released(BTN_A)){//Prevents player from jumping multiple times midair
Pokitto 9:949027352af6 680 canJump = false;
Pokitto 9:949027352af6 681 }
Pokitto 9:949027352af6 682
Pokitto 9:949027352af6 683 player.y += player.vy;
Pokitto 9:949027352af6 684 if(playerCollide()){//collision on y-axis
Pokitto 9:949027352af6 685 if(player.vy > 0){
Pokitto 9:949027352af6 686 canJump = true;
Pokitto 9:949027352af6 687 for(int i = 0; i < player.vy; i++){
Pokitto 9:949027352af6 688 player.y -= 1;
Pokitto 9:949027352af6 689 if(!playerCollide()){
Pokitto 9:949027352af6 690 // We found the last open spot before the _block
Pokitto 9:949027352af6 691 player.vy = 0; // Stop moving
Pokitto 9:949027352af6 692 break; //Quit the loop
Pokitto 9:949027352af6 693 }
Pokitto 9:949027352af6 694 }
Pokitto 9:949027352af6 695 }
Pokitto 9:949027352af6 696 else{
Pokitto 9:949027352af6 697 player.y -= player.vy;
Pokitto 9:949027352af6 698 player.vy /= 2;
Pokitto 9:949027352af6 699 }
Pokitto 9:949027352af6 700 }
Pokitto 9:949027352af6 701
Pokitto 9:949027352af6 702 if(player.y > LCDHEIGHT){//fall to death
Pokitto 9:949027352af6 703 die();
Pokitto 9:949027352af6 704 }
Pokitto 9:949027352af6 705
Pokitto 9:949027352af6 706 if(player.x + 4 - cameraPos > (int)(LCDWIDTH/2) && cameraPos < (64*8)-(LCDWIDTH)){//Player is mid screen but screen isn't leaving the end of the level.
Pokitto 9:949027352af6 707 cameraPos = player.x - LCDWIDTH/2 + 4;
Pokitto 9:949027352af6 708 }
Pokitto 9:949027352af6 709
Pokitto 9:949027352af6 710 if(player.x + 4 - cameraPos < (int)(LCDWIDTH/2) && cameraPos > 0){//Player is mid screen but screen isn't showing "before" the level
Pokitto 9:949027352af6 711 cameraPos = player.x - LCDWIDTH/2 + 4;
Pokitto 9:949027352af6 712 }
Pokitto 9:949027352af6 713 }
Pokitto 9:949027352af6 714
Pokitto 9:949027352af6 715 void drawPlayer(){
Pokitto 9:949027352af6 716 if(player.invincible % 2 != 1){
Pokitto 9:949027352af6 717 if(!player.flip){
Pokitto 9:949027352af6 718 gb.display.drawBitmap(player.x - cameraPos, player.y, character, NOROT, NOFLIP);
Pokitto 9:949027352af6 719 }
Pokitto 9:949027352af6 720 else{
Pokitto 9:949027352af6 721 gb.display.drawBitmap(player.x - cameraPos, player.y, character, NOROT, FLIPH);
Pokitto 9:949027352af6 722 }
Pokitto 9:949027352af6 723 }
Pokitto 9:949027352af6 724 }
Pokitto 9:949027352af6 725
Pokitto 9:949027352af6 726 void getBig(){
Pokitto 9:949027352af6 727 if(!player.big){
Pokitto 9:949027352af6 728 player.big = true;
Pokitto 9:949027352af6 729 player.crouch = true;
Pokitto 9:949027352af6 730 }
Pokitto 9:949027352af6 731 }
Pokitto 9:949027352af6 732
Pokitto 9:949027352af6 733 void getSmall(){
Pokitto 9:949027352af6 734 if(player.invincible <= 0){
Pokitto 9:949027352af6 735 player.invincible = 40;
Pokitto 9:949027352af6 736 if(player.big){
Pokitto 9:949027352af6 737 if(!player.crouch){
Pokitto 9:949027352af6 738 player.y += 8;
Pokitto 9:949027352af6 739 }
Pokitto 9:949027352af6 740 player.big = false;
Pokitto 9:949027352af6 741 }
Pokitto 9:949027352af6 742 else{
Pokitto 9:949027352af6 743 die();
Pokitto 9:949027352af6 744 }
Pokitto 9:949027352af6 745 }
Pokitto 9:949027352af6 746 }
Pokitto 9:949027352af6 747
Pokitto 9:949027352af6 748 void die(){
Pokitto 9:949027352af6 749 if(lives == 0){
Pokitto 9:949027352af6 750 lose();
Pokitto 9:949027352af6 751 }
Pokitto 9:949027352af6 752 else{
Pokitto 9:949027352af6 753 lives --;
Pokitto 9:949027352af6 754 time_b = 130;
Pokitto 9:949027352af6 755 gb.popup(("You died. \1"), 20);
Pokitto 9:949027352af6 756 clearEnts();
Pokitto 9:949027352af6 757 startPlayer();
Pokitto 9:949027352af6 758 cameraPos = 0;
Pokitto 9:949027352af6 759 loadLevel(curLev);
Pokitto 9:949027352af6 760 }
Pokitto 9:949027352af6 761 }
Pokitto 9:949027352af6 762
Pokitto 9:949027352af6 763 boolean playerCollide(){
Pokitto 9:949027352af6 764 collide = false;
Pokitto 9:949027352af6 765 for(int k = 0; k<numEnt; k++){
Pokitto 9:949027352af6 766 if(gb.collideBitmapBitmap(entities[k].x, entities[k].y, entities[k].bitmap, player.x, player.y, character)){
Pokitto 9:949027352af6 767 if(entities[k].bitmap == Mushroom){
Pokitto 9:949027352af6 768 getBig();
Pokitto 9:949027352af6 769 score += 100;
Pokitto 9:949027352af6 770 removeEnt(k);
Pokitto 9:949027352af6 771 }
Pokitto 9:949027352af6 772
Pokitto 9:949027352af6 773 if(entities[k].bitmap == Goomba){
Pokitto 9:949027352af6 774 if(player.vy > 0 && player.y + player.h - 4 < entities[k].y){//Ugly code checking for players feet being above goomba
Pokitto 9:949027352af6 775 removeEnt(k);
Pokitto 9:949027352af6 776 bounce = true;
Pokitto 9:949027352af6 777 }
Pokitto 9:949027352af6 778 else{
Pokitto 9:949027352af6 779 getSmall();
Pokitto 9:949027352af6 780 if(player.invincible <= 0){
Pokitto 9:949027352af6 781 entities[k].vx *= -1;
Pokitto 9:949027352af6 782 }
Pokitto 9:949027352af6 783 }
Pokitto 9:949027352af6 784 }
Pokitto 9:949027352af6 785 }
Pokitto 9:949027352af6 786
Pokitto 9:949027352af6 787 if(entities[k].bitmap != PlayerC && player.invincible <= 0){
Pokitto 9:949027352af6 788 collide = gb.collideBitmapBitmap(player.x, player.y, character, entities[k].x, entities[k].y, entities[k].bitmap);
Pokitto 9:949027352af6 789 }
Pokitto 9:949027352af6 790 }
Pokitto 9:949027352af6 791
Pokitto 9:949027352af6 792 for(int i = 0; i<6; i++){
Pokitto 9:949027352af6 793 for(int j = 0; j<64; j++){
Pokitto 9:949027352af6 794 _block = NULL;
Pokitto 9:949027352af6 795 switch(curLevel[(i)*64+j]){
Pokitto 9:949027352af6 796 case 'G' :
Pokitto 9:949027352af6 797 _block = Ground;
Pokitto 9:949027352af6 798 break;
Pokitto 9:949027352af6 799 case 'B' :
Pokitto 9:949027352af6 800 _block = Brick;
Pokitto 9:949027352af6 801 break;
Pokitto 9:949027352af6 802 case '?' :
Pokitto 9:949027352af6 803 _block = MysteryBlockC;
Pokitto 9:949027352af6 804 break;
Pokitto 9:949027352af6 805 case 'M' :
Pokitto 9:949027352af6 806 _block = MysteryBlockM;
Pokitto 9:949027352af6 807 break;
Pokitto 9:949027352af6 808 case 'I' ://Invisible
Pokitto 9:949027352af6 809 case 'E' :
Pokitto 9:949027352af6 810 _block = Empty;
Pokitto 9:949027352af6 811 break;
Pokitto 9:949027352af6 812 case 'C' :
Pokitto 9:949027352af6 813 _block = Coin;
Pokitto 9:949027352af6 814 break;
Pokitto 9:949027352af6 815 case 'F' :
Pokitto 9:949027352af6 816 _block = Flag;
Pokitto 9:949027352af6 817 break;
Pokitto 9:949027352af6 818 case 'S' :
Pokitto 9:949027352af6 819 _block = Spikes;
Pokitto 9:949027352af6 820 break;
Pokitto 9:949027352af6 821 default:
Pokitto 9:949027352af6 822 break;
Pokitto 9:949027352af6 823 }
Pokitto 9:949027352af6 824
Pokitto 9:949027352af6 825 if(_block != NULL){
Pokitto 9:949027352af6 826 if(gb.collideBitmapBitmap(player.x, player.y, character, j*8, LCDHEIGHT - (8*(6-i)), _block)){
Pokitto 9:949027352af6 827 if(_block == Flag){
Pokitto 9:949027352af6 828 nextLevel();
Pokitto 9:949027352af6 829 }
Pokitto 9:949027352af6 830
Pokitto 9:949027352af6 831 if(player.vy < 0 && player.y > LCDHEIGHT - (8*(5-i)) - 1 && (player.x < (j+1)*8 && player.x + 8 > j*8)){//Checks if under _block
Pokitto 9:949027352af6 832 if(_block == Brick && player.big){
Pokitto 9:949027352af6 833 curLevel[i*64+j] = NULL;
Pokitto 9:949027352af6 834 }
Pokitto 9:949027352af6 835 if(_block == MysteryBlockC){
Pokitto 9:949027352af6 836 curLevel[(i-1)*64+j] = 'C';
Pokitto 9:949027352af6 837 curLevel[i*64+j] = 'E';
Pokitto 9:949027352af6 838 }
Pokitto 9:949027352af6 839 if(_block == MysteryBlockM){
Pokitto 9:949027352af6 840 curLevel[i*64+j] = 'E';
Pokitto 9:949027352af6 841 addEnt(j*8, LCDHEIGHT - (8 * (7-i)), Mushroom);
Pokitto 9:949027352af6 842 }
Pokitto 9:949027352af6 843 }
Pokitto 9:949027352af6 844
Pokitto 9:949027352af6 845 if(_block == Spikes){
Pokitto 9:949027352af6 846 getSmall();
Pokitto 9:949027352af6 847 collide = true;
Pokitto 9:949027352af6 848 }
Pokitto 9:949027352af6 849
Pokitto 9:949027352af6 850 if(_block == Coin){
Pokitto 9:949027352af6 851 score += 100;
Pokitto 9:949027352af6 852 curLevel[i*64+j] = NULL;
Pokitto 9:949027352af6 853 gb.sound.playOK();
Pokitto 9:949027352af6 854 collide = false;
Pokitto 9:949027352af6 855 }
Pokitto 9:949027352af6 856
Pokitto 9:949027352af6 857 else{
Pokitto 9:949027352af6 858 collide = true;
Pokitto 9:949027352af6 859 }
Pokitto 9:949027352af6 860
Pokitto 9:949027352af6 861 }
Pokitto 9:949027352af6 862 }
Pokitto 9:949027352af6 863 }
Pokitto 9:949027352af6 864 }
Pokitto 9:949027352af6 865 if(bounce){
Pokitto 9:949027352af6 866 player.vy = -4;
Pokitto 9:949027352af6 867 bounce = false;
Pokitto 9:949027352af6 868 }
Pokitto 9:949027352af6 869 return collide;
Pokitto 9:949027352af6 870 }
Pokitto 9:949027352af6 871
Pokitto 9:949027352af6 872
Pokitto 9:949027352af6 873
Pokitto 9:949027352af6 874 const byte PlayerT[] PROGMEM = {8,16,B01111110,B11111111,B11100011,B11000000,B11001010,B10001010,B00000000,B00000000,B11111111,B11011011,B11011011,B11111111,B01111110,B01100110,B01100110,B01100110,};
Pokitto 9:949027352af6 875 const byte PlayerT1[] PROGMEM = {8,16,B01111110,B11111111,B11100011,B11000000,B11001010,B10001010,B00000000,B00000000,B11111111,B11011011,B11011011,B11111111,B01111110,B01100011,B01100011,B01100000,};
Pokitto 9:949027352af6 876 const byte PlayerT2[] PROGMEM = {8,16,B01111110,B11111111,B11100011,B11000000,B11001010,B10001010,B00000000,B00000000,B11111111,B11011011,B11011011,B11111111,B01111110,B01100011,B01100011,B01100011,};
Pokitto 9:949027352af6 877 const byte PlayerT3[] PROGMEM = {8,16,B01111110,B11111111,B11100011,B11000000,B11001010,B10001010,B00000000,B00000000,B11111111,B11011011,B11011011,B11111111,B01111110,B01100110,B11000110,B11000110,};
Pokitto 9:949027352af6 878 const byte PlayerT4[] PROGMEM = {8,16,B01111110,B11111111,B11100011,B11000000,B11001010,B10001010,B00000000,B00000000,B11111111,B11011011,B11011011,B11111111,B01111110,B11000110,B11000110,B00000110,};
Pokitto 9:949027352af6 879 const byte PlayerT5[] PROGMEM = {8,16,B01111110,B11111111,B11100011,B11000000,B11001010,B10001010,B00000000,B00000000,B11111111,B11011011,B11011011,B11111111,B01111110,B00110110,B00110110,B00000110,};
Pokitto 9:949027352af6 880 const byte PlayerT6[] PROGMEM = {8,16,B01111110,B11111111,B11100011,B11000000,B11001010,B10001010,B00000000,B00000000,B11111111,B11011011,B11011011,B11111111,B01111110,B01100110,B01100110,B01100000,};
Pokitto 9:949027352af6 881 const byte PlayerS[] PROGMEM = {8,8,B01111110,B01100001,B01101010,B01000000,B11111111,B11011011,B01111110,B01100110,};
Pokitto 9:949027352af6 882 const byte PlayerS1[] PROGMEM = {8,8,B01111110,B01100001,B01101010,B01000000,B11111111,B11011011,B01111110,B00111100,};
Pokitto 9:949027352af6 883 const byte PlayerC[] PROGMEM = {8,8,B01111110,B11000011,B00100100,B10100101,B10000001,B11111111,B01111110,B01100110,};
Pokitto 9:949027352af6 884 const byte Ground[] PROGMEM = {8,8,B11111111,B10001001,B10001001,B10001111,B11001001,B10110001,B10010001,B11111111,};
Pokitto 9:949027352af6 885 const byte Brick[] PROGMEM = {8,8,B11111111,B00010001,B11111111,B01000100,B11111111,B00010001,B11111111,B01000100,};
Pokitto 9:949027352af6 886 const byte Spikes[] PROGMEM = {8,8,B00100010,B00100010,B01010101,B01010101,B10001000,B10101010,B10101010,B11111111,};
Pokitto 9:949027352af6 887 const byte MysteryBlockC[] PROGMEM = {8,8,B11111111,B10011001,B10100101,B10000101,B10001001,B10000001,B10001001,B11111111,};
Pokitto 9:949027352af6 888 const byte MysteryBlockM[] PROGMEM = {8,8,B11111111,B10011001,B10100101,B10000101,B10001001,B10000001,B10001001,B11111111,};
Pokitto 9:949027352af6 889 const byte Coin[] PROGMEM = {8,8,B00011000,B00100100,B01010010,B01010010,B01001010,B01001010,B00100100,B00011000,};
Pokitto 9:949027352af6 890 const byte Empty[] PROGMEM = {8,8,B11111111,B10000001,B10000001,B10000001,B10000001,B10000001,B10000001,B11111111,};
Pokitto 9:949027352af6 891 const byte Flag[] PROGMEM = {8,8,B00111000,B00110110,B00101011,B00110110,B00111000,B00100000,B00100000,B01110000,};
Pokitto 9:949027352af6 892 const byte Mushroom[] PROGMEM = {8,8,B00111100,B01011010,B10100101,B11011011,B10000001,B01011010,B01000010,B00111100,};
Pokitto 9:949027352af6 893 const byte Goomba[] PROGMEM = {8,8,B00111100,B01000010,B10100101,B10100101,B01111110,B01000010,B10111111,B11100011,};
Pokitto 9:949027352af6 894
Pokitto 9:949027352af6 895 const byte Title[] PROGMEM = {64,30,
Pokitto 9:949027352af6 896 B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,
Pokitto 9:949027352af6 897 B00000001,B11000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,
Pokitto 9:949027352af6 898 B00001110,B00111000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,
Pokitto 9:949027352af6 899 B00010100,B00010100,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,
Pokitto 9:949027352af6 900 B00100100,B00010010,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,
Pokitto 9:949027352af6 901 B00101101,B11011010,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,
Pokitto 9:949027352af6 902 B01111010,B00101111,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,
Pokitto 9:949027352af6 903 B01000100,B00010001,B00011000,B11000000,B00000000,B00000000,B00000000,B00000000,
Pokitto 9:949027352af6 904 B01000100,B00010001,B00011000,B11000000,B00000000,B00000000,B00000000,B00000000,
Pokitto 9:949027352af6 905 B10000010,B00100000,B10011000,B11000000,B00000000,B00000010,B00000000,B00000000,
Pokitto 9:949027352af6 906 B10000001,B11000000,B10010101,B01000000,B00000000,B00000010,B00000000,B00000000,
Pokitto 9:949027352af6 907 B10001111,B11110000,B10010101,B01000110,B00101001,B00001000,B01011000,B11110000,
Pokitto 9:949027352af6 908 B11111000,B00011111,B10010101,B01000001,B00110101,B00001010,B01100101,B00001000,
Pokitto 9:949027352af6 909 B00100010,B00100010,B00010010,B01000001,B00110101,B00001010,B01100101,B00001000,
Pokitto 9:949027352af6 910 B00100010,B00100010,B00010000,B01000111,B00100001,B00001010,B01000101,B00001000,
Pokitto 9:949027352af6 911 B00100010,B00100010,B00010000,B01001001,B00100001,B00001010,B01000101,B00001000,
Pokitto 9:949027352af6 912 B00011000,B00001100,B00010000,B01001001,B00100001,B00001010,B01000101,B00001000,
Pokitto 9:949027352af6 913 B00001000,B00001000,B00010000,B01000111,B10100000,B11111010,B01000100,B11110000,
Pokitto 9:949027352af6 914 B00000111,B11110000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,
Pokitto 9:949027352af6 915 B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,
Pokitto 9:949027352af6 916 B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,
Pokitto 9:949027352af6 917 B00000100,B00010000,B01000001,B00000100,B00010000,B01000001,B00000100,B00010000,
Pokitto 9:949027352af6 918 B00000100,B00010000,B01000001,B00000100,B00010000,B01000001,B00000100,B00010000,
Pokitto 9:949027352af6 919 B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,
Pokitto 9:949027352af6 920 B00100000,B10000010,B00001000,B00100000,B10000010,B00001000,B00100000,B10000010,
Pokitto 9:949027352af6 921 B00100000,B10000010,B00001000,B00100000,B10000010,B00001000,B00100000,B10000010,
Pokitto 9:949027352af6 922 B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,
Pokitto 9:949027352af6 923 B00000100,B00010000,B01000001,B00000100,B00010000,B01000001,B00000100,B00010000,
Pokitto 9:949027352af6 924 B00000100,B00010000,B01000001,B00000100,B00010000,B01000001,B00000100,B00010000,
Pokitto 9:949027352af6 925 B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,
Pokitto 9:949027352af6 926 };
Pokitto 9:949027352af6 927
Pokitto 9:949027352af6 928 /*
Pokitto 9:949027352af6 929 SPOILERS AHEAD!!!!! ONLY SCROLL PAST THIS IF YOU WANT THE CODES SPOILED!!!
Pokitto 9:949027352af6 930
Pokitto 9:949027352af6 931
Pokitto 9:949027352af6 932
Pokitto 9:949027352af6 933
Pokitto 9:949027352af6 934
Pokitto 9:949027352af6 935
Pokitto 9:949027352af6 936
Pokitto 9:949027352af6 937
Pokitto 9:949027352af6 938
Pokitto 9:949027352af6 939
Pokitto 9:949027352af6 940
Pokitto 9:949027352af6 941
Pokitto 9:949027352af6 942
Pokitto 9:949027352af6 943
Pokitto 9:949027352af6 944
Pokitto 9:949027352af6 945
Pokitto 9:949027352af6 946
Pokitto 9:949027352af6 947
Pokitto 9:949027352af6 948
Pokitto 9:949027352af6 949
Pokitto 9:949027352af6 950
Pokitto 9:949027352af6 951
Pokitto 9:949027352af6 952
Pokitto 9:949027352af6 953
Pokitto 9:949027352af6 954
Pokitto 9:949027352af6 955
Pokitto 9:949027352af6 956
Pokitto 9:949027352af6 957 */
Pokitto 9:949027352af6 958
Pokitto 9:949027352af6 959 void checkCode(char* code){
Pokitto 9:949027352af6 960 if(strstr(code, "\30\30\31\31\33\32\33\32\26\25\27")){
Pokitto 9:949027352af6 961 lives = 113;
Pokitto 9:949027352af6 962 }
Pokitto 9:949027352af6 963 if(strstr(code, "\50\42\55\42\51\57\57\40\174\137\174")){
Pokitto 9:949027352af6 964 character = Brick;
Pokitto 9:949027352af6 965 player.h = 8;
Pokitto 9:949027352af6 966 }
Pokitto 9:949027352af6 967 if(strstr(code, "\141\152\163\142\61\61\63")){
Pokitto 9:949027352af6 968 score += 10;
Pokitto 9:949027352af6 969 }
Pokitto 9:949027352af6 970 if(strstr(code, "\101\40\143\157\144\145")){
Pokitto 9:949027352af6 971 numLevs = 7;
Pokitto 9:949027352af6 972 }
Pokitto 9:949027352af6 973 if(strstr(code, "\134\50\136\137\136\51\57")){
Pokitto 9:949027352af6 974 player.invincible = 2;
Pokitto 9:949027352af6 975 }
Pokitto 9:949027352af6 976 }
Pokitto 9:949027352af6 977
Pokitto 9:949027352af6 978