New pokittolib with improved volume controls & better button handling

Dependencies:   PokittoLib

Fork of Arcade by Pokitto Community Team

Committer:
Pokitto
Date:
Sun Oct 07 10:36:20 2018 +0000
Revision:
22:25d0247917fc
Parent:
6:7e55f4fd3e4e
Removed compilation errors

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Pokitto 6:7e55f4fd3e4e 1 //#include <iostream>
Pokitto 6:7e55f4fd3e4e 2 #include <string>
Pokitto 6:7e55f4fd3e4e 3 #include <stdlib.h>
Pokitto 0:2d2a3994d55d 4 #include "Pokitto.h"
Pokitto 6:7e55f4fd3e4e 5 #include "PokittoFonts.h"
Pokitto 0:2d2a3994d55d 6
Pokitto 6:7e55f4fd3e4e 7 //create game object
Pokitto 6:7e55f4fd3e4e 8 Pokitto::Core game;
Pokitto 6:7e55f4fd3e4e 9
Pokitto 6:7e55f4fd3e4e 10 //include textures
Pokitto 22:25d0247917fc 11 #include <../textures.h>
Pokitto 0:2d2a3994d55d 12
Pokitto 6:7e55f4fd3e4e 13 //variable declarations
Pokitto 6:7e55f4fd3e4e 14 short gameMode = -2; //-2 = title, -1 = settings, 0 = menu, 1 = pong, 2 = breakout, 3 = snake, 4 = stacker, 5 = columns
Pokitto 22:25d0247917fc 15 int paddleA = 36;
Pokitto 22:25d0247917fc 16 int paddleB = 36;
Pokitto 22:25d0247917fc 17 int paddleBr = 46;
Pokitto 6:7e55f4fd3e4e 18 int paddleBMotion = 0;
Pokitto 6:7e55f4fd3e4e 19 int ballX = 52;
Pokitto 6:7e55f4fd3e4e 20 int ballY = 42;
Pokitto 6:7e55f4fd3e4e 21 float ballSpeed = 1.0f;
Pokitto 6:7e55f4fd3e4e 22 int bricksHit = 0;
Pokitto 6:7e55f4fd3e4e 23 int ballXR;
Pokitto 6:7e55f4fd3e4e 24 int ballYR;
Pokitto 6:7e55f4fd3e4e 25 short ballDX = 1;
Pokitto 6:7e55f4fd3e4e 26 short ballDY = 1;
Pokitto 6:7e55f4fd3e4e 27 int RNG = rand() % 100 + 1;
Pokitto 6:7e55f4fd3e4e 28 int RNGX = rand() % 25 + 1;
Pokitto 6:7e55f4fd3e4e 29 int RNGY = rand() % 18 + 1;
Pokitto 6:7e55f4fd3e4e 30 int difficulty = 70;
Pokitto 6:7e55f4fd3e4e 31 unsigned int scoreA = 0;
Pokitto 6:7e55f4fd3e4e 32 unsigned int scoreB = 0;
Pokitto 6:7e55f4fd3e4e 33 unsigned int scoreBr = 0;
Pokitto 6:7e55f4fd3e4e 34 unsigned short breakoutGrid [13][5]; //0=air, 1=redWide1, 2=redWide2, 3=yellowWide1, 4=yellowWide2, 5=greenWide, 6=cyanWide, 7=blueWide
Pokitto 6:7e55f4fd3e4e 35 bool secondLevel = false;
Pokitto 6:7e55f4fd3e4e 36 unsigned int lives = 3;
Pokitto 6:7e55f4fd3e4e 37 short gameMap [27][22]; //0 = air, -1 = wall, -2 = food, 1 = snake head, 2 = snake body
Pokitto 6:7e55f4fd3e4e 38 short snakeLength = 3;
Pokitto 6:7e55f4fd3e4e 39 short headX = 13;
Pokitto 6:7e55f4fd3e4e 40 short headY = 10;
Pokitto 6:7e55f4fd3e4e 41 short direction = 0; //0 = up, 1 = right, 2 = down, 3 = left
Pokitto 6:7e55f4fd3e4e 42 bool snakeUpdate = false;
Pokitto 6:7e55f4fd3e4e 43 bool foodPlacementSuccess = false;
Pokitto 6:7e55f4fd3e4e 44 short counter = 0;
Pokitto 6:7e55f4fd3e4e 45 bool snakeInitializing = true;
Pokitto 6:7e55f4fd3e4e 46 int breakoutHS = 0;
Pokitto 6:7e55f4fd3e4e 47 int snakeHS = 0;
Pokitto 6:7e55f4fd3e4e 48 unsigned short blockX = 0;
Pokitto 6:7e55f4fd3e4e 49 unsigned short blockSize = 4;
Pokitto 6:7e55f4fd3e4e 50 short blockDir = 1;
Pokitto 6:7e55f4fd3e4e 51 short blockH = 0;
Pokitto 6:7e55f4fd3e4e 52 short oldBlockData [20][2];
Pokitto 6:7e55f4fd3e4e 53 short blockHOffset = 0;
Pokitto 6:7e55f4fd3e4e 54 short blockLoss = 0;
Pokitto 6:7e55f4fd3e4e 55 short blockMove = 0;
Pokitto 6:7e55f4fd3e4e 56 bool stackLost = false;
Pokitto 6:7e55f4fd3e4e 57 int stackerScore = 0;
Pokitto 6:7e55f4fd3e4e 58 int stackerHS = 0;
Pokitto 6:7e55f4fd3e4e 59 int stackerDelay = 3;
Pokitto 6:7e55f4fd3e4e 60 short menuSelection = 1;
Pokitto 6:7e55f4fd3e4e 61 bool grayscale = false;
Pokitto 6:7e55f4fd3e4e 62 short optionSelection = 1;
Pokitto 6:7e55f4fd3e4e 63 bool bsound = true;
Pokitto 6:7e55f4fd3e4e 64 double timeTime = 0.0;
Pokitto 6:7e55f4fd3e4e 65 /*short currentColumn [3];
Pokitto 6:7e55f4fd3e4e 66 short currentColumnDupe [3];
Pokitto 6:7e55f4fd3e4e 67 short nextColumn [3];
Pokitto 6:7e55f4fd3e4e 68 short columnsMap [9][22];*/
Pokitto 6:7e55f4fd3e4e 69 void resetPongValues() {
Pokitto 6:7e55f4fd3e4e 70 ballX = 52;
Pokitto 6:7e55f4fd3e4e 71 ballY = 42;
Pokitto 6:7e55f4fd3e4e 72 paddleBMotion = 0;
Pokitto 6:7e55f4fd3e4e 73 paddleA = 36;
Pokitto 6:7e55f4fd3e4e 74 paddleB = 36;
Pokitto 6:7e55f4fd3e4e 75 ballDX = 1;
Pokitto 6:7e55f4fd3e4e 76 ballDY = 1;
Pokitto 6:7e55f4fd3e4e 77 }
Pokitto 6:7e55f4fd3e4e 78 void pongLogic() {
Pokitto 6:7e55f4fd3e4e 79 //update difficulty
Pokitto 6:7e55f4fd3e4e 80 difficulty = 70 + 2.5*(scoreA - scoreB);
Pokitto 6:7e55f4fd3e4e 81 //input, move paddle 1
Pokitto 6:7e55f4fd3e4e 82 if (game.buttons.repeat(BTN_UP,0) && paddleA > 0) {
Pokitto 6:7e55f4fd3e4e 83 paddleA -= 2;
Pokitto 6:7e55f4fd3e4e 84 }
Pokitto 6:7e55f4fd3e4e 85 if (game.buttons.repeat(BTN_DOWN,0) && paddleA < 66) {
Pokitto 6:7e55f4fd3e4e 86 paddleA += 2;
Pokitto 6:7e55f4fd3e4e 87 }
Pokitto 6:7e55f4fd3e4e 88 //move paddle 2
Pokitto 6:7e55f4fd3e4e 89 if (paddleBMotion == 0) {
Pokitto 6:7e55f4fd3e4e 90 if (ballY < paddleB + 8 && paddleB > 0) {
Pokitto 6:7e55f4fd3e4e 91 if (RNG < difficulty) {
Pokitto 6:7e55f4fd3e4e 92 paddleB -= 1;
Pokitto 6:7e55f4fd3e4e 93 paddleBMotion = -6;
Pokitto 6:7e55f4fd3e4e 94 } else {
Pokitto 6:7e55f4fd3e4e 95 paddleB += 1;
Pokitto 6:7e55f4fd3e4e 96 paddleBMotion = 6;
Pokitto 6:7e55f4fd3e4e 97 }
Pokitto 6:7e55f4fd3e4e 98 }
Pokitto 6:7e55f4fd3e4e 99 if (ballY > paddleB + 8 && paddleB < 66) {
Pokitto 6:7e55f4fd3e4e 100 if (RNG < difficulty) {
Pokitto 6:7e55f4fd3e4e 101 paddleB += 1;
Pokitto 6:7e55f4fd3e4e 102 paddleBMotion = 6;
Pokitto 6:7e55f4fd3e4e 103 } else {
Pokitto 6:7e55f4fd3e4e 104 paddleB -= 1;
Pokitto 6:7e55f4fd3e4e 105 paddleBMotion = -6;
Pokitto 6:7e55f4fd3e4e 106 }
Pokitto 6:7e55f4fd3e4e 107 }
Pokitto 6:7e55f4fd3e4e 108 } else if (paddleBMotion < 0) {
Pokitto 6:7e55f4fd3e4e 109 paddleBMotion++;
Pokitto 6:7e55f4fd3e4e 110 if (paddleB > 0)
Pokitto 6:7e55f4fd3e4e 111 paddleB -= 1;
Pokitto 6:7e55f4fd3e4e 112 } else if (paddleBMotion > 0) {
Pokitto 6:7e55f4fd3e4e 113 paddleBMotion--;
Pokitto 6:7e55f4fd3e4e 114 if (paddleB < 66)
Pokitto 6:7e55f4fd3e4e 115 paddleB += 1;
Pokitto 6:7e55f4fd3e4e 116 }
Pokitto 6:7e55f4fd3e4e 117 //fix paddle locations
Pokitto 6:7e55f4fd3e4e 118 if (paddleA < 0) {
Pokitto 6:7e55f4fd3e4e 119 paddleA = 0;
Pokitto 6:7e55f4fd3e4e 120 }
Pokitto 6:7e55f4fd3e4e 121 if (paddleB < 0) {
Pokitto 6:7e55f4fd3e4e 122 paddleB = 0;
Pokitto 6:7e55f4fd3e4e 123 }
Pokitto 6:7e55f4fd3e4e 124 if (paddleA > 66) {
Pokitto 6:7e55f4fd3e4e 125 paddleA = 66;
Pokitto 6:7e55f4fd3e4e 126 }
Pokitto 6:7e55f4fd3e4e 127 if (paddleB > 66) {
Pokitto 6:7e55f4fd3e4e 128 paddleB = 66;
Pokitto 6:7e55f4fd3e4e 129 }
Pokitto 6:7e55f4fd3e4e 130 //move ball
Pokitto 6:7e55f4fd3e4e 131 ballX += ballDX;
Pokitto 6:7e55f4fd3e4e 132 ballY += ballDY;
Pokitto 6:7e55f4fd3e4e 133 //bounce off walls
Pokitto 6:7e55f4fd3e4e 134 if (ballX <= 0) {scoreB++; resetPongValues(); if (bsound) game.sound.playOK();}
Pokitto 6:7e55f4fd3e4e 135 if (ballX >= 106) {scoreA++; resetPongValues(); if (bsound) game.sound.playOK();}
Pokitto 6:7e55f4fd3e4e 136 if (ballX <= 4 && ballY >= paddleA && ballY <= paddleA + 16) {
Pokitto 6:7e55f4fd3e4e 137 ballDX = 1;
Pokitto 6:7e55f4fd3e4e 138 if (bsound) game.sound.playTick();
Pokitto 6:7e55f4fd3e4e 139 }
Pokitto 6:7e55f4fd3e4e 140 if (ballX >= 102 && ballY >= paddleB && ballY <= paddleB + 16) {
Pokitto 6:7e55f4fd3e4e 141 ballDX = -1;
Pokitto 6:7e55f4fd3e4e 142 if (bsound) game.sound.playTick();
Pokitto 6:7e55f4fd3e4e 143 }
Pokitto 6:7e55f4fd3e4e 144 if (ballY <= 0 || ballY >= 78) {ballDY *= -1; if (bsound) game.sound.playTick();}
Pokitto 6:7e55f4fd3e4e 145 }
Pokitto 6:7e55f4fd3e4e 146 void pongDraw() {
Pokitto 6:7e55f4fd3e4e 147 //line
Pokitto 6:7e55f4fd3e4e 148 game.display.color = 2;
Pokitto 6:7e55f4fd3e4e 149 game.display.drawFastVLine(55,0,82);
Pokitto 6:7e55f4fd3e4e 150 game.display.color = 13;
Pokitto 6:7e55f4fd3e4e 151 game.display.drawFastVLine(56,0,82);
Pokitto 6:7e55f4fd3e4e 152 //paddles & ball
Pokitto 6:7e55f4fd3e4e 153 game.display.drawBitmap(0,paddleA,paddle1);
Pokitto 6:7e55f4fd3e4e 154 game.display.drawBitmap(106,paddleB,paddle1);
Pokitto 6:7e55f4fd3e4e 155 game.display.drawBitmap(ballX,ballY,gray);
Pokitto 6:7e55f4fd3e4e 156 //score
Pokitto 6:7e55f4fd3e4e 157 game.display.color = 2;
Pokitto 6:7e55f4fd3e4e 158 game.display.fillRectangle(0,82,110,6);
Pokitto 6:7e55f4fd3e4e 159 game.display.setFont(font3x5);
Pokitto 6:7e55f4fd3e4e 160 game.display.setCursor(50,83);
Pokitto 6:7e55f4fd3e4e 161 game.display.color = 15;
Pokitto 6:7e55f4fd3e4e 162 game.display.print(scoreA);
Pokitto 6:7e55f4fd3e4e 163 game.display.print("-");
Pokitto 6:7e55f4fd3e4e 164 game.display.print(scoreB);
Pokitto 6:7e55f4fd3e4e 165 }
Pokitto 6:7e55f4fd3e4e 166 void breakoutGridInit() {
Pokitto 6:7e55f4fd3e4e 167 //build basic grid by row
Pokitto 6:7e55f4fd3e4e 168 for (int x=0;x<13;x++) {
Pokitto 6:7e55f4fd3e4e 169 breakoutGrid[x][0] = 1;
Pokitto 6:7e55f4fd3e4e 170 }
Pokitto 6:7e55f4fd3e4e 171 for (int x=0;x<13;x++) {
Pokitto 6:7e55f4fd3e4e 172 breakoutGrid[x][1] = 3;
Pokitto 6:7e55f4fd3e4e 173 }
Pokitto 6:7e55f4fd3e4e 174 for (int x=0;x<13;x++) {
Pokitto 6:7e55f4fd3e4e 175 breakoutGrid[x][2] = 5;
Pokitto 6:7e55f4fd3e4e 176 }
Pokitto 6:7e55f4fd3e4e 177 for (int x=0;x<13;x++) {
Pokitto 6:7e55f4fd3e4e 178 breakoutGrid[x][3] = 6;
Pokitto 6:7e55f4fd3e4e 179 }
Pokitto 6:7e55f4fd3e4e 180 for (int x=0;x<13;x++) {
Pokitto 6:7e55f4fd3e4e 181 breakoutGrid[x][4] = 7;
Pokitto 6:7e55f4fd3e4e 182 }
Pokitto 6:7e55f4fd3e4e 183 }
Pokitto 6:7e55f4fd3e4e 184 void breakoutLogic() {
Pokitto 6:7e55f4fd3e4e 185 //input
Pokitto 6:7e55f4fd3e4e 186 if (game.buttons.repeat(BTN_LEFT,0) && paddleBr > 0) {
Pokitto 6:7e55f4fd3e4e 187 paddleBr -= 2;
Pokitto 6:7e55f4fd3e4e 188 }
Pokitto 6:7e55f4fd3e4e 189 if (game.buttons.repeat(BTN_RIGHT,0) && paddleBr < 94) {
Pokitto 6:7e55f4fd3e4e 190 paddleBr += 2;
Pokitto 6:7e55f4fd3e4e 191 }
Pokitto 6:7e55f4fd3e4e 192 //fix paddle position
Pokitto 6:7e55f4fd3e4e 193 if (paddleBr < 0) paddleBr = 0;
Pokitto 6:7e55f4fd3e4e 194 if (paddleBr > 94) paddleBr = 94;
Pokitto 6:7e55f4fd3e4e 195 //move ball, bounce off walls & paddle
Pokitto 6:7e55f4fd3e4e 196 ballX += ballDX * ballSpeed;
Pokitto 6:7e55f4fd3e4e 197 ballY += ballDY * ballSpeed;
Pokitto 6:7e55f4fd3e4e 198 if (ballX <= 0 || ballX >= 106) {ballDX *= -1; if (bsound) game.sound.playTick();}
Pokitto 6:7e55f4fd3e4e 199 if (ballY <= 0) {ballDY = 1; if (bsound) game.sound.playTick();}
Pokitto 6:7e55f4fd3e4e 200 if (ballY >= 78) {lives--; ballX = 52; ballY = 42; ballDX = 1; ballDY = 1; paddleBr = 46; if (bsound) game.sound.playCancel();}
Pokitto 6:7e55f4fd3e4e 201 if (ballY >= 74 && ballX >= paddleBr && ballX <= paddleBr + 16) {ballDY = -1; if (bsound) game.sound.playTick();}
Pokitto 6:7e55f4fd3e4e 202 //hiscore
Pokitto 6:7e55f4fd3e4e 203 if (scoreBr > breakoutHS) {
Pokitto 6:7e55f4fd3e4e 204 breakoutHS = scoreBr;
Pokitto 6:7e55f4fd3e4e 205 }
Pokitto 6:7e55f4fd3e4e 206 //reset game if lives out
Pokitto 6:7e55f4fd3e4e 207 if (lives == 0) {
Pokitto 6:7e55f4fd3e4e 208 scoreBr = 0; ballX = 52; ballY = 42; ballDX = 1; ballDY = 1; paddleBr = 46; lives = 3;
Pokitto 6:7e55f4fd3e4e 209 breakoutGridInit();
Pokitto 6:7e55f4fd3e4e 210 }
Pokitto 6:7e55f4fd3e4e 211 //check for brick collision
Pokitto 6:7e55f4fd3e4e 212 if (ballY <= 20) {
Pokitto 6:7e55f4fd3e4e 213 ballYR = ballY / 4;
Pokitto 6:7e55f4fd3e4e 214 if (ballYR % 2 == 0) {
Pokitto 6:7e55f4fd3e4e 215 ballXR = ballX / 8;
Pokitto 6:7e55f4fd3e4e 216 } else {
Pokitto 6:7e55f4fd3e4e 217 ballXR = (ballX - 4) / 8;
Pokitto 6:7e55f4fd3e4e 218 }
Pokitto 6:7e55f4fd3e4e 219 if (ballYR <= 4) {
Pokitto 6:7e55f4fd3e4e 220 switch (breakoutGrid[ballXR][ballYR]) {
Pokitto 6:7e55f4fd3e4e 221 case 0 :
Pokitto 6:7e55f4fd3e4e 222 break;
Pokitto 6:7e55f4fd3e4e 223 case 1 :
Pokitto 6:7e55f4fd3e4e 224 breakoutGrid[ballXR][ballYR] = 2;
Pokitto 6:7e55f4fd3e4e 225 ballDY *= -1;
Pokitto 6:7e55f4fd3e4e 226 scoreBr += 4;
Pokitto 6:7e55f4fd3e4e 227 bricksHit++;
Pokitto 6:7e55f4fd3e4e 228 if (ballSpeed <= 1.75f) {
Pokitto 6:7e55f4fd3e4e 229 ballSpeed = 2.0f;
Pokitto 6:7e55f4fd3e4e 230 if (bsound) game.sound.playOK();
Pokitto 6:7e55f4fd3e4e 231 } else {
Pokitto 6:7e55f4fd3e4e 232 if (bsound) game.sound.playTick();
Pokitto 6:7e55f4fd3e4e 233 }
Pokitto 6:7e55f4fd3e4e 234 break;
Pokitto 6:7e55f4fd3e4e 235 case 2 :
Pokitto 6:7e55f4fd3e4e 236 breakoutGrid[ballXR][ballYR] = 0;
Pokitto 6:7e55f4fd3e4e 237 ballDY *= -1;
Pokitto 6:7e55f4fd3e4e 238 scoreBr += 4;
Pokitto 6:7e55f4fd3e4e 239 bricksHit++;
Pokitto 6:7e55f4fd3e4e 240 if (bsound) game.sound.playTick();
Pokitto 6:7e55f4fd3e4e 241 break;
Pokitto 6:7e55f4fd3e4e 242 case 3 :
Pokitto 6:7e55f4fd3e4e 243 breakoutGrid[ballXR][ballYR] = 4;
Pokitto 6:7e55f4fd3e4e 244 ballDY *= -1;
Pokitto 6:7e55f4fd3e4e 245 scoreBr += 3;
Pokitto 6:7e55f4fd3e4e 246 bricksHit++;
Pokitto 6:7e55f4fd3e4e 247 if (ballSpeed <= 1.5f) {
Pokitto 6:7e55f4fd3e4e 248 ballSpeed = 1.75f;
Pokitto 6:7e55f4fd3e4e 249 if (bsound) game.sound.playOK();
Pokitto 6:7e55f4fd3e4e 250 } else {
Pokitto 6:7e55f4fd3e4e 251 if (bsound) game.sound.playTick();
Pokitto 6:7e55f4fd3e4e 252 }
Pokitto 6:7e55f4fd3e4e 253 break;
Pokitto 6:7e55f4fd3e4e 254 case 4 :
Pokitto 6:7e55f4fd3e4e 255 breakoutGrid[ballXR][ballYR] = 0;
Pokitto 6:7e55f4fd3e4e 256 ballDY *= -1;
Pokitto 6:7e55f4fd3e4e 257 scoreBr += 3;
Pokitto 6:7e55f4fd3e4e 258 bricksHit++;
Pokitto 6:7e55f4fd3e4e 259 if (bsound) game.sound.playTick();
Pokitto 6:7e55f4fd3e4e 260 break;
Pokitto 6:7e55f4fd3e4e 261 case 5 :
Pokitto 6:7e55f4fd3e4e 262 breakoutGrid[ballXR][ballYR] = 0;
Pokitto 6:7e55f4fd3e4e 263 ballDY *= -1;
Pokitto 6:7e55f4fd3e4e 264 scoreBr += 3;
Pokitto 6:7e55f4fd3e4e 265 bricksHit++;
Pokitto 6:7e55f4fd3e4e 266 if (bsound) game.sound.playTick();
Pokitto 6:7e55f4fd3e4e 267 break;
Pokitto 6:7e55f4fd3e4e 268 case 6 :
Pokitto 6:7e55f4fd3e4e 269 breakoutGrid[ballXR][ballYR] = 0;
Pokitto 6:7e55f4fd3e4e 270 ballDY *= -1;
Pokitto 6:7e55f4fd3e4e 271 scoreBr += 2;
Pokitto 6:7e55f4fd3e4e 272 bricksHit++;
Pokitto 6:7e55f4fd3e4e 273 if (bsound) game.sound.playTick();
Pokitto 6:7e55f4fd3e4e 274 break;
Pokitto 6:7e55f4fd3e4e 275 case 7 :
Pokitto 6:7e55f4fd3e4e 276 breakoutGrid[ballXR][ballYR] = 0;
Pokitto 6:7e55f4fd3e4e 277 ballDY *= -1;
Pokitto 6:7e55f4fd3e4e 278 scoreBr += 1;
Pokitto 6:7e55f4fd3e4e 279 bricksHit++;
Pokitto 6:7e55f4fd3e4e 280 if (bsound) game.sound.playTick();
Pokitto 6:7e55f4fd3e4e 281 break;
Pokitto 6:7e55f4fd3e4e 282 }
Pokitto 6:7e55f4fd3e4e 283 }
Pokitto 6:7e55f4fd3e4e 284 }
Pokitto 6:7e55f4fd3e4e 285 //second level
Pokitto 6:7e55f4fd3e4e 286 if (scoreBr == 260 && !secondLevel) {
Pokitto 6:7e55f4fd3e4e 287 secondLevel = true;
Pokitto 6:7e55f4fd3e4e 288 paddleBr = 46;
Pokitto 6:7e55f4fd3e4e 289 ballX = 52;
Pokitto 6:7e55f4fd3e4e 290 ballY = 42;
Pokitto 6:7e55f4fd3e4e 291 ballDX = 1;
Pokitto 6:7e55f4fd3e4e 292 ballDY = 1;
Pokitto 6:7e55f4fd3e4e 293 breakoutGridInit();
Pokitto 6:7e55f4fd3e4e 294 }
Pokitto 6:7e55f4fd3e4e 295 //change speeds
Pokitto 6:7e55f4fd3e4e 296 if (ballSpeed == 1.0f && bricksHit == 4) {
Pokitto 6:7e55f4fd3e4e 297 ballSpeed = 1.25f;
Pokitto 6:7e55f4fd3e4e 298 if (bsound) game.sound.playOK();
Pokitto 6:7e55f4fd3e4e 299 } else if (ballSpeed <= 1.25f && bricksHit == 12) {
Pokitto 22:25d0247917fc 300 ballSpeed = 1.5f;
Pokitto 6:7e55f4fd3e4e 301 if (bsound) game.sound.playOK();
Pokitto 6:7e55f4fd3e4e 302 }
Pokitto 6:7e55f4fd3e4e 303 }
Pokitto 6:7e55f4fd3e4e 304 void breakoutDraw() {
Pokitto 6:7e55f4fd3e4e 305 //draw bricks
Pokitto 6:7e55f4fd3e4e 306 for(int y=0;y<5;y++) {
Pokitto 6:7e55f4fd3e4e 307 for(int x=0;x<13;x++) {
Pokitto 6:7e55f4fd3e4e 308 switch (breakoutGrid[x][y]) {
Pokitto 6:7e55f4fd3e4e 309 case 0 :
Pokitto 6:7e55f4fd3e4e 310 break;
Pokitto 6:7e55f4fd3e4e 311 case 1 :
Pokitto 6:7e55f4fd3e4e 312 if (y%2==0) {
Pokitto 6:7e55f4fd3e4e 313 game.display.drawBitmap(x*8 + 1,y*4,redWide1);
Pokitto 6:7e55f4fd3e4e 314 } else {
Pokitto 6:7e55f4fd3e4e 315 game.display.drawBitmap(x*8 + 5,y*4,redWide1);
Pokitto 6:7e55f4fd3e4e 316 }
Pokitto 6:7e55f4fd3e4e 317 break;
Pokitto 6:7e55f4fd3e4e 318 case 2 :
Pokitto 6:7e55f4fd3e4e 319 if (y%2==0) {
Pokitto 6:7e55f4fd3e4e 320 game.display.drawBitmap(x*8 + 1,y*4,redWide2);
Pokitto 6:7e55f4fd3e4e 321 } else {
Pokitto 6:7e55f4fd3e4e 322 game.display.drawBitmap(x*8 + 5,y*4,redWide2);
Pokitto 6:7e55f4fd3e4e 323 }
Pokitto 6:7e55f4fd3e4e 324 break;
Pokitto 6:7e55f4fd3e4e 325 case 3 :
Pokitto 6:7e55f4fd3e4e 326 if (y%2==0) {
Pokitto 6:7e55f4fd3e4e 327 game.display.drawBitmap(x*8 + 1,y*4,yellowWide1);
Pokitto 6:7e55f4fd3e4e 328 } else {
Pokitto 6:7e55f4fd3e4e 329 game.display.drawBitmap(x*8 + 5,y*4,yellowWide1);
Pokitto 6:7e55f4fd3e4e 330 }
Pokitto 6:7e55f4fd3e4e 331 break;
Pokitto 6:7e55f4fd3e4e 332 case 4 :
Pokitto 6:7e55f4fd3e4e 333 if (y%2==0) {
Pokitto 6:7e55f4fd3e4e 334 game.display.drawBitmap(x*8 + 1,y*4,yellowWide2);
Pokitto 6:7e55f4fd3e4e 335 } else {
Pokitto 6:7e55f4fd3e4e 336 game.display.drawBitmap(x*8 + 5,y*4,yellowWide2);
Pokitto 6:7e55f4fd3e4e 337 }
Pokitto 6:7e55f4fd3e4e 338 break;
Pokitto 6:7e55f4fd3e4e 339 case 5 :
Pokitto 6:7e55f4fd3e4e 340 if (y%2==0) {
Pokitto 6:7e55f4fd3e4e 341 game.display.drawBitmap(x*8 + 1,y*4,greenWide);
Pokitto 6:7e55f4fd3e4e 342 } else {
Pokitto 6:7e55f4fd3e4e 343 game.display.drawBitmap(x*8 + 5,y*4,greenWide);
Pokitto 6:7e55f4fd3e4e 344 }
Pokitto 6:7e55f4fd3e4e 345 break;
Pokitto 6:7e55f4fd3e4e 346 case 6 :
Pokitto 6:7e55f4fd3e4e 347 if (y%2==0) {
Pokitto 6:7e55f4fd3e4e 348 game.display.drawBitmap(x*8 + 1,y*4,cyanWide);
Pokitto 6:7e55f4fd3e4e 349 } else {
Pokitto 6:7e55f4fd3e4e 350 game.display.drawBitmap(x*8 + 5,y*4,cyanWide);
Pokitto 6:7e55f4fd3e4e 351 }
Pokitto 6:7e55f4fd3e4e 352 break;
Pokitto 6:7e55f4fd3e4e 353 case 7 :
Pokitto 6:7e55f4fd3e4e 354 if (y%2==0) {
Pokitto 6:7e55f4fd3e4e 355 game.display.drawBitmap(x*8 + 1,y*4,blueWide);
Pokitto 6:7e55f4fd3e4e 356 } else {
Pokitto 6:7e55f4fd3e4e 357 game.display.drawBitmap(x*8 + 5,y*4,blueWide);
Pokitto 6:7e55f4fd3e4e 358 }
Pokitto 6:7e55f4fd3e4e 359 break;
Pokitto 6:7e55f4fd3e4e 360 }
Pokitto 6:7e55f4fd3e4e 361 }
Pokitto 6:7e55f4fd3e4e 362 }
Pokitto 6:7e55f4fd3e4e 363 //draw paddle & ball
Pokitto 6:7e55f4fd3e4e 364 game.display.drawBitmap(paddleBr,78,paddle2);
Pokitto 6:7e55f4fd3e4e 365 game.display.drawBitmap(ballX,ballY,gray);
Pokitto 6:7e55f4fd3e4e 366 //draw score
Pokitto 6:7e55f4fd3e4e 367 game.display.color = 2;
Pokitto 6:7e55f4fd3e4e 368 game.display.fillRectangle(0,82,110,6);
Pokitto 6:7e55f4fd3e4e 369 game.display.setFont(font3x5);
Pokitto 6:7e55f4fd3e4e 370 game.display.setCursor(1,83);
Pokitto 6:7e55f4fd3e4e 371 game.display.color = 15;
Pokitto 6:7e55f4fd3e4e 372 game.display.print("SCORE ");
Pokitto 6:7e55f4fd3e4e 373 game.display.print(scoreBr);
Pokitto 6:7e55f4fd3e4e 374 game.display.setCursor(37,83);
Pokitto 6:7e55f4fd3e4e 375 game.display.color = 15;
Pokitto 6:7e55f4fd3e4e 376 game.display.print("HISCORE ");
Pokitto 6:7e55f4fd3e4e 377 game.display.print(breakoutHS);
Pokitto 6:7e55f4fd3e4e 378 //draw HP
Pokitto 6:7e55f4fd3e4e 379 game.display.drawBitmap(97,84,gray);
Pokitto 6:7e55f4fd3e4e 380 game.display.setCursor(102,83);
Pokitto 6:7e55f4fd3e4e 381 game.display.print("x");
Pokitto 6:7e55f4fd3e4e 382 game.display.print(lives);
Pokitto 6:7e55f4fd3e4e 383 }
Pokitto 6:7e55f4fd3e4e 384 void snakePlaceFood() {
Pokitto 6:7e55f4fd3e4e 385 foodPlacementSuccess = false;
Pokitto 6:7e55f4fd3e4e 386 while (!foodPlacementSuccess) {
Pokitto 6:7e55f4fd3e4e 387 RNGX = rand() % 25 + 1;
Pokitto 6:7e55f4fd3e4e 388 RNGY = rand() % 18 + 1;
Pokitto 6:7e55f4fd3e4e 389 if (gameMap [RNGX][RNGY] == 0) {
Pokitto 6:7e55f4fd3e4e 390 gameMap [RNGX][RNGY] = -2;
Pokitto 6:7e55f4fd3e4e 391 foodPlacementSuccess = true;
Pokitto 6:7e55f4fd3e4e 392 }
Pokitto 6:7e55f4fd3e4e 393 }
Pokitto 6:7e55f4fd3e4e 394 }
Pokitto 6:7e55f4fd3e4e 395 void snakeGridInit() {
Pokitto 6:7e55f4fd3e4e 396 for (int y=0;y<20;y++) {
Pokitto 6:7e55f4fd3e4e 397 for (int x=0;x<27;x++) {
Pokitto 6:7e55f4fd3e4e 398 gameMap [x][y] = 0;
Pokitto 6:7e55f4fd3e4e 399 }
Pokitto 6:7e55f4fd3e4e 400 }
Pokitto 6:7e55f4fd3e4e 401 for (int y=0;y<22;y++) {
Pokitto 6:7e55f4fd3e4e 402 gameMap [0][y] = -1;
Pokitto 6:7e55f4fd3e4e 403 gameMap [26][y] = -1;
Pokitto 6:7e55f4fd3e4e 404 }
Pokitto 6:7e55f4fd3e4e 405 for (int x=0;x<27;x++) {
Pokitto 6:7e55f4fd3e4e 406 gameMap [x][0] = -1;
Pokitto 6:7e55f4fd3e4e 407 gameMap [x][19] = -1;
Pokitto 6:7e55f4fd3e4e 408 }
Pokitto 6:7e55f4fd3e4e 409 for (int i=0;i<snakeLength;i++) {
Pokitto 6:7e55f4fd3e4e 410 gameMap [13][10 + i] = 1 + i;
Pokitto 6:7e55f4fd3e4e 411 }
Pokitto 6:7e55f4fd3e4e 412 snakePlaceFood();
Pokitto 6:7e55f4fd3e4e 413 snakeInitializing = false;
Pokitto 6:7e55f4fd3e4e 414 }
Pokitto 6:7e55f4fd3e4e 415 void snakeInput() {
Pokitto 6:7e55f4fd3e4e 416 //input
Pokitto 6:7e55f4fd3e4e 417 if (game.buttons.held(BTN_UP,1) && direction != 2) {
Pokitto 6:7e55f4fd3e4e 418 direction = 0;
Pokitto 6:7e55f4fd3e4e 419 }
Pokitto 6:7e55f4fd3e4e 420 if (game.buttons.held(BTN_DOWN,1) && direction != 0) {
Pokitto 6:7e55f4fd3e4e 421 direction = 2;
Pokitto 6:7e55f4fd3e4e 422 }
Pokitto 6:7e55f4fd3e4e 423 if (game.buttons.held(BTN_RIGHT,1) && direction != 3) {
Pokitto 6:7e55f4fd3e4e 424 direction = 1;
Pokitto 6:7e55f4fd3e4e 425 }
Pokitto 6:7e55f4fd3e4e 426 if (game.buttons.held(BTN_LEFT,1) && direction != 1) {
Pokitto 6:7e55f4fd3e4e 427 direction = 3;
Pokitto 6:7e55f4fd3e4e 428 }
Pokitto 6:7e55f4fd3e4e 429 }
Pokitto 6:7e55f4fd3e4e 430 void snakeLogic() {
Pokitto 6:7e55f4fd3e4e 431 if (counter == 0) {
Pokitto 6:7e55f4fd3e4e 432 counter = 2;
Pokitto 6:7e55f4fd3e4e 433 //move
Pokitto 6:7e55f4fd3e4e 434 snakeUpdate = false;
Pokitto 6:7e55f4fd3e4e 435 gameMap [headX][headY] = 2;
Pokitto 6:7e55f4fd3e4e 436 if (direction == 0 && gameMap [headX][headY - 1] != -1 && gameMap [headX][headY - 1] < 2) {
Pokitto 6:7e55f4fd3e4e 437 headY--;
Pokitto 6:7e55f4fd3e4e 438 snakeUpdate = true;
Pokitto 6:7e55f4fd3e4e 439 } else if (direction == 1 && gameMap [headX + 1][headY] != -1 && gameMap [headX + 1][headY] < 2) {
Pokitto 6:7e55f4fd3e4e 440 headX++;
Pokitto 6:7e55f4fd3e4e 441 snakeUpdate = true;
Pokitto 6:7e55f4fd3e4e 442 } else if (direction == 2 && gameMap [headX][headY + 1] != -1 && gameMap [headX][headY + 1] < 2) {
Pokitto 6:7e55f4fd3e4e 443 headY++;
Pokitto 6:7e55f4fd3e4e 444 snakeUpdate = true;
Pokitto 6:7e55f4fd3e4e 445 } else if (direction == 3 && gameMap [headX - 1][headY] != -1 && gameMap [headX - 1][headY] < 2) {
Pokitto 6:7e55f4fd3e4e 446 headX--;
Pokitto 6:7e55f4fd3e4e 447 snakeUpdate = true;
Pokitto 6:7e55f4fd3e4e 448 }
Pokitto 6:7e55f4fd3e4e 449 //collision w/ food
Pokitto 6:7e55f4fd3e4e 450 if (gameMap [headX][headY] == -2) {
Pokitto 6:7e55f4fd3e4e 451 snakeLength += 1;
Pokitto 6:7e55f4fd3e4e 452 snakePlaceFood();
Pokitto 6:7e55f4fd3e4e 453 if (bsound) game.sound.playOK();
Pokitto 6:7e55f4fd3e4e 454 }
Pokitto 6:7e55f4fd3e4e 455 gameMap [headX][headY] = 1;
Pokitto 6:7e55f4fd3e4e 456 //destroy old snake bricks
Pokitto 6:7e55f4fd3e4e 457 for (int y=0;y<20;y++) {
Pokitto 6:7e55f4fd3e4e 458 for (int x=0;x<27;x++) {
Pokitto 6:7e55f4fd3e4e 459 if (snakeUpdate) {
Pokitto 6:7e55f4fd3e4e 460 if (gameMap [x][y] >= snakeLength + 1) {
Pokitto 6:7e55f4fd3e4e 461 gameMap [x][y] = 0;
Pokitto 6:7e55f4fd3e4e 462 } else if (gameMap [x][y] >= 2) {
Pokitto 6:7e55f4fd3e4e 463 gameMap [x][y] += 1;
Pokitto 6:7e55f4fd3e4e 464 }
Pokitto 6:7e55f4fd3e4e 465 }
Pokitto 6:7e55f4fd3e4e 466 if (gameMap [x][y] == 1 && !(x == headX && y == headY)) {
Pokitto 6:7e55f4fd3e4e 467 gameMap [x][y] = 0;
Pokitto 6:7e55f4fd3e4e 468 }
Pokitto 6:7e55f4fd3e4e 469 }
Pokitto 6:7e55f4fd3e4e 470 }
Pokitto 6:7e55f4fd3e4e 471 if (snakeLength - 3 > snakeHS) {
Pokitto 6:7e55f4fd3e4e 472 snakeHS = snakeLength - 3;
Pokitto 6:7e55f4fd3e4e 473 }
Pokitto 6:7e55f4fd3e4e 474 //death
Pokitto 6:7e55f4fd3e4e 475 if (!snakeUpdate) {
Pokitto 6:7e55f4fd3e4e 476 snakeLength = 3;
Pokitto 6:7e55f4fd3e4e 477 headX = 13;
Pokitto 6:7e55f4fd3e4e 478 headY = 10;
Pokitto 6:7e55f4fd3e4e 479 snakeInitializing = true;
Pokitto 22:25d0247917fc 480 snakeGridInit();
Pokitto 6:7e55f4fd3e4e 481 if (bsound) game.sound.playCancel();
Pokitto 6:7e55f4fd3e4e 482 }
Pokitto 6:7e55f4fd3e4e 483 } else {
Pokitto 6:7e55f4fd3e4e 484 counter--;
Pokitto 6:7e55f4fd3e4e 485 }
Pokitto 6:7e55f4fd3e4e 486 }
Pokitto 6:7e55f4fd3e4e 487 void snakeDraw() {
Pokitto 6:7e55f4fd3e4e 488 //draw BG
Pokitto 6:7e55f4fd3e4e 489 game.display.color = 14;
Pokitto 6:7e55f4fd3e4e 490 game.display.fillRectangle(4,4,100,72);
Pokitto 6:7e55f4fd3e4e 491 //draw map
Pokitto 6:7e55f4fd3e4e 492 for (int y=0;y<20;y++) {
Pokitto 6:7e55f4fd3e4e 493 for (int x=0;x<27;x++) {
Pokitto 6:7e55f4fd3e4e 494 switch (gameMap[x][y]) {
Pokitto 6:7e55f4fd3e4e 495 case -2 :
Pokitto 6:7e55f4fd3e4e 496 game.display.drawBitmap(x*4,y*4,pink);
Pokitto 6:7e55f4fd3e4e 497 break;
Pokitto 6:7e55f4fd3e4e 498 case -1 :
Pokitto 6:7e55f4fd3e4e 499 game.display.drawBitmap(x*4,y*4,red);
Pokitto 6:7e55f4fd3e4e 500 break;
Pokitto 6:7e55f4fd3e4e 501 case 0 :
Pokitto 6:7e55f4fd3e4e 502 //game.display.drawBitmap(x*4,y*4,yellow);
Pokitto 6:7e55f4fd3e4e 503 break;
Pokitto 6:7e55f4fd3e4e 504 case 1 :
Pokitto 6:7e55f4fd3e4e 505 game.display.drawBitmap(x*4,y*4,cyan);
Pokitto 6:7e55f4fd3e4e 506 break;
Pokitto 6:7e55f4fd3e4e 507 default :
Pokitto 6:7e55f4fd3e4e 508 if (gameMap[x][y] % 2 == 1) {
Pokitto 6:7e55f4fd3e4e 509 game.display.drawBitmap(x*4,y*4,blue);
Pokitto 6:7e55f4fd3e4e 510 } else {
Pokitto 6:7e55f4fd3e4e 511 game.display.drawBitmap(x*4,y*4,green);
Pokitto 6:7e55f4fd3e4e 512 }
Pokitto 6:7e55f4fd3e4e 513 break;
Pokitto 6:7e55f4fd3e4e 514 }
Pokitto 6:7e55f4fd3e4e 515 }
Pokitto 6:7e55f4fd3e4e 516
Pokitto 6:7e55f4fd3e4e 517 }
Pokitto 6:7e55f4fd3e4e 518 //draw score
Pokitto 6:7e55f4fd3e4e 519 game.display.color = 2;
Pokitto 6:7e55f4fd3e4e 520 game.display.fillRectangle(0,80,110,8);
Pokitto 6:7e55f4fd3e4e 521 game.display.setFont(font3x5);
Pokitto 6:7e55f4fd3e4e 522 game.display.setCursor(1,82);
Pokitto 6:7e55f4fd3e4e 523 game.display.color = 15;
Pokitto 6:7e55f4fd3e4e 524 game.display.print("SCORE ");
Pokitto 6:7e55f4fd3e4e 525 game.display.print(snakeLength - 3);
Pokitto 6:7e55f4fd3e4e 526 game.display.setCursor(65,82);
Pokitto 6:7e55f4fd3e4e 527 game.display.color = 15;
Pokitto 6:7e55f4fd3e4e 528 game.display.print("HISCORE ");
Pokitto 6:7e55f4fd3e4e 529 game.display.print(snakeHS);
Pokitto 6:7e55f4fd3e4e 530 }
Pokitto 6:7e55f4fd3e4e 531 void stackerDataInit() {
Pokitto 6:7e55f4fd3e4e 532 //initialize data list
Pokitto 6:7e55f4fd3e4e 533 for (int y=0;y<2;y++) {
Pokitto 6:7e55f4fd3e4e 534 for (int x=0;x<20;x++) {
Pokitto 6:7e55f4fd3e4e 535 oldBlockData[x][y] = 0;
Pokitto 6:7e55f4fd3e4e 536 }
Pokitto 6:7e55f4fd3e4e 537 }
Pokitto 6:7e55f4fd3e4e 538 }
Pokitto 6:7e55f4fd3e4e 539 void stackerInput() {
Pokitto 6:7e55f4fd3e4e 540 if (game.buttons.held(BTN_A,1)) {
Pokitto 6:7e55f4fd3e4e 541 if (bsound) game.sound.playTick();
Pokitto 6:7e55f4fd3e4e 542 if (blockH >= 0) {
Pokitto 6:7e55f4fd3e4e 543 //place old blocks
Pokitto 6:7e55f4fd3e4e 544 oldBlockData[blockH - blockHOffset][0] = blockX;
Pokitto 6:7e55f4fd3e4e 545 oldBlockData[blockH - blockHOffset][1] = blockSize;
Pokitto 6:7e55f4fd3e4e 546 blockH += 1;
Pokitto 6:7e55f4fd3e4e 547 if (blockH > 1) {
Pokitto 6:7e55f4fd3e4e 548 stackLost = false;
Pokitto 6:7e55f4fd3e4e 549 //basic block reduction algorithm
Pokitto 6:7e55f4fd3e4e 550 switch (blockX - oldBlockData[blockH - blockHOffset - 2][0]) {
Pokitto 6:7e55f4fd3e4e 551 case -3 :
Pokitto 6:7e55f4fd3e4e 552 blockLoss = 3;
Pokitto 6:7e55f4fd3e4e 553 blockMove = 3;
Pokitto 6:7e55f4fd3e4e 554 break;
Pokitto 6:7e55f4fd3e4e 555 case -2 :
Pokitto 6:7e55f4fd3e4e 556 blockLoss = 2;
Pokitto 6:7e55f4fd3e4e 557 blockMove = 2;
Pokitto 6:7e55f4fd3e4e 558 break;
Pokitto 6:7e55f4fd3e4e 559 case -1 :
Pokitto 6:7e55f4fd3e4e 560 blockLoss = 1;
Pokitto 6:7e55f4fd3e4e 561 blockMove = 1;
Pokitto 6:7e55f4fd3e4e 562 break;
Pokitto 6:7e55f4fd3e4e 563 case 0 :
Pokitto 6:7e55f4fd3e4e 564 blockLoss = 0;
Pokitto 6:7e55f4fd3e4e 565 blockMove = 0;
Pokitto 6:7e55f4fd3e4e 566 break;
Pokitto 6:7e55f4fd3e4e 567 case 1 :
Pokitto 6:7e55f4fd3e4e 568 blockLoss = 1;
Pokitto 6:7e55f4fd3e4e 569 blockMove = 0;
Pokitto 6:7e55f4fd3e4e 570 break;
Pokitto 6:7e55f4fd3e4e 571 case 2 :
Pokitto 6:7e55f4fd3e4e 572 blockLoss = 2;
Pokitto 6:7e55f4fd3e4e 573 blockMove = 0;
Pokitto 6:7e55f4fd3e4e 574 break;
Pokitto 6:7e55f4fd3e4e 575 case 3 :
Pokitto 6:7e55f4fd3e4e 576 blockLoss = 3;
Pokitto 6:7e55f4fd3e4e 577 blockMove = 0;
Pokitto 6:7e55f4fd3e4e 578 break;
Pokitto 6:7e55f4fd3e4e 579 default :
Pokitto 6:7e55f4fd3e4e 580 blockLoss = 4;
Pokitto 6:7e55f4fd3e4e 581 stackLost = true;
Pokitto 6:7e55f4fd3e4e 582
Pokitto 6:7e55f4fd3e4e 583 }
Pokitto 6:7e55f4fd3e4e 584 //score
Pokitto 6:7e55f4fd3e4e 585 stackerScore += (4-blockLoss);
Pokitto 6:7e55f4fd3e4e 586 //block reduction in action!
Pokitto 6:7e55f4fd3e4e 587 if (!stackLost) {
Pokitto 6:7e55f4fd3e4e 588 blockSize -= blockLoss;
Pokitto 6:7e55f4fd3e4e 589 blockX += blockMove;
Pokitto 6:7e55f4fd3e4e 590 oldBlockData[blockH - blockHOffset - 1][1] -= blockLoss;
Pokitto 6:7e55f4fd3e4e 591 oldBlockData[blockH - blockHOffset - 1][0] += blockMove;
Pokitto 6:7e55f4fd3e4e 592 }
Pokitto 6:7e55f4fd3e4e 593 } else {
Pokitto 6:7e55f4fd3e4e 594 stackerScore += 4;
Pokitto 6:7e55f4fd3e4e 595 }
Pokitto 6:7e55f4fd3e4e 596 //scroll through blocks
Pokitto 6:7e55f4fd3e4e 597 if (blockH >= 13) {
Pokitto 6:7e55f4fd3e4e 598 blockHOffset += 1;
Pokitto 6:7e55f4fd3e4e 599 for (int y=0;y<15;y++) {
Pokitto 6:7e55f4fd3e4e 600 oldBlockData[y][0] = oldBlockData[y+1][0];
Pokitto 6:7e55f4fd3e4e 601 oldBlockData[y][1] = oldBlockData[y+1][1];
Pokitto 6:7e55f4fd3e4e 602 }
Pokitto 6:7e55f4fd3e4e 603 }
Pokitto 6:7e55f4fd3e4e 604 }
Pokitto 6:7e55f4fd3e4e 605 }
Pokitto 6:7e55f4fd3e4e 606 }
Pokitto 6:7e55f4fd3e4e 607 void stackerLogic() {
Pokitto 6:7e55f4fd3e4e 608 if (counter == 0) {
Pokitto 6:7e55f4fd3e4e 609 counter = stackerDelay;
Pokitto 6:7e55f4fd3e4e 610 //loss
Pokitto 6:7e55f4fd3e4e 611 if (stackLost || blockSize <= 0) {
Pokitto 6:7e55f4fd3e4e 612 if (bsound) game.sound.playCancel();
Pokitto 6:7e55f4fd3e4e 613 stackerDataInit();
Pokitto 6:7e55f4fd3e4e 614 blockSize = 4;
Pokitto 6:7e55f4fd3e4e 615 blockDir = 1;
Pokitto 6:7e55f4fd3e4e 616 blockH = 0;
Pokitto 6:7e55f4fd3e4e 617 blockX = 0;
Pokitto 6:7e55f4fd3e4e 618 blockHOffset = 0;
Pokitto 6:7e55f4fd3e4e 619 stackerScore = 0;
Pokitto 6:7e55f4fd3e4e 620 stackLost = false;
Pokitto 6:7e55f4fd3e4e 621 }
Pokitto 6:7e55f4fd3e4e 622 //move blocks
Pokitto 6:7e55f4fd3e4e 623 blockX += blockDir;
Pokitto 6:7e55f4fd3e4e 624 if (blockX == 0) {
Pokitto 6:7e55f4fd3e4e 625 blockDir = 1;
Pokitto 6:7e55f4fd3e4e 626 } else if (blockX == 27 - blockSize) {
Pokitto 6:7e55f4fd3e4e 627 blockDir = -1;
Pokitto 6:7e55f4fd3e4e 628 }
Pokitto 6:7e55f4fd3e4e 629 //hiscore
Pokitto 6:7e55f4fd3e4e 630 if (stackerScore > stackerHS) {
Pokitto 6:7e55f4fd3e4e 631 stackerHS = stackerScore;
Pokitto 6:7e55f4fd3e4e 632 }
Pokitto 6:7e55f4fd3e4e 633 //speed up
Pokitto 6:7e55f4fd3e4e 634 if (blockH >= 15) {
Pokitto 6:7e55f4fd3e4e 635 if (bsound && stackerDelay == 1) game.sound.playOK();
Pokitto 6:7e55f4fd3e4e 636 stackerDelay = 0;
Pokitto 6:7e55f4fd3e4e 637 } else if (blockH >= 10) {
Pokitto 6:7e55f4fd3e4e 638 if (bsound && stackerDelay == 2) game.sound.playOK();
Pokitto 6:7e55f4fd3e4e 639 stackerDelay = 1;
Pokitto 6:7e55f4fd3e4e 640 } else if (blockH >= 5) {
Pokitto 6:7e55f4fd3e4e 641 if (bsound && stackerDelay == 3) game.sound.playOK();
Pokitto 6:7e55f4fd3e4e 642 stackerDelay = 2;
Pokitto 6:7e55f4fd3e4e 643 } else {
Pokitto 6:7e55f4fd3e4e 644 stackerDelay = 3;
Pokitto 6:7e55f4fd3e4e 645 }
Pokitto 6:7e55f4fd3e4e 646 } else {
Pokitto 6:7e55f4fd3e4e 647 counter--;
Pokitto 6:7e55f4fd3e4e 648 }
Pokitto 6:7e55f4fd3e4e 649 }
Pokitto 6:7e55f4fd3e4e 650 void stackerDraw() {
Pokitto 6:7e55f4fd3e4e 651 //draw old blocks
Pokitto 6:7e55f4fd3e4e 652 for (int indx=0;indx<22;indx++) {
Pokitto 6:7e55f4fd3e4e 653 for (int a=0;a<oldBlockData[indx][1];a++) {
Pokitto 6:7e55f4fd3e4e 654 switch ((blockHOffset + indx) % 6) {
Pokitto 6:7e55f4fd3e4e 655 case 0 :
Pokitto 6:7e55f4fd3e4e 656 game.display.drawBitmap((oldBlockData[indx][0] + a) * 4,80 - (indx + 1) * 4,red);
Pokitto 6:7e55f4fd3e4e 657 break;
Pokitto 6:7e55f4fd3e4e 658 case 1 :
Pokitto 6:7e55f4fd3e4e 659 game.display.drawBitmap((oldBlockData[indx][0] + a) * 4,80 - (indx + 1) * 4,yellow);
Pokitto 6:7e55f4fd3e4e 660 break;
Pokitto 6:7e55f4fd3e4e 661 case 2 :
Pokitto 6:7e55f4fd3e4e 662 game.display.drawBitmap((oldBlockData[indx][0] + a) * 4,80 - (indx + 1) * 4,green);
Pokitto 6:7e55f4fd3e4e 663 break;
Pokitto 6:7e55f4fd3e4e 664 case 3 :
Pokitto 6:7e55f4fd3e4e 665 game.display.drawBitmap((oldBlockData[indx][0] + a) * 4,80 - (indx + 1) * 4,cyan);
Pokitto 6:7e55f4fd3e4e 666 break;
Pokitto 6:7e55f4fd3e4e 667 case 4 :
Pokitto 6:7e55f4fd3e4e 668 game.display.drawBitmap((oldBlockData[indx][0] + a) * 4,80 - (indx + 1) * 4,blue);
Pokitto 6:7e55f4fd3e4e 669 break;
Pokitto 6:7e55f4fd3e4e 670 case 5 :
Pokitto 6:7e55f4fd3e4e 671 game.display.drawBitmap((oldBlockData[indx][0] + a) * 4,80 - (indx + 1) * 4,pink);
Pokitto 6:7e55f4fd3e4e 672 break;
Pokitto 6:7e55f4fd3e4e 673 }
Pokitto 6:7e55f4fd3e4e 674
Pokitto 6:7e55f4fd3e4e 675 }
Pokitto 6:7e55f4fd3e4e 676 }
Pokitto 6:7e55f4fd3e4e 677 //draw current blocks
Pokitto 6:7e55f4fd3e4e 678 for (int a=0;a<blockSize;a++) {
Pokitto 6:7e55f4fd3e4e 679 switch (blockH % 6) {
Pokitto 6:7e55f4fd3e4e 680 case 0 :
Pokitto 6:7e55f4fd3e4e 681 game.display.drawBitmap((blockX + a) * 4,80 - ((blockH - blockHOffset) + 1) * 4,red);
Pokitto 6:7e55f4fd3e4e 682 break;
Pokitto 6:7e55f4fd3e4e 683 case 1 :
Pokitto 6:7e55f4fd3e4e 684 game.display.drawBitmap((blockX + a) * 4,80 - ((blockH - blockHOffset) + 1) * 4,yellow);
Pokitto 6:7e55f4fd3e4e 685 break;
Pokitto 6:7e55f4fd3e4e 686 case 2 :
Pokitto 6:7e55f4fd3e4e 687 game.display.drawBitmap((blockX + a) * 4,80 - ((blockH - blockHOffset) + 1) * 4,green);
Pokitto 6:7e55f4fd3e4e 688 break;
Pokitto 6:7e55f4fd3e4e 689 case 3 :
Pokitto 6:7e55f4fd3e4e 690 game.display.drawBitmap((blockX + a) * 4,80 - ((blockH - blockHOffset) + 1) * 4,cyan);
Pokitto 6:7e55f4fd3e4e 691 break;
Pokitto 6:7e55f4fd3e4e 692 case 4 :
Pokitto 6:7e55f4fd3e4e 693 game.display.drawBitmap((blockX + a) * 4,80 - ((blockH - blockHOffset) + 1) * 4,blue);
Pokitto 6:7e55f4fd3e4e 694 break;
Pokitto 6:7e55f4fd3e4e 695 case 5 :
Pokitto 6:7e55f4fd3e4e 696 game.display.drawBitmap((blockX + a) * 4,80 - ((blockH - blockHOffset) + 1) * 4,pink);
Pokitto 6:7e55f4fd3e4e 697 break;
Pokitto 6:7e55f4fd3e4e 698 }
Pokitto 6:7e55f4fd3e4e 699
Pokitto 6:7e55f4fd3e4e 700 }
Pokitto 6:7e55f4fd3e4e 701 //score
Pokitto 6:7e55f4fd3e4e 702 game.display.color = 2;
Pokitto 6:7e55f4fd3e4e 703 game.display.fillRectangle(0,80,110,8);
Pokitto 6:7e55f4fd3e4e 704 game.display.setFont(font3x5);
Pokitto 6:7e55f4fd3e4e 705 game.display.setCursor(1,82);
Pokitto 6:7e55f4fd3e4e 706 game.display.color = 15;
Pokitto 6:7e55f4fd3e4e 707 game.display.print("SCORE ");
Pokitto 6:7e55f4fd3e4e 708 game.display.print(stackerScore);
Pokitto 6:7e55f4fd3e4e 709 game.display.setCursor(65,82);
Pokitto 6:7e55f4fd3e4e 710 game.display.color = 15;
Pokitto 6:7e55f4fd3e4e 711 game.display.print("HISCORE ");
Pokitto 6:7e55f4fd3e4e 712 game.display.print(stackerHS);
Pokitto 6:7e55f4fd3e4e 713 }
Pokitto 6:7e55f4fd3e4e 714 void menuLogic() {
Pokitto 6:7e55f4fd3e4e 715 if (game.buttons.held(BTN_RIGHT,1)) {
Pokitto 6:7e55f4fd3e4e 716 menuSelection++;
Pokitto 6:7e55f4fd3e4e 717 if (bsound) game.sound.playTick();
Pokitto 6:7e55f4fd3e4e 718 if (menuSelection == 5) {
Pokitto 6:7e55f4fd3e4e 719 menuSelection = 1;
Pokitto 6:7e55f4fd3e4e 720 }
Pokitto 6:7e55f4fd3e4e 721 }
Pokitto 6:7e55f4fd3e4e 722 if (game.buttons.held(BTN_LEFT,1)) {
Pokitto 6:7e55f4fd3e4e 723 menuSelection--;
Pokitto 6:7e55f4fd3e4e 724 if (bsound) game.sound.playTick();
Pokitto 6:7e55f4fd3e4e 725 if (menuSelection == 0) {
Pokitto 6:7e55f4fd3e4e 726 menuSelection = 4;
Pokitto 6:7e55f4fd3e4e 727 }
Pokitto 6:7e55f4fd3e4e 728 }
Pokitto 6:7e55f4fd3e4e 729 if (game.buttons.held(BTN_A,1)) {
Pokitto 6:7e55f4fd3e4e 730 if (bsound) game.sound.playOK();
Pokitto 6:7e55f4fd3e4e 731 switch (menuSelection) {
Pokitto 6:7e55f4fd3e4e 732 case 1 :
Pokitto 6:7e55f4fd3e4e 733 scoreA = 0;
Pokitto 6:7e55f4fd3e4e 734 scoreB = 0;
Pokitto 6:7e55f4fd3e4e 735 resetPongValues();
Pokitto 6:7e55f4fd3e4e 736 gameMode = 1;
Pokitto 6:7e55f4fd3e4e 737 break;
Pokitto 6:7e55f4fd3e4e 738 case 2 :
Pokitto 6:7e55f4fd3e4e 739 scoreBr = 0;
Pokitto 6:7e55f4fd3e4e 740 secondLevel = false;
Pokitto 6:7e55f4fd3e4e 741 lives = 3;
Pokitto 6:7e55f4fd3e4e 742 resetPongValues();
Pokitto 6:7e55f4fd3e4e 743 ballSpeed = 1.0f;
Pokitto 6:7e55f4fd3e4e 744 breakoutGridInit();
Pokitto 6:7e55f4fd3e4e 745 gameMode = 2;
Pokitto 6:7e55f4fd3e4e 746 break;
Pokitto 6:7e55f4fd3e4e 747 case 3 :
Pokitto 6:7e55f4fd3e4e 748 snakeLength = 3;
Pokitto 6:7e55f4fd3e4e 749 headX = 13;
Pokitto 6:7e55f4fd3e4e 750 headY = 10;
Pokitto 6:7e55f4fd3e4e 751 direction = 0;
Pokitto 6:7e55f4fd3e4e 752 snakeUpdate = false;
Pokitto 6:7e55f4fd3e4e 753 foodPlacementSuccess = false;
Pokitto 6:7e55f4fd3e4e 754 snakeInitializing = true;
Pokitto 6:7e55f4fd3e4e 755 snakeGridInit();
Pokitto 6:7e55f4fd3e4e 756 gameMode = 3;
Pokitto 6:7e55f4fd3e4e 757 break;
Pokitto 6:7e55f4fd3e4e 758 case 4 :
Pokitto 6:7e55f4fd3e4e 759 blockX = 0;
Pokitto 6:7e55f4fd3e4e 760 blockSize = 4;
Pokitto 6:7e55f4fd3e4e 761 blockDir = 1;
Pokitto 6:7e55f4fd3e4e 762 blockH = 0;
Pokitto 6:7e55f4fd3e4e 763 blockHOffset = 0;
Pokitto 6:7e55f4fd3e4e 764 blockLoss = 0;
Pokitto 6:7e55f4fd3e4e 765 blockMove = 0;
Pokitto 6:7e55f4fd3e4e 766 stackLost = false;
Pokitto 6:7e55f4fd3e4e 767 stackerScore = 0;
Pokitto 6:7e55f4fd3e4e 768 stackerDelay = 3;
Pokitto 6:7e55f4fd3e4e 769 stackerDataInit();
Pokitto 6:7e55f4fd3e4e 770 gameMode = 4;
Pokitto 6:7e55f4fd3e4e 771 break;
Pokitto 6:7e55f4fd3e4e 772 }
Pokitto 6:7e55f4fd3e4e 773 }
Pokitto 6:7e55f4fd3e4e 774 if (game.buttons.held(BTN_B,1)) {
Pokitto 6:7e55f4fd3e4e 775 gameMode = -1;
Pokitto 6:7e55f4fd3e4e 776 }
Pokitto 6:7e55f4fd3e4e 777 }
Pokitto 6:7e55f4fd3e4e 778 void menuDraw() {
Pokitto 6:7e55f4fd3e4e 779 game.display.drawBitmap(30,10,logo);
Pokitto 6:7e55f4fd3e4e 780 switch (menuSelection) {
Pokitto 6:7e55f4fd3e4e 781 case 1 :
Pokitto 6:7e55f4fd3e4e 782 game.display.drawBitmap(28,30,pongSS);
Pokitto 6:7e55f4fd3e4e 783 game.display.color = 15;
Pokitto 6:7e55f4fd3e4e 784 game.display.setCursor(40,70);
Pokitto 6:7e55f4fd3e4e 785 game.display.setFont(font3x5);
Pokitto 6:7e55f4fd3e4e 786 game.display.print("Pong \n");
Pokitto 6:7e55f4fd3e4e 787 break;
Pokitto 6:7e55f4fd3e4e 788 case 2 :
Pokitto 6:7e55f4fd3e4e 789 game.display.drawBitmap(28,30,breakoutSS);
Pokitto 6:7e55f4fd3e4e 790 game.display.color = 15;
Pokitto 6:7e55f4fd3e4e 791 game.display.setCursor(40,70);
Pokitto 6:7e55f4fd3e4e 792 game.display.setFont(font3x5);
Pokitto 6:7e55f4fd3e4e 793 game.display.print("Breakout \n");
Pokitto 6:7e55f4fd3e4e 794 break;
Pokitto 6:7e55f4fd3e4e 795 case 3 :
Pokitto 6:7e55f4fd3e4e 796 game.display.drawBitmap(28,30,snakeSS);
Pokitto 6:7e55f4fd3e4e 797 game.display.color = 15;
Pokitto 6:7e55f4fd3e4e 798 game.display.setCursor(40,70);
Pokitto 6:7e55f4fd3e4e 799 game.display.setFont(font3x5);
Pokitto 6:7e55f4fd3e4e 800 game.display.print("Snake \n");
Pokitto 6:7e55f4fd3e4e 801 break;
Pokitto 6:7e55f4fd3e4e 802 case 4 :
Pokitto 6:7e55f4fd3e4e 803 game.display.drawBitmap(28,30,stackerSS);
Pokitto 6:7e55f4fd3e4e 804 game.display.color = 15;
Pokitto 6:7e55f4fd3e4e 805 game.display.setCursor(40,70);
Pokitto 6:7e55f4fd3e4e 806 game.display.setFont(font3x5);
Pokitto 6:7e55f4fd3e4e 807 game.display.print("Stacker \n");
Pokitto 6:7e55f4fd3e4e 808 break;
Pokitto 6:7e55f4fd3e4e 809 }
Pokitto 6:7e55f4fd3e4e 810 game.display.print("A: Play \n");
Pokitto 6:7e55f4fd3e4e 811 game.display.print("B: Settings \n");
Pokitto 6:7e55f4fd3e4e 812
Pokitto 6:7e55f4fd3e4e 813 }
Pokitto 6:7e55f4fd3e4e 814 void optionsLogic() {
Pokitto 6:7e55f4fd3e4e 815 if (game.buttons.held(BTN_UP,1)) {
Pokitto 6:7e55f4fd3e4e 816 optionSelection--;
Pokitto 6:7e55f4fd3e4e 817 if (bsound) game.sound.playTick();
Pokitto 6:7e55f4fd3e4e 818 if (optionSelection == 0) {
Pokitto 6:7e55f4fd3e4e 819 optionSelection = 3;
Pokitto 6:7e55f4fd3e4e 820 }
Pokitto 6:7e55f4fd3e4e 821 }
Pokitto 6:7e55f4fd3e4e 822 if (game.buttons.held(BTN_DOWN,1)) {
Pokitto 6:7e55f4fd3e4e 823 optionSelection++;
Pokitto 6:7e55f4fd3e4e 824 if (bsound) game.sound.playTick();
Pokitto 6:7e55f4fd3e4e 825 if (optionSelection == 4) {
Pokitto 6:7e55f4fd3e4e 826 optionSelection = 1;
Pokitto 6:7e55f4fd3e4e 827 }
Pokitto 6:7e55f4fd3e4e 828 }
Pokitto 6:7e55f4fd3e4e 829 if (game.buttons.held(BTN_A,1)) {
Pokitto 6:7e55f4fd3e4e 830 if (bsound) game.sound.playOK();
Pokitto 6:7e55f4fd3e4e 831 switch (optionSelection) {
Pokitto 6:7e55f4fd3e4e 832 case 1 :
Pokitto 6:7e55f4fd3e4e 833 if (grayscale) {
Pokitto 6:7e55f4fd3e4e 834 grayscale = false;
Pokitto 6:7e55f4fd3e4e 835 game.display.load565Palette(color_pal);
Pokitto 6:7e55f4fd3e4e 836 } else {
Pokitto 6:7e55f4fd3e4e 837 grayscale = true;
Pokitto 6:7e55f4fd3e4e 838 game.display.load565Palette(grayscale_pal);
Pokitto 6:7e55f4fd3e4e 839 }
Pokitto 6:7e55f4fd3e4e 840 break;
Pokitto 6:7e55f4fd3e4e 841 case 2 :
Pokitto 6:7e55f4fd3e4e 842 bsound = !bsound;
Pokitto 6:7e55f4fd3e4e 843 break;
Pokitto 6:7e55f4fd3e4e 844 case 3 :
Pokitto 6:7e55f4fd3e4e 845 gameMode = 0;
Pokitto 6:7e55f4fd3e4e 846 break;
Pokitto 6:7e55f4fd3e4e 847 }
Pokitto 6:7e55f4fd3e4e 848 }
Pokitto 6:7e55f4fd3e4e 849 }
Pokitto 6:7e55f4fd3e4e 850 void optionsDraw() {
Pokitto 6:7e55f4fd3e4e 851 game.display.setCursor(0,30);
Pokitto 6:7e55f4fd3e4e 852 game.display.setFont(font5x7);
Pokitto 6:7e55f4fd3e4e 853 game.display.color = 15;
Pokitto 6:7e55f4fd3e4e 854 game.display.print("OPTIONS \n");
Pokitto 6:7e55f4fd3e4e 855 game.display.setFont(font3x5);
Pokitto 6:7e55f4fd3e4e 856 if (optionSelection == 1) {
Pokitto 6:7e55f4fd3e4e 857 if (grayscale) {
Pokitto 6:7e55f4fd3e4e 858 game.display.color = 2;
Pokitto 6:7e55f4fd3e4e 859 } else {
Pokitto 6:7e55f4fd3e4e 860 game.display.color = 11;
Pokitto 6:7e55f4fd3e4e 861 }
Pokitto 6:7e55f4fd3e4e 862 } else {
Pokitto 6:7e55f4fd3e4e 863 game.display.color = 15;
Pokitto 6:7e55f4fd3e4e 864 }
Pokitto 6:7e55f4fd3e4e 865 if (grayscale) {
Pokitto 6:7e55f4fd3e4e 866 game.display.print("GRAYSCALE \n");
Pokitto 6:7e55f4fd3e4e 867 } else {
Pokitto 6:7e55f4fd3e4e 868 game.display.print("COLOR \n");
Pokitto 6:7e55f4fd3e4e 869 }
Pokitto 6:7e55f4fd3e4e 870 if (optionSelection == 2) {
Pokitto 6:7e55f4fd3e4e 871 if (grayscale) {
Pokitto 6:7e55f4fd3e4e 872 game.display.color = 2;
Pokitto 6:7e55f4fd3e4e 873 } else {
Pokitto 6:7e55f4fd3e4e 874 game.display.color = 11;
Pokitto 6:7e55f4fd3e4e 875 }
Pokitto 6:7e55f4fd3e4e 876 } else {
Pokitto 6:7e55f4fd3e4e 877 game.display.color = 15;
Pokitto 6:7e55f4fd3e4e 878 }
Pokitto 6:7e55f4fd3e4e 879 if (bsound) {
Pokitto 6:7e55f4fd3e4e 880 game.display.print("SOUND \n");
Pokitto 6:7e55f4fd3e4e 881 } else {
Pokitto 6:7e55f4fd3e4e 882 game.display.print("MUTE \n");
Pokitto 6:7e55f4fd3e4e 883 }
Pokitto 6:7e55f4fd3e4e 884 if (optionSelection == 3) {
Pokitto 6:7e55f4fd3e4e 885 if (grayscale) {
Pokitto 6:7e55f4fd3e4e 886 game.display.color = 2;
Pokitto 6:7e55f4fd3e4e 887 } else {
Pokitto 6:7e55f4fd3e4e 888 game.display.color = 11;
Pokitto 6:7e55f4fd3e4e 889 }
Pokitto 6:7e55f4fd3e4e 890 } else {
Pokitto 6:7e55f4fd3e4e 891 game.display.color = 15;
Pokitto 6:7e55f4fd3e4e 892 }
Pokitto 6:7e55f4fd3e4e 893 game.display.print("BACK TO MENU \n");
Pokitto 6:7e55f4fd3e4e 894 }
Pokitto 6:7e55f4fd3e4e 895 void gameTitle() {
Pokitto 6:7e55f4fd3e4e 896 timeTime++;
Pokitto 6:7e55f4fd3e4e 897 game.display.drawBitmap(30,25+5*sin(timeTime/15),logo);
Pokitto 6:7e55f4fd3e4e 898 game.display.color = 15;
Pokitto 6:7e55f4fd3e4e 899 game.display.setCursor(25,45+5*sin(timeTime/15));
Pokitto 6:7e55f4fd3e4e 900 game.display.setFont(font3x5);
Pokitto 6:7e55f4fd3e4e 901 game.display.print("Press A to begin");
Pokitto 6:7e55f4fd3e4e 902 if (game.buttons.held(BTN_A,1)) {
Pokitto 6:7e55f4fd3e4e 903 gameMode = 0;
Pokitto 6:7e55f4fd3e4e 904 if (bsound) game.sound.playOK();
Pokitto 6:7e55f4fd3e4e 905 }
Pokitto 6:7e55f4fd3e4e 906 }
Pokitto 6:7e55f4fd3e4e 907 int main() {
Pokitto 6:7e55f4fd3e4e 908 //initialization
Pokitto 6:7e55f4fd3e4e 909 game.begin();
Pokitto 6:7e55f4fd3e4e 910 game.display.load565Palette(color_pal);
Pokitto 6:7e55f4fd3e4e 911 game.display.width = 110;
Pokitto 6:7e55f4fd3e4e 912 game.display.height = 88;
Pokitto 6:7e55f4fd3e4e 913 breakoutGridInit();
Pokitto 6:7e55f4fd3e4e 914 snakeGridInit();
Pokitto 6:7e55f4fd3e4e 915 stackerDataInit();
Pokitto 6:7e55f4fd3e4e 916 game.sound.playMusicStream("MENU.SND");
Pokitto 6:7e55f4fd3e4e 917 //game.sound.playMusicStream("Menu.snd");
Pokitto 6:7e55f4fd3e4e 918 // columnsGridInit();
Pokitto 6:7e55f4fd3e4e 919 //main game loop
Pokitto 6:7e55f4fd3e4e 920 while (game.isRunning) {
Pokitto 6:7e55f4fd3e4e 921 if (game.update()) {
Pokitto 6:7e55f4fd3e4e 922 //update RNG
Pokitto 6:7e55f4fd3e4e 923 RNG = rand() % 100 + 1;
Pokitto 6:7e55f4fd3e4e 924 switch (gameMode) {
Pokitto 6:7e55f4fd3e4e 925 case -2 :
Pokitto 6:7e55f4fd3e4e 926 //Title
Pokitto 6:7e55f4fd3e4e 927 gameTitle();
Pokitto 6:7e55f4fd3e4e 928 break;
Pokitto 6:7e55f4fd3e4e 929 case -1 :
Pokitto 6:7e55f4fd3e4e 930 //Options
Pokitto 6:7e55f4fd3e4e 931 optionsLogic();
Pokitto 6:7e55f4fd3e4e 932 optionsDraw();
Pokitto 6:7e55f4fd3e4e 933 break;
Pokitto 6:7e55f4fd3e4e 934 case 0 :
Pokitto 6:7e55f4fd3e4e 935 //Menu
Pokitto 6:7e55f4fd3e4e 936 menuLogic();
Pokitto 6:7e55f4fd3e4e 937 menuDraw();
Pokitto 6:7e55f4fd3e4e 938 break;
Pokitto 6:7e55f4fd3e4e 939 case 1 :
Pokitto 6:7e55f4fd3e4e 940 //Pong
Pokitto 6:7e55f4fd3e4e 941 pongLogic();
Pokitto 6:7e55f4fd3e4e 942 pongDraw();
Pokitto 6:7e55f4fd3e4e 943 break;
Pokitto 6:7e55f4fd3e4e 944 case 2 :
Pokitto 6:7e55f4fd3e4e 945 //Breakout
Pokitto 6:7e55f4fd3e4e 946 breakoutLogic();
Pokitto 6:7e55f4fd3e4e 947 breakoutDraw();
Pokitto 6:7e55f4fd3e4e 948 break;
Pokitto 6:7e55f4fd3e4e 949 case 3 :
Pokitto 6:7e55f4fd3e4e 950 //Snake
Pokitto 6:7e55f4fd3e4e 951 snakeInput();
Pokitto 6:7e55f4fd3e4e 952 snakeLogic();
Pokitto 6:7e55f4fd3e4e 953 snakeDraw();
Pokitto 6:7e55f4fd3e4e 954 break;
Pokitto 6:7e55f4fd3e4e 955 case 4 :
Pokitto 6:7e55f4fd3e4e 956 //Stacker
Pokitto 6:7e55f4fd3e4e 957 stackerInput();
Pokitto 6:7e55f4fd3e4e 958 stackerLogic();
Pokitto 6:7e55f4fd3e4e 959 stackerDraw();
Pokitto 6:7e55f4fd3e4e 960 break;
Pokitto 6:7e55f4fd3e4e 961 case 5 :
Pokitto 6:7e55f4fd3e4e 962 //Columns
Pokitto 6:7e55f4fd3e4e 963 // columnsLogic();
Pokitto 6:7e55f4fd3e4e 964 // columnsDraw();
Pokitto 6:7e55f4fd3e4e 965 break;
Pokitto 6:7e55f4fd3e4e 966 }
Pokitto 6:7e55f4fd3e4e 967 if (game.buttons.held(BTN_C,1)) {
Pokitto 6:7e55f4fd3e4e 968 if (gameMode > 0) {
Pokitto 6:7e55f4fd3e4e 969 game.sound.playCancel();
Pokitto 6:7e55f4fd3e4e 970 gameMode = 0;
Pokitto 6:7e55f4fd3e4e 971 }
Pokitto 6:7e55f4fd3e4e 972 }
Pokitto 6:7e55f4fd3e4e 973 }
Pokitto 6:7e55f4fd3e4e 974 }
Pokitto 6:7e55f4fd3e4e 975 }