Finished V1

Dependencies:   mbed wave_player 4DGL-uLCD-SE MMA8452

Committer:
trich9
Date:
Sun Nov 24 03:22:35 2019 +0000
Revision:
5:2fb023cdc666
Parent:
4:2297a714936f
finished V1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
rconnorlawson 0:35660d7952f7 1 // Project includes
rconnorlawson 0:35660d7952f7 2 #include "globals.h"
rconnorlawson 0:35660d7952f7 3 #include "hardware.h"
rconnorlawson 0:35660d7952f7 4 #include "map.h"
rconnorlawson 0:35660d7952f7 5 #include "graphics.h"
rconnorlawson 0:35660d7952f7 6 #include "speech.h"
rconnorlawson 0:35660d7952f7 7
trich9 5:2fb023cdc666 8
rconnorlawson 0:35660d7952f7 9 // Functions in this file
rconnorlawson 0:35660d7952f7 10 int get_action (GameInputs inputs);
rconnorlawson 0:35660d7952f7 11 int update_game (int action);
rconnorlawson 0:35660d7952f7 12 void draw_game (int init);
rconnorlawson 0:35660d7952f7 13 void init_main_map ();
rconnorlawson 0:35660d7952f7 14 int main ();
rconnorlawson 0:35660d7952f7 15
trich9 4:2297a714936f 16
trich9 4:2297a714936f 17 //MYCODE
trich9 4:2297a714936f 18 GameInputs gInputs;
trich9 4:2297a714936f 19 int action;
trich9 4:2297a714936f 20 int gUpdate;
trich9 4:2297a714936f 21 int omnipotent;
trich9 5:2fb023cdc666 22 int hasSonar;
trich9 4:2297a714936f 23
trich9 4:2297a714936f 24 int dialogueNumNPC = 0;
trich9 5:2fb023cdc666 25 int dialogueNumPris = 0;
trich9 4:2297a714936f 26 //animationstuff
trich9 4:2297a714936f 27 int updateCount = 0;
trich9 4:2297a714936f 28
trich9 4:2297a714936f 29 //NPC
trich9 4:2297a714936f 30 int NPCx = 6;
trich9 4:2297a714936f 31 int NPCy = 5;
trich9 4:2297a714936f 32 int walkCycleNPC = 0;
trich9 4:2297a714936f 33
trich9 5:2fb023cdc666 34 //speech
trich9 5:2fb023cdc666 35 char *talk1 = "";
trich9 5:2fb023cdc666 36
trich9 4:2297a714936f 37 int go_up(int x, int y);
trich9 4:2297a714936f 38 int go_down(int x, int y);
trich9 4:2297a714936f 39 int go_right(int x, int y);
trich9 4:2297a714936f 40 int go_left(int x, int y);
trich9 4:2297a714936f 41 int action_button(int x, int y);
trich9 4:2297a714936f 42 void init_map2();
trich9 4:2297a714936f 43 void animation_update();
trich9 4:2297a714936f 44 void moveNPC();
trich9 4:2297a714936f 45
trich9 5:2fb023cdc666 46 void spawnTreasure();
trich9 5:2fb023cdc666 47 void spawnLakeTreasure();
trich9 5:2fb023cdc666 48 void treasureSparkle();
trich9 5:2fb023cdc666 49 int fakeLakeTreasure = 1;
trich9 5:2fb023cdc666 50 int fakeTreasure = 1;
trich9 5:2fb023cdc666 51 int hasBoat = 0;
trich9 5:2fb023cdc666 52 int treasureX;
trich9 5:2fb023cdc666 53 int treasureY;
trich9 5:2fb023cdc666 54
trich9 5:2fb023cdc666 55 int lakeTreasureX;
trich9 5:2fb023cdc666 56 int lakeTreasureY;
trich9 5:2fb023cdc666 57
trich9 5:2fb023cdc666 58 int needBoat = 0;
trich9 5:2fb023cdc666 59 void checkNeedBoat();
trich9 5:2fb023cdc666 60
trich9 5:2fb023cdc666 61 void startScreen();
trich9 5:2fb023cdc666 62 void endScreen();
trich9 5:2fb023cdc666 63
trich9 5:2fb023cdc666 64 void pickUpSound();
trich9 5:2fb023cdc666 65 void ladderSound();
trich9 4:2297a714936f 66
trich9 4:2297a714936f 67
trich9 4:2297a714936f 68
rconnorlawson 0:35660d7952f7 69 /**
rconnorlawson 0:35660d7952f7 70 * The main game state. Must include Player locations and previous locations for
rconnorlawson 0:35660d7952f7 71 * drawing to work properly. Other items can be added as needed.
rconnorlawson 0:35660d7952f7 72 */
rconnorlawson 0:35660d7952f7 73 struct {
rconnorlawson 0:35660d7952f7 74 int x,y; // Current locations
rconnorlawson 0:35660d7952f7 75 int px, py; // Previous locations
rconnorlawson 0:35660d7952f7 76 int has_key;
trich9 4:2297a714936f 77
trich9 4:2297a714936f 78 //MYCODE
trich9 4:2297a714936f 79 //int omnipotent;
rashidi1saeed 2:1ca97843a334 80 // You can add other properties for the player here
rconnorlawson 0:35660d7952f7 81 } Player;
rconnorlawson 0:35660d7952f7 82
trich9 4:2297a714936f 83
rconnorlawson 0:35660d7952f7 84 /**
rconnorlawson 0:35660d7952f7 85 * Given the game inputs, determine what kind of update needs to happen.
rconnorlawson 0:35660d7952f7 86 * Possbile return values are defined below.
rconnorlawson 0:35660d7952f7 87 */
rconnorlawson 0:35660d7952f7 88 #define NO_ACTION 0
rconnorlawson 0:35660d7952f7 89 #define ACTION_BUTTON 1
rconnorlawson 0:35660d7952f7 90 #define MENU_BUTTON 2
rconnorlawson 0:35660d7952f7 91 #define GO_LEFT 3
rconnorlawson 0:35660d7952f7 92 #define GO_RIGHT 4
rconnorlawson 0:35660d7952f7 93 #define GO_UP 5
rconnorlawson 0:35660d7952f7 94 #define GO_DOWN 6
trich9 5:2fb023cdc666 95 //#define ACTION_BUTTON 7
rconnorlawson 0:35660d7952f7 96 int get_action(GameInputs inputs)
rconnorlawson 0:35660d7952f7 97 {
trich9 4:2297a714936f 98 //MYCODE
trich9 4:2297a714936f 99 //accelerometer cases
trich9 4:2297a714936f 100 if(inputs.ax >= 0.4){
trich9 4:2297a714936f 101 return GO_RIGHT;
trich9 4:2297a714936f 102 }
trich9 4:2297a714936f 103 if(inputs.ax < -0.4){
trich9 4:2297a714936f 104 return GO_LEFT;
trich9 4:2297a714936f 105 }
trich9 4:2297a714936f 106 if(inputs.ay >= 0.4){
trich9 4:2297a714936f 107 return GO_UP;
trich9 4:2297a714936f 108 }
trich9 4:2297a714936f 109 if(inputs.ay < -0.15){
trich9 4:2297a714936f 110 return GO_DOWN;
trich9 4:2297a714936f 111 }
trich9 4:2297a714936f 112
trich9 4:2297a714936f 113 if(!inputs.b1){
trich9 4:2297a714936f 114 if(omnipotent != 1){
trich9 4:2297a714936f 115 omnipotent = 1;
trich9 4:2297a714936f 116 }
trich9 4:2297a714936f 117 else{
trich9 4:2297a714936f 118 omnipotent = 0;
trich9 4:2297a714936f 119 }
trich9 4:2297a714936f 120 wait(1);
trich9 4:2297a714936f 121 }
trich9 4:2297a714936f 122
trich9 4:2297a714936f 123 if(!inputs.b3){
trich9 4:2297a714936f 124 return ACTION_BUTTON;
trich9 4:2297a714936f 125 }
trich9 4:2297a714936f 126
trich9 4:2297a714936f 127 //ENDMYCODE
rconnorlawson 0:35660d7952f7 128 return NO_ACTION;
rconnorlawson 0:35660d7952f7 129 }
rconnorlawson 0:35660d7952f7 130
rconnorlawson 0:35660d7952f7 131 /**
rconnorlawson 0:35660d7952f7 132 * Update the game state based on the user action. For example, if the user
rconnorlawson 0:35660d7952f7 133 * requests GO_UP, then this function should determine if that is possible by
rconnorlawson 0:35660d7952f7 134 * consulting the map, and update the Player position accordingly.
rconnorlawson 0:35660d7952f7 135 *
rconnorlawson 0:35660d7952f7 136 * Return values are defined below. FULL_DRAW indicates that for this frame,
rconnorlawson 0:35660d7952f7 137 * draw_game should not optimize drawing and should draw every tile, even if
rconnorlawson 0:35660d7952f7 138 * the player has not moved.
rconnorlawson 0:35660d7952f7 139 */
rconnorlawson 0:35660d7952f7 140 #define NO_RESULT 0
rconnorlawson 0:35660d7952f7 141 #define GAME_OVER 1
rconnorlawson 0:35660d7952f7 142 #define FULL_DRAW 2
rconnorlawson 0:35660d7952f7 143 int update_game(int action)
rconnorlawson 0:35660d7952f7 144 {
rconnorlawson 0:35660d7952f7 145 // Save player previous location before updating
rconnorlawson 0:35660d7952f7 146 Player.px = Player.x;
rconnorlawson 0:35660d7952f7 147 Player.py = Player.y;
rconnorlawson 0:35660d7952f7 148
trich9 4:2297a714936f 149 //MYCODE
trich9 4:2297a714936f 150 animation_update();
trich9 4:2297a714936f 151 //ENDMYCODE
trich9 4:2297a714936f 152
rconnorlawson 0:35660d7952f7 153 // Do different things based on the each action.
rconnorlawson 0:35660d7952f7 154 // You can define functions like "go_up()" that get called for each case.
rconnorlawson 0:35660d7952f7 155 switch(action)
rconnorlawson 0:35660d7952f7 156 {
trich9 4:2297a714936f 157 case GO_UP:
trich9 4:2297a714936f 158 //MYCODE
trich9 4:2297a714936f 159 if(go_up(Player.px, Player.py)){
trich9 4:2297a714936f 160 return FULL_DRAW;
trich9 4:2297a714936f 161 }
trich9 4:2297a714936f 162 else{
trich9 4:2297a714936f 163 break;
trich9 4:2297a714936f 164 }
trich9 4:2297a714936f 165 case GO_LEFT:
trich9 4:2297a714936f 166 if(go_left(Player.px, Player.py)){
trich9 4:2297a714936f 167 return FULL_DRAW;
trich9 4:2297a714936f 168 }
trich9 4:2297a714936f 169 else{
trich9 4:2297a714936f 170 break;
trich9 4:2297a714936f 171 }
trich9 4:2297a714936f 172 case GO_DOWN:
trich9 4:2297a714936f 173 if(go_down(Player.px, Player.py)){
trich9 4:2297a714936f 174 return FULL_DRAW;
trich9 4:2297a714936f 175 }
trich9 4:2297a714936f 176 else{
trich9 4:2297a714936f 177 break;
trich9 4:2297a714936f 178 }
trich9 4:2297a714936f 179 case GO_RIGHT:
trich9 4:2297a714936f 180 if(go_right(Player.px, Player.py)){
trich9 4:2297a714936f 181 return FULL_DRAW;
trich9 4:2297a714936f 182 }
trich9 4:2297a714936f 183 else{
trich9 4:2297a714936f 184 break;
trich9 4:2297a714936f 185 }
trich9 4:2297a714936f 186 case ACTION_BUTTON:
trich9 4:2297a714936f 187 if(action_button(Player.px, Player.py)){
trich9 4:2297a714936f 188 return FULL_DRAW;
trich9 4:2297a714936f 189 }
trich9 4:2297a714936f 190 else{
trich9 4:2297a714936f 191 break;
trich9 4:2297a714936f 192 }
rconnorlawson 0:35660d7952f7 193 case MENU_BUTTON: break;
rconnorlawson 0:35660d7952f7 194 default: break;
rconnorlawson 0:35660d7952f7 195 }
trich9 4:2297a714936f 196 return FULL_DRAW;
trich9 4:2297a714936f 197 }
trich9 4:2297a714936f 198
trich9 4:2297a714936f 199 //MYCODE
trich9 4:2297a714936f 200 int go_up(int x, int y){
trich9 4:2297a714936f 201 MapItem *northItem = get_north(x, y);
trich9 5:2fb023cdc666 202 if(northItem->walkable || omnipotent || (hasBoat && northItem->type == water)){
trich9 4:2297a714936f 203 Player.y--;
trich9 5:2fb023cdc666 204
trich9 5:2fb023cdc666 205 checkNeedBoat();
trich9 4:2297a714936f 206 return 1;
trich9 4:2297a714936f 207 }
trich9 4:2297a714936f 208 return 0;
trich9 4:2297a714936f 209 }
trich9 4:2297a714936f 210 int go_down(int x, int y){
trich9 4:2297a714936f 211 MapItem *southItem = get_south(x, y);
trich9 5:2fb023cdc666 212 if(southItem->walkable || omnipotent || (hasBoat && southItem->type == water)){
trich9 4:2297a714936f 213 Player.y++;
trich9 5:2fb023cdc666 214 checkNeedBoat();
trich9 4:2297a714936f 215 return 1;
trich9 4:2297a714936f 216 }
trich9 4:2297a714936f 217 return 0;
trich9 4:2297a714936f 218 }
trich9 4:2297a714936f 219 int go_left(int x, int y){
trich9 4:2297a714936f 220 MapItem *westItem = get_west(x, y);
trich9 5:2fb023cdc666 221 if(westItem->walkable || omnipotent || (hasBoat && westItem->type == water)){
trich9 4:2297a714936f 222 Player.x--;
trich9 5:2fb023cdc666 223 checkNeedBoat();
trich9 4:2297a714936f 224 return 1;
trich9 4:2297a714936f 225 }
trich9 4:2297a714936f 226 return 0;
trich9 4:2297a714936f 227 }
trich9 4:2297a714936f 228 int go_right(int x, int y){
trich9 4:2297a714936f 229 MapItem *eastItem = get_east(x, y);
trich9 5:2fb023cdc666 230 if(eastItem->walkable || omnipotent || (hasBoat && eastItem->type == water)){
trich9 4:2297a714936f 231 Player.x++;
trich9 5:2fb023cdc666 232 checkNeedBoat();
trich9 4:2297a714936f 233 return 1;
trich9 4:2297a714936f 234 }
trich9 4:2297a714936f 235 return 0;
trich9 4:2297a714936f 236 }
trich9 4:2297a714936f 237
trich9 5:2fb023cdc666 238 // || (hasBoat && eastItem->type == water)
trich9 5:2fb023cdc666 239
trich9 4:2297a714936f 240 int action_button(int x, int y){
trich9 4:2297a714936f 241 MapItem *eastItem = get_east(x, y);
trich9 4:2297a714936f 242 MapItem *westItem = get_west(x, y);
trich9 4:2297a714936f 243 MapItem *southItem = get_south(x, y);
trich9 4:2297a714936f 244 MapItem *northItem = get_north(x, y);
trich9 4:2297a714936f 245 MapItem *hereItem = get_here(x, y);
trich9 4:2297a714936f 246
trich9 4:2297a714936f 247
trich9 4:2297a714936f 248
trich9 4:2297a714936f 249 //eastItem || westItem || northItem || southItem || hereItem
trich9 4:2297a714936f 250 if(eastItem -> type == NPC || westItem -> type == NPC || northItem -> type == NPC || southItem -> type == NPC || hereItem -> type == NPC){
trich9 4:2297a714936f 251
trich9 4:2297a714936f 252 if(dialogueNumNPC == 0){
trich9 5:2fb023cdc666 253 //1234567890123456X8901234567890123X5679012345678901X1234567890
trich9 5:2fb023cdc666 254 char *talk2 = "There's a ladder SOUTH of here where you can geta sonar.";
trich9 4:2297a714936f 255 speech(talk1, talk2);
trich9 5:2fb023cdc666 256 add_ladder(8, 40);
trich9 4:2297a714936f 257 dialogueNumNPC = 1;
trich9 5:2fb023cdc666 258
trich9 4:2297a714936f 259 }
trich9 4:2297a714936f 260 else if(dialogueNumNPC == 1){
trich9 5:2fb023cdc666 261 //1234567890123456X8901234567890123X567901234567890
trich9 5:2fb023cdc666 262 char *talk2 = "It's around the lake, between two rocks.";
trich9 4:2297a714936f 263 speech(talk1, talk2);
trich9 5:2fb023cdc666 264
trich9 4:2297a714936f 265 }
trich9 5:2fb023cdc666 266 //map_erase(NPCx,NPCy-1);
trich9 4:2297a714936f 267
trich9 4:2297a714936f 268 }
trich9 4:2297a714936f 269 //ladder interaction
trich9 5:2fb023cdc666 270 else if(eastItem -> type == ladder || westItem -> type == ladder || northItem -> type == ladder || southItem -> type == ladder || hereItem -> type == ladder){
trich9 4:2297a714936f 271 //add_ladder(8, 8);
trich9 5:2fb023cdc666 272
trich9 5:2fb023cdc666 273 ladderSound();
trich9 5:2fb023cdc666 274 map_erase(8, 40);
trich9 4:2297a714936f 275 init_map2();
trich9 4:2297a714936f 276 }
trich9 5:2fb023cdc666 277 //sonar interation
trich9 5:2fb023cdc666 278 else if(eastItem -> type == sonar || westItem -> type == sonar || northItem -> type == sonar || southItem -> type == sonar || hereItem -> type == sonar){
trich9 5:2fb023cdc666 279
trich9 5:2fb023cdc666 280 pickUpSound();
trich9 5:2fb023cdc666 281 //1234567890123456789012345678901234567901234567890
trich9 5:2fb023cdc666 282 char *talk2 = "You found the sonar!!!";
trich9 5:2fb023cdc666 283 speech(talk1, talk2);
trich9 5:2fb023cdc666 284
trich9 5:2fb023cdc666 285 map_erase(14, 8); //erase the sonar
trich9 5:2fb023cdc666 286 init_main_map(); //switch back to main map
trich9 5:2fb023cdc666 287 Player.x = 8; //CHANGE to cords of new ladder when done
trich9 5:2fb023cdc666 288 Player.y = 40;
trich9 5:2fb023cdc666 289
trich9 5:2fb023cdc666 290 spawnTreasure(); //spawn the treasure
trich9 5:2fb023cdc666 291 hasSonar = 1; //allow player to use sonar
trich9 5:2fb023cdc666 292 }
trich9 5:2fb023cdc666 293
trich9 5:2fb023cdc666 294 else if(eastItem -> type == keyItem || westItem -> type == keyItem || northItem -> type == keyItem || southItem -> type == keyItem || hereItem -> type == keyItem){
trich9 5:2fb023cdc666 295
trich9 5:2fb023cdc666 296 pickUpSound();
trich9 5:2fb023cdc666 297 //1234567890123456789012345678901234567901234567890
trich9 5:2fb023cdc666 298 char *talk2 = "You found a key. I wonder what it opens?";
trich9 5:2fb023cdc666 299 speech(talk1, talk2);
trich9 5:2fb023cdc666 300 map_erase(18, 8);
trich9 5:2fb023cdc666 301 Player.has_key = 1;
trich9 5:2fb023cdc666 302 }
trich9 5:2fb023cdc666 303
trich9 5:2fb023cdc666 304 else if(eastItem -> type == treasure || westItem -> type == treasure || northItem -> type == treasure || southItem -> type == treasure || hereItem -> type == treasure){
trich9 5:2fb023cdc666 305 //add_ladder(8, 8);
trich9 5:2fb023cdc666 306 if(fakeTreasure == 1){//first treasure found so it is fake
trich9 5:2fb023cdc666 307 //1234567890123456789012345678901234567901234567890
trich9 5:2fb023cdc666 308 char *talk2 = "That treasure was fake.";
trich9 5:2fb023cdc666 309 speech(talk1, talk2);
trich9 5:2fb023cdc666 310
trich9 5:2fb023cdc666 311 map_erase(treasureX, treasureY);
trich9 5:2fb023cdc666 312 spawnTreasure();
trich9 5:2fb023cdc666 313 fakeTreasure = 0;
trich9 5:2fb023cdc666 314 }
trich9 5:2fb023cdc666 315 else{ //do a game over screen
trich9 5:2fb023cdc666 316 endScreen();
trich9 5:2fb023cdc666 317 }
trich9 5:2fb023cdc666 318 }
trich9 5:2fb023cdc666 319
trich9 5:2fb023cdc666 320 //gate stuff
trich9 5:2fb023cdc666 321 else if(eastItem -> type == gate || westItem -> type == gate || northItem -> type == gate || southItem -> type == gate || hereItem -> type == gate){
trich9 5:2fb023cdc666 322 if(Player.has_key){
trich9 5:2fb023cdc666 323 pickUpSound();
trich9 5:2fb023cdc666 324 //123456789012345678901234567890123X567901234567890
trich9 5:2fb023cdc666 325 char *talk2 = "You used your keyto unlock the gate.";
trich9 5:2fb023cdc666 326 speech(talk1, talk2);
trich9 5:2fb023cdc666 327
trich9 5:2fb023cdc666 328 map_erase(33, 5);
trich9 5:2fb023cdc666 329 }
trich9 5:2fb023cdc666 330 else{
trich9 5:2fb023cdc666 331 char *talk2 = "It's locked.";
trich9 5:2fb023cdc666 332 speech(talk1, talk2);
trich9 5:2fb023cdc666 333 }
trich9 5:2fb023cdc666 334 }
trich9 5:2fb023cdc666 335
trich9 5:2fb023cdc666 336 else if(eastItem -> type == prisoner || westItem -> type == prisoner || northItem -> type == prisoner || southItem -> type == prisoner || hereItem -> type == prisoner){
trich9 5:2fb023cdc666 337 if(dialogueNumPris == 0){
trich9 5:2fb023cdc666 338 //1234567890123456X8901234567890123X5679012345678901X1234567890123456X1234567890123456X1234567890123456X
trich9 5:2fb023cdc666 339 char *talk2 = "Hey... you just like freed me from this jail...";
trich9 5:2fb023cdc666 340 speech(talk1, talk2);
trich9 5:2fb023cdc666 341 //1234567890123456X8901234567890123X5679012345678901X1234567890123456X1234567890123456X1234567890123456X
trich9 5:2fb023cdc666 342 char *talk3 = "I was going to use this BOAT to bust out... But I guess you can have it now.";
trich9 5:2fb023cdc666 343 speech(talk1, talk3);
trich9 5:2fb023cdc666 344
trich9 5:2fb023cdc666 345 pickUpSound();
trich9 5:2fb023cdc666 346 char *talk4 = "You got a BOAT! You can travel over water now!";
trich9 5:2fb023cdc666 347 speech(talk1, talk4);
trich9 5:2fb023cdc666 348
trich9 5:2fb023cdc666 349 spawnLakeTreasure();
trich9 5:2fb023cdc666 350
trich9 5:2fb023cdc666 351 hasBoat = 1;
trich9 5:2fb023cdc666 352 dialogueNumPris = 1;
trich9 5:2fb023cdc666 353 map_erase(33,1);
trich9 5:2fb023cdc666 354 }
trich9 5:2fb023cdc666 355 else if(dialogueNumPris == 1){
trich9 5:2fb023cdc666 356 //1234567890123456X8901234567890123X5679012345678901X1234567890123456X1234567890123456X1234567890123456X
trich9 5:2fb023cdc666 357 char *talk2 = "Kinda forgot why I made a boat in the first place...";
trich9 5:2fb023cdc666 358 speech(talk1, talk2);
trich9 5:2fb023cdc666 359 //1234567890123456X8901234567890123X5679012345678901X1234567890123456X
trich9 5:2fb023cdc666 360 char *talk3 = "Something to do with a lake and treasure... ";
trich9 5:2fb023cdc666 361 speech(talk1, talk3);
trich9 5:2fb023cdc666 362 }
trich9 5:2fb023cdc666 363
trich9 5:2fb023cdc666 364
trich9 5:2fb023cdc666 365
trich9 5:2fb023cdc666 366 }
trich9 5:2fb023cdc666 367
trich9 5:2fb023cdc666 368
trich9 5:2fb023cdc666 369 //no items found so give the speech based on whether he has the sonar or not
trich9 5:2fb023cdc666 370 else{
trich9 5:2fb023cdc666 371 if(!hasSonar){
trich9 5:2fb023cdc666 372 //1234567890123456X8901234567890123X567901234567890
trich9 5:2fb023cdc666 373 char *talk2 = "You do not have the sonar.";
trich9 5:2fb023cdc666 374 speech(talk1, talk2);
trich9 5:2fb023cdc666 375 }
trich9 5:2fb023cdc666 376 else{
trich9 5:2fb023cdc666 377
trich9 5:2fb023cdc666 378 //char buffer[50];
trich9 5:2fb023cdc666 379 //sprintf(buffer, "%d, %d", treasureX, treasureY);
trich9 5:2fb023cdc666 380 if(get_here(Player.x, Player.y) -> type != water){//player is in the water
trich9 5:2fb023cdc666 381 //1234567890123456X8901234567890123X567901234567890
trich9 5:2fb023cdc666 382 char *talk2 = "The sonar says:";
trich9 5:2fb023cdc666 383 char *talkWest = "West";
trich9 5:2fb023cdc666 384 char *talkEast = "East";
trich9 5:2fb023cdc666 385 char *talkNorth = "North";
trich9 5:2fb023cdc666 386 char *talkSouth = "South";
trich9 5:2fb023cdc666 387 speech(talk1, talk2);
trich9 5:2fb023cdc666 388
trich9 5:2fb023cdc666 389 if(treasureX > Player.x) speech(talk1, talkEast);
trich9 5:2fb023cdc666 390 if(treasureX < Player.x) speech(talk1, talkWest);
trich9 5:2fb023cdc666 391 if(treasureY > Player.y) speech(talk1, talkSouth);
trich9 5:2fb023cdc666 392 if(treasureY < Player.y) speech(talk1, talkNorth);
trich9 5:2fb023cdc666 393 }
trich9 5:2fb023cdc666 394 else{
trich9 5:2fb023cdc666 395 if(Player.x == lakeTreasureX && Player.y == lakeTreasureY){//player is on the treasure
trich9 5:2fb023cdc666 396 //1234567890123456X8901234567890123X567901234567890
trich9 5:2fb023cdc666 397 char *talk2 = "There's something down here!";
trich9 5:2fb023cdc666 398 speech(talk1, talk2);
trich9 5:2fb023cdc666 399
trich9 5:2fb023cdc666 400 if(fakeLakeTreasure){//tres is fake
trich9 5:2fb023cdc666 401 //1234567890123456X8901234567890123X567901234567890
trich9 5:2fb023cdc666 402 char *talk3 = "It's just an old boot :(";
trich9 5:2fb023cdc666 403 speech(talk1, talk3);
trich9 5:2fb023cdc666 404 fakeLakeTreasure = 0;
trich9 5:2fb023cdc666 405 spawnLakeTreasure();
trich9 5:2fb023cdc666 406 }
trich9 5:2fb023cdc666 407 else{//tres is real
trich9 5:2fb023cdc666 408 //1234567890123456X8901234567890123X1234567890123456X1234567890123456X
trich9 5:2fb023cdc666 409 char *talk3 = "It's a giant treasure chest! You gleefully throw it onto theshore!";
trich9 5:2fb023cdc666 410 speech(talk1, talk3);
trich9 5:2fb023cdc666 411
trich9 5:2fb023cdc666 412 fakeTreasure = 0;
trich9 5:2fb023cdc666 413 add_treasure(13,11);
trich9 5:2fb023cdc666 414 }
trich9 5:2fb023cdc666 415
trich9 5:2fb023cdc666 416 }
trich9 5:2fb023cdc666 417 else{
trich9 5:2fb023cdc666 418 char *talk2 = "The sonar says:";
trich9 5:2fb023cdc666 419 speech(talk1, talk2);
trich9 5:2fb023cdc666 420 //1234567890123456X8901234567890123X567901234567890
trich9 5:2fb023cdc666 421 char *talk3 = "Look for a shimmer in the sea...";
trich9 5:2fb023cdc666 422 speech(talk1, talk3);
trich9 5:2fb023cdc666 423 //char buffer[50];
trich9 5:2fb023cdc666 424 //sprintf(buffer, "%d, %d", lakeTreasureX, lakeTreasureY);
trich9 5:2fb023cdc666 425 //speech(talk1, buffer);
trich9 5:2fb023cdc666 426 treasureSparkle();
trich9 5:2fb023cdc666 427 }
trich9 5:2fb023cdc666 428 }
trich9 5:2fb023cdc666 429 }
trich9 5:2fb023cdc666 430
trich9 5:2fb023cdc666 431 }
trich9 5:2fb023cdc666 432
trich9 4:2297a714936f 433 return 1;
rconnorlawson 0:35660d7952f7 434 }
rconnorlawson 0:35660d7952f7 435
rconnorlawson 0:35660d7952f7 436 /**
rconnorlawson 0:35660d7952f7 437 * Entry point for frame drawing. This should be called once per iteration of
rconnorlawson 0:35660d7952f7 438 * the game loop. This draws all tiles on the screen, followed by the status
rconnorlawson 0:35660d7952f7 439 * bars. Unless init is nonzero, this function will optimize drawing by only
rconnorlawson 0:35660d7952f7 440 * drawing tiles that have changed from the previous frame.
rconnorlawson 0:35660d7952f7 441 */
rconnorlawson 0:35660d7952f7 442 void draw_game(int init)
rconnorlawson 0:35660d7952f7 443 {
rconnorlawson 0:35660d7952f7 444 // Draw game border first
rconnorlawson 0:35660d7952f7 445 if(init) draw_border();
rconnorlawson 0:35660d7952f7 446
rconnorlawson 0:35660d7952f7 447 // Iterate over all visible map tiles
rconnorlawson 0:35660d7952f7 448 for (int i = -5; i <= 5; i++) // Iterate over columns of tiles
rconnorlawson 0:35660d7952f7 449 {
rconnorlawson 0:35660d7952f7 450 for (int j = -4; j <= 4; j++) // Iterate over one column of tiles
rconnorlawson 0:35660d7952f7 451 {
rconnorlawson 0:35660d7952f7 452 // Here, we have a given (i,j)
rconnorlawson 0:35660d7952f7 453
rconnorlawson 0:35660d7952f7 454 // Compute the current map (x,y) of this tile
rconnorlawson 0:35660d7952f7 455 int x = i + Player.x;
rconnorlawson 0:35660d7952f7 456 int y = j + Player.y;
rconnorlawson 0:35660d7952f7 457
rconnorlawson 0:35660d7952f7 458 // Compute the previous map (px, py) of this tile
rconnorlawson 0:35660d7952f7 459 int px = i + Player.px;
rconnorlawson 0:35660d7952f7 460 int py = j + Player.py;
rconnorlawson 0:35660d7952f7 461
rconnorlawson 0:35660d7952f7 462 // Compute u,v coordinates for drawing
rconnorlawson 0:35660d7952f7 463 int u = (i+5)*11 + 3;
rconnorlawson 0:35660d7952f7 464 int v = (j+4)*11 + 15;
rconnorlawson 0:35660d7952f7 465
rconnorlawson 0:35660d7952f7 466 // Figure out what to draw
rconnorlawson 0:35660d7952f7 467 DrawFunc draw = NULL;
rconnorlawson 0:35660d7952f7 468 if (init && i == 0 && j == 0) // Only draw the player on init
rconnorlawson 0:35660d7952f7 469 {
trich9 5:2fb023cdc666 470 draw_player(u, v, Player.has_key, needBoat);
rconnorlawson 0:35660d7952f7 471 continue;
rconnorlawson 0:35660d7952f7 472 }
rconnorlawson 0:35660d7952f7 473 else if (x >= 0 && y >= 0 && x < map_width() && y < map_height()) // Current (i,j) in the map
rconnorlawson 0:35660d7952f7 474 {
rconnorlawson 0:35660d7952f7 475 MapItem* curr_item = get_here(x, y);
rconnorlawson 0:35660d7952f7 476 MapItem* prev_item = get_here(px, py);
rconnorlawson 0:35660d7952f7 477 if (init || curr_item != prev_item) // Only draw if they're different
rconnorlawson 0:35660d7952f7 478 {
rconnorlawson 0:35660d7952f7 479 if (curr_item) // There's something here! Draw it
rconnorlawson 0:35660d7952f7 480 {
rconnorlawson 0:35660d7952f7 481 draw = curr_item->draw;
rconnorlawson 0:35660d7952f7 482 }
rconnorlawson 0:35660d7952f7 483 else // There used to be something, but now there isn't
rconnorlawson 0:35660d7952f7 484 {
rconnorlawson 0:35660d7952f7 485 draw = draw_nothing;
rconnorlawson 0:35660d7952f7 486 }
rconnorlawson 0:35660d7952f7 487 }
rconnorlawson 0:35660d7952f7 488 }
rconnorlawson 0:35660d7952f7 489 else if (init) // If doing a full draw, but we're out of bounds, draw the walls.
rconnorlawson 0:35660d7952f7 490 {
rconnorlawson 0:35660d7952f7 491 draw = draw_wall;
rconnorlawson 0:35660d7952f7 492 }
rconnorlawson 0:35660d7952f7 493
rconnorlawson 0:35660d7952f7 494 // Actually draw the tile
rconnorlawson 0:35660d7952f7 495 if (draw) draw(u, v);
rconnorlawson 0:35660d7952f7 496 }
rconnorlawson 0:35660d7952f7 497 }
rconnorlawson 0:35660d7952f7 498
trich9 4:2297a714936f 499 // Draw status bars
trich9 4:2297a714936f 500 if(Player.x != Player.px || Player.y != Player.py){
trich9 4:2297a714936f 501 draw_upper_status(Player.x, Player.y);
trich9 4:2297a714936f 502 }
trich9 4:2297a714936f 503
rconnorlawson 0:35660d7952f7 504 draw_lower_status();
rconnorlawson 0:35660d7952f7 505 }
rconnorlawson 0:35660d7952f7 506
rconnorlawson 0:35660d7952f7 507
rconnorlawson 0:35660d7952f7 508 /**
rconnorlawson 0:35660d7952f7 509 * Initialize the main world map. Add walls around the edges, interior chambers,
rashidi1saeed 2:1ca97843a334 510 * and plants in the background so you can see motion. Note: using the similar
rashidi1saeed 3:e4690ad5a4d2 511 * procedure you can init the secondary map(s).
rconnorlawson 0:35660d7952f7 512 */
rconnorlawson 0:35660d7952f7 513 void init_main_map()
rconnorlawson 0:35660d7952f7 514 {
rconnorlawson 0:35660d7952f7 515 // "Random" plants
rconnorlawson 0:35660d7952f7 516 Map* map = set_active_map(0);
trich9 5:2fb023cdc666 517
trich9 5:2fb023cdc666 518 /*OGCODE
rconnorlawson 0:35660d7952f7 519 for(int i = map_width() + 3; i < map_area(); i += 39)
rconnorlawson 0:35660d7952f7 520 {
rconnorlawson 0:35660d7952f7 521 add_plant(i % map_width(), i / map_width());
rconnorlawson 0:35660d7952f7 522 }
rconnorlawson 0:35660d7952f7 523 pc.printf("plants\r\n");
trich9 5:2fb023cdc666 524 */
trich9 5:2fb023cdc666 525
trich9 5:2fb023cdc666 526 //adds plants in random locations
trich9 5:2fb023cdc666 527 int numberOfPlants = 75;
trich9 5:2fb023cdc666 528
trich9 5:2fb023cdc666 529 srand (time(NULL));
trich9 5:2fb023cdc666 530 while(numberOfPlants > 0){
trich9 5:2fb023cdc666 531 add_plant((rand()%70 + 2), (rand()%45+2));\
trich9 5:2fb023cdc666 532 numberOfPlants--;
trich9 5:2fb023cdc666 533 }
trich9 5:2fb023cdc666 534
trich9 5:2fb023cdc666 535
rconnorlawson 0:35660d7952f7 536 pc.printf("Adding walls!\r\n");
rconnorlawson 0:35660d7952f7 537 add_wall(0, 0, HORIZONTAL, map_width());
rconnorlawson 0:35660d7952f7 538 add_wall(0, map_height()-1, HORIZONTAL, map_width());
rconnorlawson 0:35660d7952f7 539 add_wall(0, 0, VERTICAL, map_height());
rconnorlawson 0:35660d7952f7 540 add_wall(map_width()-1, 0, VERTICAL, map_height());
rconnorlawson 0:35660d7952f7 541 pc.printf("Walls done!\r\n");
trich9 4:2297a714936f 542
trich9 5:2fb023cdc666 543
trich9 4:2297a714936f 544 //MYCODE
trich9 4:2297a714936f 545 add_NPC(6, 5);
trich9 5:2fb023cdc666 546
trich9 5:2fb023cdc666 547
trich9 5:2fb023cdc666 548 //TESTING
trich9 5:2fb023cdc666 549 //ENDTESTING
trich9 5:2fb023cdc666 550 //lake1
trich9 5:2fb023cdc666 551 add_water(4, 8, HORIZONTAL, 5);
trich9 5:2fb023cdc666 552 add_water(3, 9, HORIZONTAL, 7);
trich9 5:2fb023cdc666 553 add_water(3, 10, HORIZONTAL, 9);
trich9 5:2fb023cdc666 554 add_water(3, 11, HORIZONTAL, 9);
trich9 5:2fb023cdc666 555 add_water(3, 12, HORIZONTAL, 9);
trich9 5:2fb023cdc666 556 add_water(3, 13, HORIZONTAL, 7);
trich9 5:2fb023cdc666 557 add_water(4, 14, HORIZONTAL, 5);
trich9 5:2fb023cdc666 558
trich9 5:2fb023cdc666 559
trich9 5:2fb023cdc666 560 //ROCKS!!!
trich9 5:2fb023cdc666 561
trich9 5:2fb023cdc666 562 add_rock(4, 39, HORIZONTAL, 2);
trich9 5:2fb023cdc666 563 add_rock(3, 40, HORIZONTAL, 3);
trich9 5:2fb023cdc666 564
trich9 5:2fb023cdc666 565 add_rock(9, 39, HORIZONTAL, 2);
trich9 5:2fb023cdc666 566 add_rock(9, 40, HORIZONTAL, 3);
trich9 5:2fb023cdc666 567
trich9 5:2fb023cdc666 568 //WOOD "HOUSE"
trich9 5:2fb023cdc666 569 add_wood(30, 1, HORIZONTAL, 1);
trich9 5:2fb023cdc666 570 add_wood(36, 1, HORIZONTAL, 1);
trich9 5:2fb023cdc666 571
trich9 5:2fb023cdc666 572 add_wood(30, 2, HORIZONTAL, 1);
trich9 5:2fb023cdc666 573 add_wood(36, 2, HORIZONTAL, 1);
trich9 5:2fb023cdc666 574
trich9 5:2fb023cdc666 575 add_wood(30, 3, HORIZONTAL, 1);
trich9 5:2fb023cdc666 576 add_wood(36, 3, HORIZONTAL, 1);
trich9 5:2fb023cdc666 577
trich9 5:2fb023cdc666 578 add_wood(30, 4, HORIZONTAL, 1);
trich9 5:2fb023cdc666 579 add_wood(36, 4, HORIZONTAL, 1);
trich9 5:2fb023cdc666 580
trich9 5:2fb023cdc666 581 add_wood(30, 5, HORIZONTAL, 3);
trich9 5:2fb023cdc666 582 add_wood(34, 5, HORIZONTAL, 3);
trich9 5:2fb023cdc666 583
trich9 5:2fb023cdc666 584 add_gate(33,5);
trich9 5:2fb023cdc666 585
trich9 5:2fb023cdc666 586 add_prisoner(33, 2);
trich9 5:2fb023cdc666 587 add_expPnt(33, 1);
trich9 5:2fb023cdc666 588
trich9 5:2fb023cdc666 589 //TESTING
trich9 5:2fb023cdc666 590
rconnorlawson 0:35660d7952f7 591 print_map();
rconnorlawson 0:35660d7952f7 592 }
rconnorlawson 0:35660d7952f7 593
rconnorlawson 0:35660d7952f7 594 /**
rconnorlawson 0:35660d7952f7 595 * Program entry point! This is where it all begins.
rconnorlawson 0:35660d7952f7 596 * This function orchestrates all the parts of the game. Most of your
rconnorlawson 0:35660d7952f7 597 * implementation should be elsewhere - this holds the game loop, and should
rconnorlawson 0:35660d7952f7 598 * read like a road map for the rest of the code.
rconnorlawson 0:35660d7952f7 599 */
rconnorlawson 0:35660d7952f7 600 int main()
rconnorlawson 0:35660d7952f7 601 {
rconnorlawson 0:35660d7952f7 602 // First things first: initialize hardware
rconnorlawson 0:35660d7952f7 603 ASSERT_P(hardware_init() == ERROR_NONE, "Hardware init failed!");
trich9 5:2fb023cdc666 604
trich9 5:2fb023cdc666 605 //MYCODE
trich9 5:2fb023cdc666 606 startScreen();
rconnorlawson 0:35660d7952f7 607 // Initialize the maps
rconnorlawson 0:35660d7952f7 608 maps_init();
rconnorlawson 0:35660d7952f7 609 init_main_map();
rconnorlawson 0:35660d7952f7 610
rconnorlawson 0:35660d7952f7 611 // Initialize game state
rconnorlawson 0:35660d7952f7 612 set_active_map(0);
rconnorlawson 0:35660d7952f7 613 Player.x = Player.y = 5;
trich9 4:2297a714936f 614
trich9 4:2297a714936f 615 //MYCODE
trich9 4:2297a714936f 616 omnipotent = 0;
trich9 5:2fb023cdc666 617 hasSonar = 0;
trich9 4:2297a714936f 618
rconnorlawson 0:35660d7952f7 619 // Initial drawing
rconnorlawson 0:35660d7952f7 620 draw_game(true);
rconnorlawson 0:35660d7952f7 621
rconnorlawson 0:35660d7952f7 622 // Main game loop
rconnorlawson 0:35660d7952f7 623 while(1)
rconnorlawson 0:35660d7952f7 624 {
rconnorlawson 0:35660d7952f7 625 // Timer to measure game update speed
rconnorlawson 0:35660d7952f7 626 Timer t; t.start();
rconnorlawson 0:35660d7952f7 627
rconnorlawson 0:35660d7952f7 628 // Actuall do the game update:
trich9 4:2297a714936f 629 // 1. Read inputs
trich9 4:2297a714936f 630 //MYCODE
trich9 4:2297a714936f 631 gInputs = read_inputs();
trich9 4:2297a714936f 632
trich9 4:2297a714936f 633 // 2. Determine action (get_action)
trich9 4:2297a714936f 634 //MYCODE
trich9 4:2297a714936f 635 action = get_action(gInputs);
trich9 4:2297a714936f 636
rconnorlawson 0:35660d7952f7 637 // 3. Update game (update_game)
trich9 4:2297a714936f 638 //MYCODE
trich9 4:2297a714936f 639 gUpdate = update_game(action);
rconnorlawson 0:35660d7952f7 640 // 3b. Check for game over
trich9 4:2297a714936f 641
trich9 4:2297a714936f 642
rconnorlawson 0:35660d7952f7 643 // 4. Draw frame (draw_game)
trich9 4:2297a714936f 644 draw_game(gUpdate);
rconnorlawson 0:35660d7952f7 645
rconnorlawson 0:35660d7952f7 646 // 5. Frame delay
rconnorlawson 0:35660d7952f7 647 t.stop();
rconnorlawson 0:35660d7952f7 648 int dt = t.read_ms();
rconnorlawson 0:35660d7952f7 649 if (dt < 100) wait_ms(100 - dt);
rconnorlawson 0:35660d7952f7 650 }
rconnorlawson 0:35660d7952f7 651 }
trich9 4:2297a714936f 652
trich9 4:2297a714936f 653 //MYCODE
trich9 4:2297a714936f 654 void init_map2()
trich9 4:2297a714936f 655 {
trich9 4:2297a714936f 656 Map* map = set_active_map(1);
trich9 4:2297a714936f 657
trich9 4:2297a714936f 658 Player.x = 2;
trich9 4:2297a714936f 659 Player.y = 2;
trich9 4:2297a714936f 660
trich9 4:2297a714936f 661 pc.printf("Adding walls!\r\n");
trich9 4:2297a714936f 662 add_wall(0, 0, HORIZONTAL, map_width());
trich9 4:2297a714936f 663 add_wall(0, map_height()-1, HORIZONTAL, map_width());
trich9 4:2297a714936f 664 add_wall(0, 0, VERTICAL, map_height());
trich9 4:2297a714936f 665 add_wall(map_width()-1, 0, VERTICAL, map_height());
trich9 4:2297a714936f 666 pc.printf("Walls done!\r\n");
trich9 4:2297a714936f 667
trich9 5:2fb023cdc666 668 //INTERIOR WALLS
trich9 5:2fb023cdc666 669 add_wall(4, 1, VERTICAL, 5);
trich9 5:2fb023cdc666 670
trich9 5:2fb023cdc666 671 add_wall(8, 1, VERTICAL, 3);
trich9 5:2fb023cdc666 672 add_wall(8, 5, VERTICAL, 3);
trich9 5:2fb023cdc666 673
trich9 5:2fb023cdc666 674 add_wall(9, 5, HORIZONTAL, 4);
trich9 5:2fb023cdc666 675 add_wall(12, 5, VERTICAL, 4);
trich9 5:2fb023cdc666 676
trich9 5:2fb023cdc666 677 add_wall(9, 5, HORIZONTAL, 4);
trich9 5:2fb023cdc666 678 add_wall(12, 2, VERTICAL, 9);
trich9 5:2fb023cdc666 679
trich9 5:2fb023cdc666 680 add_wall(15, 4, VERTICAL, 9);
trich9 5:2fb023cdc666 681 add_wall(16, 4, VERTICAL, 9);
trich9 5:2fb023cdc666 682
trich9 5:2fb023cdc666 683 add_sonar(14, 8);
trich9 5:2fb023cdc666 684 add_key(18, 8);
trich9 4:2297a714936f 685
trich9 4:2297a714936f 686 print_map();
trich9 4:2297a714936f 687 }
trich9 4:2297a714936f 688
trich9 5:2fb023cdc666 689 //STARTSCREEN
trich9 5:2fb023cdc666 690 void startScreen(){
trich9 5:2fb023cdc666 691 uLCD.filled_rectangle(0, 0, 128, 128, BLACK);
trich9 5:2fb023cdc666 692
trich9 5:2fb023cdc666 693 uLCD.locate(2, 1);
trich9 5:2fb023cdc666 694 uLCD.color(WHITE);
trich9 5:2fb023cdc666 695 uLCD.text_width(1);
trich9 5:2fb023cdc666 696 uLCD.text_height(1);
trich9 5:2fb023cdc666 697
trich9 5:2fb023cdc666 698 uLCD.printf(" GET THAT\n TREASURE!!\n\n Press The\n Action Button\n To START");
trich9 5:2fb023cdc666 699
trich9 5:2fb023cdc666 700 uLCD.filled_rectangle(0, 0, 128, 2, BLUE);//top
trich9 5:2fb023cdc666 701 uLCD.filled_rectangle(0, 0, 2, 128, BLUE);//bottom
trich9 5:2fb023cdc666 702
trich9 5:2fb023cdc666 703 uLCD.filled_rectangle(0, 126, 128, 128, BLUE);
trich9 5:2fb023cdc666 704 uLCD.filled_rectangle(126, 0, 128, 128, BLUE);
trich9 5:2fb023cdc666 705
trich9 5:2fb023cdc666 706 GameInputs startInputs = read_inputs();
trich9 5:2fb023cdc666 707 while(startInputs.b3){//while button not pressed
trich9 5:2fb023cdc666 708 startInputs = read_inputs();
trich9 5:2fb023cdc666 709 }
trich9 5:2fb023cdc666 710
trich9 5:2fb023cdc666 711 uLCD.filled_rectangle(0, 0, 128, 128, BLACK);
trich9 5:2fb023cdc666 712
trich9 5:2fb023cdc666 713 }
trich9 5:2fb023cdc666 714
trich9 5:2fb023cdc666 715
trich9 5:2fb023cdc666 716
trich9 4:2297a714936f 717 //once every 10 in game cycles the aniamtions and npc movements will happen
trich9 4:2297a714936f 718 void animation_update(){
trich9 4:2297a714936f 719 updateCount++;
trich9 4:2297a714936f 720 if(updateCount > 9){
trich9 4:2297a714936f 721 moveNPC();
trich9 4:2297a714936f 722 updateCount = 0;
trich9 4:2297a714936f 723 }
trich9 4:2297a714936f 724 }
trich9 4:2297a714936f 725
trich9 4:2297a714936f 726 void moveNPC(){
trich9 4:2297a714936f 727 if(map_width() == 75){
trich9 4:2297a714936f 728 map_erase(NPCx, NPCy);
trich9 5:2fb023cdc666 729
trich9 5:2fb023cdc666 730
trich9 5:2fb023cdc666 731 map_erase(NPCx, NPCy-1);
trich9 4:2297a714936f 732 //walkCycleNPC = 0 => go right
trich9 4:2297a714936f 733 //wCNPC = 1 => go left
trich9 4:2297a714936f 734 if(NPCx < 10 && !walkCycleNPC) NPCx++;
trich9 4:2297a714936f 735 else if(NPCx > 2) NPCx--;
trich9 4:2297a714936f 736
trich9 4:2297a714936f 737 if(NPCx == 10) walkCycleNPC = 1;
trich9 4:2297a714936f 738 else if(NPCx == 2) walkCycleNPC = 0;
trich9 4:2297a714936f 739
trich9 4:2297a714936f 740 add_NPC(NPCx, NPCy);
trich9 5:2fb023cdc666 741 if(dialogueNumNPC == 0) add_expPnt(NPCx,NPCy-1);//NPC has something important to say
trich9 5:2fb023cdc666 742
trich9 4:2297a714936f 743 }
trich9 4:2297a714936f 744
trich9 4:2297a714936f 745 }
trich9 5:2fb023cdc666 746
trich9 5:2fb023cdc666 747 void spawnTreasure(){
trich9 5:2fb023cdc666 748
trich9 5:2fb023cdc666 749 srand (time(NULL));
trich9 5:2fb023cdc666 750 treasureX = (rand()%45) + 25; //rand x cord for treasure
trich9 5:2fb023cdc666 751 treasureY = (rand()%30) + 15; //rand y cord for treasure
trich9 5:2fb023cdc666 752
trich9 5:2fb023cdc666 753 add_treasure(treasureX, treasureY);
trich9 5:2fb023cdc666 754 }
trich9 5:2fb023cdc666 755
trich9 5:2fb023cdc666 756 void spawnLakeTreasure(){
trich9 5:2fb023cdc666 757
trich9 5:2fb023cdc666 758 srand (time(NULL));
trich9 5:2fb023cdc666 759 lakeTreasureX = (rand()%5) + 4; //rand x cord for treasure
trich9 5:2fb023cdc666 760 lakeTreasureY = (rand()%7) + 8; //rand y cord for treasure
trich9 5:2fb023cdc666 761
trich9 5:2fb023cdc666 762 }
trich9 5:2fb023cdc666 763
trich9 5:2fb023cdc666 764 void treasureSparkle(){
trich9 5:2fb023cdc666 765
trich9 5:2fb023cdc666 766 add_waterS1(lakeTreasureX, lakeTreasureY);
trich9 5:2fb023cdc666 767 draw_game(FULL_DRAW);
trich9 5:2fb023cdc666 768 wait_ms(500);
trich9 5:2fb023cdc666 769
trich9 5:2fb023cdc666 770 add_waterS2(lakeTreasureX, lakeTreasureY);
trich9 5:2fb023cdc666 771 draw_game(FULL_DRAW);
trich9 5:2fb023cdc666 772 wait_ms(500);
trich9 5:2fb023cdc666 773 add_water(lakeTreasureX, lakeTreasureY, HORIZONTAL, 1);
trich9 5:2fb023cdc666 774 }
trich9 5:2fb023cdc666 775
trich9 5:2fb023cdc666 776 void checkNeedBoat(){
trich9 5:2fb023cdc666 777 if(get_here(Player.x, Player.y) -> type == water){
trich9 5:2fb023cdc666 778 needBoat = 1;
trich9 5:2fb023cdc666 779 }
trich9 5:2fb023cdc666 780 else{
trich9 5:2fb023cdc666 781 needBoat = 0;
trich9 5:2fb023cdc666 782 }
trich9 5:2fb023cdc666 783 }
trich9 5:2fb023cdc666 784
trich9 5:2fb023cdc666 785
trich9 5:2fb023cdc666 786 void pickUpSound(){
trich9 5:2fb023cdc666 787 speaker.period(1.0/98);
trich9 5:2fb023cdc666 788 speaker = 0.01;
trich9 5:2fb023cdc666 789 wait_ms(100);
trich9 5:2fb023cdc666 790 speaker = 0;
trich9 5:2fb023cdc666 791 wait_ms(50);
trich9 5:2fb023cdc666 792
trich9 5:2fb023cdc666 793 speaker.period(1.0/110);
trich9 5:2fb023cdc666 794 speaker = 0.01;
trich9 5:2fb023cdc666 795 wait_ms(100);
trich9 5:2fb023cdc666 796 speaker = 0;
trich9 5:2fb023cdc666 797 wait_ms(50);
trich9 5:2fb023cdc666 798
trich9 5:2fb023cdc666 799 speaker.period(1.0/123);
trich9 5:2fb023cdc666 800 speaker = 0.01;
trich9 5:2fb023cdc666 801 wait_ms(100);
trich9 5:2fb023cdc666 802 speaker = 0;
trich9 5:2fb023cdc666 803 wait_ms(50);
trich9 5:2fb023cdc666 804
trich9 5:2fb023cdc666 805 speaker.period(1.0/130);
trich9 5:2fb023cdc666 806 speaker = 0.01;
trich9 5:2fb023cdc666 807 wait_ms(100);
trich9 5:2fb023cdc666 808 speaker = 0;
trich9 5:2fb023cdc666 809 }
trich9 5:2fb023cdc666 810
trich9 5:2fb023cdc666 811 void ladderSound(){
trich9 5:2fb023cdc666 812 speaker.period(1.0/130);
trich9 5:2fb023cdc666 813 speaker = 0.01;
trich9 5:2fb023cdc666 814 wait_ms(100);
trich9 5:2fb023cdc666 815 speaker = 0;
trich9 5:2fb023cdc666 816 wait_ms(50);
trich9 5:2fb023cdc666 817
trich9 5:2fb023cdc666 818 speaker.period(1.0/123);
trich9 5:2fb023cdc666 819 speaker = 0.01;
trich9 5:2fb023cdc666 820 wait_ms(100);
trich9 5:2fb023cdc666 821 speaker = 0;
trich9 5:2fb023cdc666 822 wait_ms(50);
trich9 5:2fb023cdc666 823
trich9 5:2fb023cdc666 824 speaker.period(1.0/110);
trich9 5:2fb023cdc666 825 speaker = 0.01;
trich9 5:2fb023cdc666 826 wait_ms(100);
trich9 5:2fb023cdc666 827 speaker = 0;
trich9 5:2fb023cdc666 828 wait_ms(50);
trich9 5:2fb023cdc666 829
trich9 5:2fb023cdc666 830 speaker.period(1.0/98);
trich9 5:2fb023cdc666 831 speaker = 0.01;
trich9 5:2fb023cdc666 832 wait_ms(100);
trich9 5:2fb023cdc666 833 speaker = 0;
trich9 5:2fb023cdc666 834 }
trich9 5:2fb023cdc666 835
trich9 5:2fb023cdc666 836 void endScreen(){
trich9 5:2fb023cdc666 837 uLCD.filled_rectangle(0, 0, 128, 128, BLACK);
trich9 5:2fb023cdc666 838
trich9 5:2fb023cdc666 839
trich9 5:2fb023cdc666 840
trich9 5:2fb023cdc666 841 uLCD.locate(2, 1);
trich9 5:2fb023cdc666 842 uLCD.color(WHITE);
trich9 5:2fb023cdc666 843 uLCD.text_width(1);
trich9 5:2fb023cdc666 844 uLCD.text_height(1);
trich9 5:2fb023cdc666 845
trich9 5:2fb023cdc666 846 uLCD.printf(" YOU WON!\n\n Thanks\n For\n Playing!!");
trich9 5:2fb023cdc666 847
trich9 5:2fb023cdc666 848 uLCD.filled_rectangle(0, 0, 128, 2, BLUE);//top
trich9 5:2fb023cdc666 849 uLCD.filled_rectangle(0, 0, 2, 128, BLUE);//bottom
trich9 5:2fb023cdc666 850
trich9 5:2fb023cdc666 851 uLCD.filled_rectangle(0, 126, 128, 128, BLUE);
trich9 5:2fb023cdc666 852 uLCD.filled_rectangle(126, 0, 128, 128, BLUE);
trich9 5:2fb023cdc666 853
trich9 5:2fb023cdc666 854
trich9 5:2fb023cdc666 855
trich9 5:2fb023cdc666 856
trich9 5:2fb023cdc666 857 int nWait = 100;
trich9 5:2fb023cdc666 858 //int speakerVolume = 0.1;
trich9 5:2fb023cdc666 859 while(true){
trich9 5:2fb023cdc666 860 //MEME
trich9 5:2fb023cdc666 861
trich9 5:2fb023cdc666 862 //intro1
trich9 5:2fb023cdc666 863
trich9 5:2fb023cdc666 864 speaker.period(1.0/369);
trich9 5:2fb023cdc666 865 speaker = 0.01;
trich9 5:2fb023cdc666 866 wait_ms(350);
trich9 5:2fb023cdc666 867 speaker = 0;
trich9 5:2fb023cdc666 868 wait_ms(nWait);
trich9 5:2fb023cdc666 869
trich9 5:2fb023cdc666 870 speaker = 0.01;
trich9 5:2fb023cdc666 871 speaker.period(1.0/293);
trich9 5:2fb023cdc666 872 wait_ms(350);
trich9 5:2fb023cdc666 873 speaker = 0;
trich9 5:2fb023cdc666 874 wait_ms(nWait);
trich9 5:2fb023cdc666 875
trich9 5:2fb023cdc666 876 speaker = 0.01;
trich9 5:2fb023cdc666 877 speaker.period(1.0/293);
trich9 5:2fb023cdc666 878 wait_ms(100);
trich9 5:2fb023cdc666 879 speaker = 0;
trich9 5:2fb023cdc666 880 wait_ms(nWait);
trich9 5:2fb023cdc666 881
trich9 5:2fb023cdc666 882 speaker = 0.01;
trich9 5:2fb023cdc666 883 speaker.period(1.0/329);
trich9 5:2fb023cdc666 884 wait_ms(100);
trich9 5:2fb023cdc666 885 speaker = 0;
trich9 5:2fb023cdc666 886 wait_ms(nWait);
trich9 5:2fb023cdc666 887
trich9 5:2fb023cdc666 888 speaker = 0.01;
trich9 5:2fb023cdc666 889 speaker.period(1.0/349);
trich9 5:2fb023cdc666 890 wait_ms(200);
trich9 5:2fb023cdc666 891 speaker = 0;
trich9 5:2fb023cdc666 892 wait_ms(nWait);
trich9 5:2fb023cdc666 893
trich9 5:2fb023cdc666 894 speaker = 0.01;
trich9 5:2fb023cdc666 895 speaker.period(1.0/329);
trich9 5:2fb023cdc666 896 wait_ms(250);
trich9 5:2fb023cdc666 897 speaker = 0;
trich9 5:2fb023cdc666 898 wait_ms(nWait);
trich9 5:2fb023cdc666 899
trich9 5:2fb023cdc666 900 speaker = 0.01;
trich9 5:2fb023cdc666 901 speaker.period(1.0/293);
trich9 5:2fb023cdc666 902 wait_ms(200);
trich9 5:2fb023cdc666 903 speaker = 0;
trich9 5:2fb023cdc666 904 wait_ms(nWait);
trich9 5:2fb023cdc666 905
trich9 5:2fb023cdc666 906 speaker = 0.01;
trich9 5:2fb023cdc666 907 speaker.period(1.0/277);
trich9 5:2fb023cdc666 908 wait_ms(250);
trich9 5:2fb023cdc666 909 speaker = 0;
trich9 5:2fb023cdc666 910 wait_ms(nWait);
trich9 5:2fb023cdc666 911
trich9 5:2fb023cdc666 912 speaker = 0.01;
trich9 5:2fb023cdc666 913 speaker.period(1.0/293);
trich9 5:2fb023cdc666 914 wait_ms(250);
trich9 5:2fb023cdc666 915 speaker = 0;
trich9 5:2fb023cdc666 916 wait_ms(nWait);
trich9 5:2fb023cdc666 917
trich9 5:2fb023cdc666 918 speaker = 0.01;
trich9 5:2fb023cdc666 919 speaker.period(1.0/329);
trich9 5:2fb023cdc666 920 wait_ms(150);
trich9 5:2fb023cdc666 921 speaker = 0;
trich9 5:2fb023cdc666 922 wait_ms(nWait);
trich9 5:2fb023cdc666 923
trich9 5:2fb023cdc666 924 speaker = 0.01;
trich9 5:2fb023cdc666 925 speaker.period(1.0/369);
trich9 5:2fb023cdc666 926 wait_ms(250);
trich9 5:2fb023cdc666 927 speaker = 0;
trich9 5:2fb023cdc666 928 wait_ms(nWait);
trich9 5:2fb023cdc666 929
trich9 5:2fb023cdc666 930 speaker = 0.01;
trich9 5:2fb023cdc666 931 speaker.period(1.0/369);
trich9 5:2fb023cdc666 932 wait_ms(100);
trich9 5:2fb023cdc666 933 speaker = 0;
trich9 5:2fb023cdc666 934 wait_ms(nWait);
trich9 5:2fb023cdc666 935
trich9 5:2fb023cdc666 936 speaker = 0.01;
trich9 5:2fb023cdc666 937 speaker.period(1.0/493);
trich9 5:2fb023cdc666 938 wait_ms(350);
trich9 5:2fb023cdc666 939 speaker = 0;
trich9 5:2fb023cdc666 940 wait_ms(nWait);
trich9 5:2fb023cdc666 941
trich9 5:2fb023cdc666 942 //endintro1
trich9 5:2fb023cdc666 943 //intro1-2
trich9 5:2fb023cdc666 944 speaker = 0.01;
trich9 5:2fb023cdc666 945 speaker.period(1.0/246);
trich9 5:2fb023cdc666 946 wait_ms(150);
trich9 5:2fb023cdc666 947 speaker = 0;
trich9 5:2fb023cdc666 948 wait_ms(nWait);
trich9 5:2fb023cdc666 949
trich9 5:2fb023cdc666 950 speaker = 0.01;
trich9 5:2fb023cdc666 951 speaker.period(1.0/277);
trich9 5:2fb023cdc666 952 wait_ms(150);
trich9 5:2fb023cdc666 953 speaker = 0;
trich9 5:2fb023cdc666 954 wait_ms(nWait);
trich9 5:2fb023cdc666 955
trich9 5:2fb023cdc666 956 speaker = 0.01;
trich9 5:2fb023cdc666 957 speaker.period(1.0/293);
trich9 5:2fb023cdc666 958 wait_ms(250);
trich9 5:2fb023cdc666 959 speaker = 0;
trich9 5:2fb023cdc666 960 wait_ms(nWait);
trich9 5:2fb023cdc666 961
trich9 5:2fb023cdc666 962 speaker = 0.01;
trich9 5:2fb023cdc666 963 speaker.period(1.0/329);
trich9 5:2fb023cdc666 964 wait_ms(250);
trich9 5:2fb023cdc666 965 speaker = 0;
trich9 5:2fb023cdc666 966 wait_ms(nWait);
trich9 5:2fb023cdc666 967
trich9 5:2fb023cdc666 968 speaker = 0.01;
trich9 5:2fb023cdc666 969 speaker.period(1.0/293);
trich9 5:2fb023cdc666 970 wait_ms(150);
trich9 5:2fb023cdc666 971 speaker = 0;
trich9 5:2fb023cdc666 972 wait_ms(nWait);
trich9 5:2fb023cdc666 973
trich9 5:2fb023cdc666 974 speaker = 0.01;
trich9 5:2fb023cdc666 975 speaker.period(1.0/277);
trich9 5:2fb023cdc666 976 wait_ms(200);
trich9 5:2fb023cdc666 977 speaker = 0;
trich9 5:2fb023cdc666 978 wait_ms(nWait);
trich9 5:2fb023cdc666 979
trich9 5:2fb023cdc666 980 speaker = 0.01;
trich9 5:2fb023cdc666 981 speaker.period(1.0/440);
trich9 5:2fb023cdc666 982 wait_ms(200);
trich9 5:2fb023cdc666 983 speaker = 0;
trich9 5:2fb023cdc666 984 wait_ms(nWait);
trich9 5:2fb023cdc666 985
trich9 5:2fb023cdc666 986 speaker = 0.01;
trich9 5:2fb023cdc666 987 speaker.period(1.0/391);
trich9 5:2fb023cdc666 988 wait_ms(150);
trich9 5:2fb023cdc666 989 speaker = 0;
trich9 5:2fb023cdc666 990 wait_ms(nWait);
trich9 5:2fb023cdc666 991 //endintro1-2
trich9 5:2fb023cdc666 992 //END MEME
trich9 5:2fb023cdc666 993 }
trich9 5:2fb023cdc666 994 }