My platformer project

Dependencies:   Finalproject N5110 mbed

Fork of 2645_project_final by Levs Dumans

Committer:
lion152
Date:
Fri May 05 15:00:33 2017 +0000
Revision:
0:5dd225e2621d
Finished in one go

Who changed what in which revision?

UserRevisionLine numberNew contents of line
lion152 0:5dd225e2621d 1 #include "mbed.h"
lion152 0:5dd225e2621d 2 #include "Gamepad.h"
lion152 0:5dd225e2621d 3 #include "N5110.h"
lion152 0:5dd225e2621d 4 #include <deque>
lion152 0:5dd225e2621d 5 #include "Platform.h"
lion152 0:5dd225e2621d 6 #include "Map.h"
lion152 0:5dd225e2621d 7 #include "Character.h"
lion152 0:5dd225e2621d 8 #include "Enemy.h"
lion152 0:5dd225e2621d 9
lion152 0:5dd225e2621d 10 //Serial pc(USBTX, USBRX);
lion152 0:5dd225e2621d 11
lion152 0:5dd225e2621d 12 //create lcd object
lion152 0:5dd225e2621d 13 N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11);
lion152 0:5dd225e2621d 14 //create gamepad object
lion152 0:5dd225e2621d 15 Gamepad pad;
lion152 0:5dd225e2621d 16
lion152 0:5dd225e2621d 17 //create timer object
lion152 0:5dd225e2621d 18 Timer t;
lion152 0:5dd225e2621d 19
lion152 0:5dd225e2621d 20 // booleans for win/loose/start conditions
lion152 0:5dd225e2621d 21 bool win = false;
lion152 0:5dd225e2621d 22 bool loose = false;
lion152 0:5dd225e2621d 23 bool start = false;
lion152 0:5dd225e2621d 24
lion152 0:5dd225e2621d 25 //function to initialise everything needed
lion152 0:5dd225e2621d 26 void init()
lion152 0:5dd225e2621d 27 {
lion152 0:5dd225e2621d 28 //Initialise gamepad and LCD
lion152 0:5dd225e2621d 29 lcd.init();
lion152 0:5dd225e2621d 30 pad.init();
lion152 0:5dd225e2621d 31 }
lion152 0:5dd225e2621d 32
lion152 0:5dd225e2621d 33 //function that displays welcoming screen
lion152 0:5dd225e2621d 34 void welcome()
lion152 0:5dd225e2621d 35 {
lion152 0:5dd225e2621d 36 lcd.printString("Welcome",20,1);
lion152 0:5dd225e2621d 37 lcd.refresh();
lion152 0:5dd225e2621d 38 pad.leds_on();
lion152 0:5dd225e2621d 39 wait(2.0);
lion152 0:5dd225e2621d 40 lcd.clear();
lion152 0:5dd225e2621d 41 }
lion152 0:5dd225e2621d 42
lion152 0:5dd225e2621d 43 //function that displays press start
lion152 0:5dd225e2621d 44 void pressStart()
lion152 0:5dd225e2621d 45 {
lion152 0:5dd225e2621d 46 lcd.printString("Press start",10,1);
lion152 0:5dd225e2621d 47 lcd.printString("to begin",15,3);
lion152 0:5dd225e2621d 48 lcd.refresh();
lion152 0:5dd225e2621d 49 pad.leds_off();
lion152 0:5dd225e2621d 50 }
lion152 0:5dd225e2621d 51
lion152 0:5dd225e2621d 52 //function that displays game over screen
lion152 0:5dd225e2621d 53 void gameOver()
lion152 0:5dd225e2621d 54 {
lion152 0:5dd225e2621d 55 lcd.printString("Game Over",17,1);
lion152 0:5dd225e2621d 56 lcd.refresh();
lion152 0:5dd225e2621d 57 wait(1.0);
lion152 0:5dd225e2621d 58 lcd.clear();
lion152 0:5dd225e2621d 59 }
lion152 0:5dd225e2621d 60
lion152 0:5dd225e2621d 61 //function do display win screen
lion152 0:5dd225e2621d 62 void winner()
lion152 0:5dd225e2621d 63 {
lion152 0:5dd225e2621d 64 lcd.printString("You Won",20,1);
lion152 0:5dd225e2621d 65 lcd.refresh();
lion152 0:5dd225e2621d 66 wait(4.0);
lion152 0:5dd225e2621d 67 lcd.clear();
lion152 0:5dd225e2621d 68 }
lion152 0:5dd225e2621d 69
lion152 0:5dd225e2621d 70 // function to create platform list
lion152 0:5dd225e2621d 71 deque<Platform*>* createLevel()
lion152 0:5dd225e2621d 72 {
lion152 0:5dd225e2621d 73 //declare new queue named levelMap
lion152 0:5dd225e2621d 74 deque <Platform*>* levelMap = new deque<Platform*>;
lion152 0:5dd225e2621d 75 //create new platform
lion152 0:5dd225e2621d 76 Platform* p = new Platform(0,44,30,3,FILL_BLACK);
lion152 0:5dd225e2621d 77 //insert new platofrm into queue
lion152 0:5dd225e2621d 78 levelMap->push_back(p);
lion152 0:5dd225e2621d 79 //create new platform
lion152 0:5dd225e2621d 80 //p = new Platform(40,37,10,3,FILL_BLACK);
lion152 0:5dd225e2621d 81 //insert new platofrm into queue
lion152 0:5dd225e2621d 82 //levelMap->push_back(p);
lion152 0:5dd225e2621d 83 //create new platform
lion152 0:5dd225e2621d 84 p = new Platform(40,35,10,3,FILL_BLACK);
lion152 0:5dd225e2621d 85 //insert new platofrm into queue
lion152 0:5dd225e2621d 86 levelMap->push_back(p);
lion152 0:5dd225e2621d 87 p = new Platform(70,44,40,3,FILL_BLACK);
lion152 0:5dd225e2621d 88 //insert new platofrm into queue
lion152 0:5dd225e2621d 89 levelMap->push_back(p);
lion152 0:5dd225e2621d 90 p = new Platform(70,41,3,3,FILL_BLACK);
lion152 0:5dd225e2621d 91 levelMap->push_back(p);
lion152 0:5dd225e2621d 92 p = new Platform(130,44,50,3,FILL_BLACK);
lion152 0:5dd225e2621d 93 levelMap->push_back(p);
lion152 0:5dd225e2621d 94 p = new Platform(130,41,3,3,FILL_BLACK);
lion152 0:5dd225e2621d 95 levelMap->push_back(p);
lion152 0:5dd225e2621d 96 p = new Platform(177,41,3,3,FILL_BLACK);
lion152 0:5dd225e2621d 97 levelMap->push_back(p);
lion152 0:5dd225e2621d 98 p = new Platform(190,30,10,3,FILL_BLACK);
lion152 0:5dd225e2621d 99 levelMap->push_back(p);
lion152 0:5dd225e2621d 100 p = new Platform(230,44,30,3,FILL_BLACK);
lion152 0:5dd225e2621d 101 levelMap->push_back(p);
lion152 0:5dd225e2621d 102 p = new Platform(260,35,20,3,FILL_BLACK);
lion152 0:5dd225e2621d 103 levelMap->push_back(p);
lion152 0:5dd225e2621d 104 p = new Platform(290,25,20,3,FILL_BLACK);
lion152 0:5dd225e2621d 105 levelMap->push_back(p);
lion152 0:5dd225e2621d 106 p = new Platform(230,41,3,3,FILL_BLACK);
lion152 0:5dd225e2621d 107 levelMap->push_back(p);
lion152 0:5dd225e2621d 108
lion152 0:5dd225e2621d 109 return levelMap;
lion152 0:5dd225e2621d 110 }
lion152 0:5dd225e2621d 111
lion152 0:5dd225e2621d 112 // function to create enemy list
lion152 0:5dd225e2621d 113 deque<Enemy*>* createEnemies()
lion152 0:5dd225e2621d 114 {
lion152 0:5dd225e2621d 115 //declare new queue named enemyMap
lion152 0:5dd225e2621d 116 deque <Enemy*>* enemyMap = new deque<Enemy*>;
lion152 0:5dd225e2621d 117 //create new enemy
lion152 0:5dd225e2621d 118 Enemy* e = new Enemy(105,43);
lion152 0:5dd225e2621d 119 //insert new enemy into queue
lion152 0:5dd225e2621d 120 enemyMap->push_back(e);
lion152 0:5dd225e2621d 121 //create new enemy
lion152 0:5dd225e2621d 122 e = new Enemy(140,43);
lion152 0:5dd225e2621d 123 //insert new enemy into queue
lion152 0:5dd225e2621d 124 enemyMap->push_back(e);
lion152 0:5dd225e2621d 125 e = new Enemy(250,43);
lion152 0:5dd225e2621d 126 enemyMap->push_back(e);
lion152 0:5dd225e2621d 127 e = new Enemy(270,43);
lion152 0:5dd225e2621d 128 enemyMap->push_back(e);
lion152 0:5dd225e2621d 129 e = new Enemy(30,43);
lion152 0:5dd225e2621d 130 enemyMap->push_back(e);
lion152 0:5dd225e2621d 131
lion152 0:5dd225e2621d 132 return enemyMap;
lion152 0:5dd225e2621d 133 }
lion152 0:5dd225e2621d 134
lion152 0:5dd225e2621d 135 int main()
lion152 0:5dd225e2621d 136 {
lion152 0:5dd225e2621d 137 init();
lion152 0:5dd225e2621d 138 //clear lcd
lion152 0:5dd225e2621d 139 lcd.clear();
lion152 0:5dd225e2621d 140 Direction d;
lion152 0:5dd225e2621d 141 int lastAction=-50;
lion152 0:5dd225e2621d 142 int monsterMove=-100;
lion152 0:5dd225e2621d 143 //reset timer
lion152 0:5dd225e2621d 144 t.reset();
lion152 0:5dd225e2621d 145 //start timer
lion152 0:5dd225e2621d 146 t.start();
lion152 0:5dd225e2621d 147 //welcome screen
lion152 0:5dd225e2621d 148 welcome();
lion152 0:5dd225e2621d 149 while(true)
lion152 0:5dd225e2621d 150 {
lion152 0:5dd225e2621d 151 pressStart();
lion152 0:5dd225e2621d 152 while(!start)
lion152 0:5dd225e2621d 153 {
lion152 0:5dd225e2621d 154 if(pad.check_event(pad.START_PRESSED))
lion152 0:5dd225e2621d 155 {
lion152 0:5dd225e2621d 156 start=true;
lion152 0:5dd225e2621d 157 }
lion152 0:5dd225e2621d 158 }
lion152 0:5dd225e2621d 159 //create map object
lion152 0:5dd225e2621d 160 Map map1(createLevel(), createEnemies(), new Character(5,40));
lion152 0:5dd225e2621d 161 start=false;
lion152 0:5dd225e2621d 162 //clear lcd
lion152 0:5dd225e2621d 163 lcd.clear();
lion152 0:5dd225e2621d 164 //draw buffer to screen
lion152 0:5dd225e2621d 165 lcd.refresh();
lion152 0:5dd225e2621d 166
lion152 0:5dd225e2621d 167 //game loop
lion152 0:5dd225e2621d 168 while(!win && !loose)
lion152 0:5dd225e2621d 169 {
lion152 0:5dd225e2621d 170 if((t.read_ms()-lastAction)>50)
lion152 0:5dd225e2621d 171 {
lion152 0:5dd225e2621d 172 lastAction=t.read_ms();
lion152 0:5dd225e2621d 173 //get direction from joystick
lion152 0:5dd225e2621d 174 d = pad.get_direction();
lion152 0:5dd225e2621d 175 //draw map
lion152 0:5dd225e2621d 176 map1.draw(lcd, true);
lion152 0:5dd225e2621d 177 //if((t.read_ms()-monsterMove)>100)
lion152 0:5dd225e2621d 178 //{
lion152 0:5dd225e2621d 179 monsterMove=t.read_ms();
lion152 0:5dd225e2621d 180 //move all enemies
lion152 0:5dd225e2621d 181 map1.moveEnemies();
lion152 0:5dd225e2621d 182 //}
lion152 0:5dd225e2621d 183 //mov and draw characters
lion152 0:5dd225e2621d 184 map1.getCharacter()->movement(d, map1.getAbsoluteCoord(), map1.getLevelMap(), map1.getEnemyMap());
lion152 0:5dd225e2621d 185 //loosing condition
lion152 0:5dd225e2621d 186 if ((map1.getCharacter()->getY()>47) || pad.check_event(pad.BACK_PRESSED))
lion152 0:5dd225e2621d 187 {
lion152 0:5dd225e2621d 188 loose=true;
lion152 0:5dd225e2621d 189 wait(0.3);
lion152 0:5dd225e2621d 190 }
lion152 0:5dd225e2621d 191 //clear map
lion152 0:5dd225e2621d 192 else
lion152 0:5dd225e2621d 193 {
lion152 0:5dd225e2621d 194 map1.draw(lcd, false);
lion152 0:5dd225e2621d 195 }
lion152 0:5dd225e2621d 196 //wining condition
lion152 0:5dd225e2621d 197 if (map1.getCharacter()->getX()==300)
lion152 0:5dd225e2621d 198 {
lion152 0:5dd225e2621d 199 win=true;
lion152 0:5dd225e2621d 200 }
lion152 0:5dd225e2621d 201 //refresh screen
lion152 0:5dd225e2621d 202 lcd.refresh();
lion152 0:5dd225e2621d 203 }
lion152 0:5dd225e2621d 204 }
lion152 0:5dd225e2621d 205 lcd.clear();
lion152 0:5dd225e2621d 206 lcd.refresh();
lion152 0:5dd225e2621d 207 //display loosing screen
lion152 0:5dd225e2621d 208 if (loose)
lion152 0:5dd225e2621d 209 {
lion152 0:5dd225e2621d 210 gameOver();
lion152 0:5dd225e2621d 211 }
lion152 0:5dd225e2621d 212 //display wining screen
lion152 0:5dd225e2621d 213 else
lion152 0:5dd225e2621d 214 {
lion152 0:5dd225e2621d 215 winner();
lion152 0:5dd225e2621d 216 }
lion152 0:5dd225e2621d 217 //reset booleans
lion152 0:5dd225e2621d 218 win=false;
lion152 0:5dd225e2621d 219 loose=false;
lion152 0:5dd225e2621d 220 }
lion152 0:5dd225e2621d 221 }