Saltuk 212

Dependencies:   mbed KS0108

Committer:
Bilgin
Date:
Fri May 31 15:13:48 2019 +0000
Revision:
0:c7dd8e13fa95
212 Saltuk

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Bilgin 0:c7dd8e13fa95 1 #include "mbed.h"
Bilgin 0:c7dd8e13fa95 2 #include "KS0108.h"
Bilgin 0:c7dd8e13fa95 3 #include "image.h"
Bilgin 0:c7dd8e13fa95 4 #include "Game.h"
Bilgin 0:c7dd8e13fa95 5
Bilgin 0:c7dd8e13fa95 6 DigitalIn butUp(PTE21);
Bilgin 0:c7dd8e13fa95 7 DigitalIn butRight(PTE20);
Bilgin 0:c7dd8e13fa95 8 DigitalIn butDown(PTE29);
Bilgin 0:c7dd8e13fa95 9 DigitalIn butLeft(PTE22);
Bilgin 0:c7dd8e13fa95 10 DigitalIn butMiddle(PTE23);
Bilgin 0:c7dd8e13fa95 11
Bilgin 0:c7dd8e13fa95 12 KS0108 display (PTC5,PTC7, PTC0, PTC3, PTC11, PTC10, PTA1, PTA2, PTD4, PTA12, PTA4, PTA5, PTC8, PTC9);
Bilgin 0:c7dd8e13fa95 13 void draw(int type, int posX, int posY, int direction); //1.player 2.bot 3.bullet
Bilgin 0:c7dd8e13fa95 14 void erase(int type, int posX, int posY, int direction);
Bilgin 0:c7dd8e13fa95 15 void drawAll();
Bilgin 0:c7dd8e13fa95 16 void eraseAll();
Bilgin 0:c7dd8e13fa95 17 Game* game;
Bilgin 0:c7dd8e13fa95 18
Bilgin 0:c7dd8e13fa95 19 int main()
Bilgin 0:c7dd8e13fa95 20 {
Bilgin 0:c7dd8e13fa95 21 srand(time(0));
Bilgin 0:c7dd8e13fa95 22 display.FullScreenBMP(face);
Bilgin 0:c7dd8e13fa95 23 wait(1);
Bilgin 0:c7dd8e13fa95 24 display.ClearScreen();
Bilgin 0:c7dd8e13fa95 25
Bilgin 0:c7dd8e13fa95 26 //my stuff
Bilgin 0:c7dd8e13fa95 27 game = new Game();
Bilgin 0:c7dd8e13fa95 28
Bilgin 0:c7dd8e13fa95 29 while(1)
Bilgin 0:c7dd8e13fa95 30 {
Bilgin 0:c7dd8e13fa95 31 drawAll();
Bilgin 0:c7dd8e13fa95 32 wait_ms(40);
Bilgin 0:c7dd8e13fa95 33 display.ClearScreen();
Bilgin 0:c7dd8e13fa95 34 //eraseAll();
Bilgin 0:c7dd8e13fa95 35 if(!butUp)
Bilgin 0:c7dd8e13fa95 36 game->getPlayer()->move(1);
Bilgin 0:c7dd8e13fa95 37 else if(!butRight)
Bilgin 0:c7dd8e13fa95 38 game->getPlayer()->move(2);
Bilgin 0:c7dd8e13fa95 39 else if(!butDown)
Bilgin 0:c7dd8e13fa95 40 game->getPlayer()->move(3);
Bilgin 0:c7dd8e13fa95 41 else if(!butLeft)
Bilgin 0:c7dd8e13fa95 42 game->getPlayer()->move(4);
Bilgin 0:c7dd8e13fa95 43 else if(!butMiddle){
Bilgin 0:c7dd8e13fa95 44 Bullet* temp = game->getPlayer()->fire();
Bilgin 0:c7dd8e13fa95 45 game->getBullets()->addBullet(2, temp->x, temp->y, temp->dir);
Bilgin 0:c7dd8e13fa95 46 }
Bilgin 0:c7dd8e13fa95 47 game->play();
Bilgin 0:c7dd8e13fa95 48 }
Bilgin 0:c7dd8e13fa95 49 }
Bilgin 0:c7dd8e13fa95 50
Bilgin 0:c7dd8e13fa95 51 void drawAll(){
Bilgin 0:c7dd8e13fa95 52 //draw player
Bilgin 0:c7dd8e13fa95 53 draw(1, game->getPlayer()->x, game->getPlayer()->y, game->getPlayer()->dir);
Bilgin 0:c7dd8e13fa95 54
Bilgin 0:c7dd8e13fa95 55 //draw tanks
Bilgin 0:c7dd8e13fa95 56 Tank* tcur = game->getTanks()->getHead();
Bilgin 0:c7dd8e13fa95 57
Bilgin 0:c7dd8e13fa95 58 while(tcur != 0){
Bilgin 0:c7dd8e13fa95 59 draw(2, tcur->x, tcur->y, tcur->dir);
Bilgin 0:c7dd8e13fa95 60 tcur = tcur->getNext();
Bilgin 0:c7dd8e13fa95 61 }
Bilgin 0:c7dd8e13fa95 62
Bilgin 0:c7dd8e13fa95 63 //draw bullets
Bilgin 0:c7dd8e13fa95 64 Bullet* bcur = game->getBullets()->getHead();
Bilgin 0:c7dd8e13fa95 65
Bilgin 0:c7dd8e13fa95 66 while(bcur != 0){
Bilgin 0:c7dd8e13fa95 67 draw(3, bcur->x, bcur->y, bcur->dir);
Bilgin 0:c7dd8e13fa95 68 bcur = bcur->getNext();
Bilgin 0:c7dd8e13fa95 69 }
Bilgin 0:c7dd8e13fa95 70
Bilgin 0:c7dd8e13fa95 71 //draw hearts
Bilgin 0:c7dd8e13fa95 72 unsigned short i = 57;
Bilgin 0:c7dd8e13fa95 73 for(unsigned short j = game->getPlayer()->getLife(); j > 0; i = i + 5, j--){
Bilgin 0:c7dd8e13fa95 74 draw(5, i, 0, 0);
Bilgin 0:c7dd8e13fa95 75 }
Bilgin 0:c7dd8e13fa95 76
Bilgin 0:c7dd8e13fa95 77 if(game->death){
Bilgin 0:c7dd8e13fa95 78 delete game->bullets;
Bilgin 0:c7dd8e13fa95 79 delete game->tanks;
Bilgin 0:c7dd8e13fa95 80 game->bullets = new BulletList();
Bilgin 0:c7dd8e13fa95 81 game->tanks = new TankList();
Bilgin 0:c7dd8e13fa95 82 erase(1, game->getPlayer()->x, game->getPlayer()->y, game->getPlayer()->dir);
Bilgin 0:c7dd8e13fa95 83 draw(4, game->getPlayer()->x, game->getPlayer()->y, 1);
Bilgin 0:c7dd8e13fa95 84 wait(3);
Bilgin 0:c7dd8e13fa95 85 game->getPlayer()->x = 0;
Bilgin 0:c7dd8e13fa95 86 game->getPlayer()->y = 56;
Bilgin 0:c7dd8e13fa95 87 game->getPlayer()->dir = 2;
Bilgin 0:c7dd8e13fa95 88 game->death = false;
Bilgin 0:c7dd8e13fa95 89 }
Bilgin 0:c7dd8e13fa95 90
Bilgin 0:c7dd8e13fa95 91 if(game->player->getLife() == 0){
Bilgin 0:c7dd8e13fa95 92 display.ClearScreen();
Bilgin 0:c7dd8e13fa95 93 display.FullScreenBMP(cat);
Bilgin 0:c7dd8e13fa95 94 while(1);
Bilgin 0:c7dd8e13fa95 95 }
Bilgin 0:c7dd8e13fa95 96 }
Bilgin 0:c7dd8e13fa95 97
Bilgin 0:c7dd8e13fa95 98 void eraseAll(){
Bilgin 0:c7dd8e13fa95 99 //display.ClearScreen();
Bilgin 0:c7dd8e13fa95 100 //draw hearts
Bilgin 0:c7dd8e13fa95 101 unsigned short i = 57;
Bilgin 0:c7dd8e13fa95 102 for(unsigned short j = game->getPlayer()->getLife(); j > 0; i = i + 5, j--){
Bilgin 0:c7dd8e13fa95 103 erase(5, i, 0, 0);
Bilgin 0:c7dd8e13fa95 104 }
Bilgin 0:c7dd8e13fa95 105
Bilgin 0:c7dd8e13fa95 106 //draw player
Bilgin 0:c7dd8e13fa95 107 erase(1, game->getPlayer()->x, game->getPlayer()->y, game->getPlayer()->dir);
Bilgin 0:c7dd8e13fa95 108
Bilgin 0:c7dd8e13fa95 109 //draw tanks
Bilgin 0:c7dd8e13fa95 110 Tank* tcur = game->getTanks()->getHead();
Bilgin 0:c7dd8e13fa95 111
Bilgin 0:c7dd8e13fa95 112 while(tcur != 0){
Bilgin 0:c7dd8e13fa95 113 erase(2, tcur->x, tcur->y, tcur->dir);
Bilgin 0:c7dd8e13fa95 114 tcur = tcur->getNext();
Bilgin 0:c7dd8e13fa95 115 }
Bilgin 0:c7dd8e13fa95 116
Bilgin 0:c7dd8e13fa95 117 //draw bullets
Bilgin 0:c7dd8e13fa95 118 Bullet* bcur = game->getBullets()->getHead();
Bilgin 0:c7dd8e13fa95 119
Bilgin 0:c7dd8e13fa95 120 while(bcur != 0){
Bilgin 0:c7dd8e13fa95 121 erase(3, bcur->x, bcur->y, bcur->dir);
Bilgin 0:c7dd8e13fa95 122 bcur = bcur->getNext();
Bilgin 0:c7dd8e13fa95 123 }
Bilgin 0:c7dd8e13fa95 124 }
Bilgin 0:c7dd8e13fa95 125
Bilgin 0:c7dd8e13fa95 126 void draw(int type, int posX, int posY, int direction) //1.player 2.bot 3.bullet 4.x 5.heart
Bilgin 0:c7dd8e13fa95 127 {
Bilgin 0:c7dd8e13fa95 128 switch(type)
Bilgin 0:c7dd8e13fa95 129 {
Bilgin 0:c7dd8e13fa95 130 case 1:
Bilgin 0:c7dd8e13fa95 131 switch(direction)
Bilgin 0:c7dd8e13fa95 132 {
Bilgin 0:c7dd8e13fa95 133 case 1:
Bilgin 0:c7dd8e13fa95 134 display.FullRectangle(posX, posY + 2, posX + 7, posY + 7, BLACK);
Bilgin 0:c7dd8e13fa95 135 display.FullRectangle(posX + 3, posY, posX + 4, posY + 1, BLACK);
Bilgin 0:c7dd8e13fa95 136 break;
Bilgin 0:c7dd8e13fa95 137 case 2:
Bilgin 0:c7dd8e13fa95 138 display.FullRectangle(posX, posY, posX + 5, posY + 7, BLACK);
Bilgin 0:c7dd8e13fa95 139 display.FullRectangle(posX + 6, posY + 3, posX + 7, posY + 4, BLACK);
Bilgin 0:c7dd8e13fa95 140 break;
Bilgin 0:c7dd8e13fa95 141 case 3:
Bilgin 0:c7dd8e13fa95 142 display.FullRectangle(posX, posY, posX + 7, posY + 5, BLACK);
Bilgin 0:c7dd8e13fa95 143 display.FullRectangle(posX + 3, posY + 6, posX + 4, posY + 7, BLACK);
Bilgin 0:c7dd8e13fa95 144 break;
Bilgin 0:c7dd8e13fa95 145 case 4:
Bilgin 0:c7dd8e13fa95 146 display.FullRectangle(posX + 2, posY, posX + 7, posY + 7, BLACK);
Bilgin 0:c7dd8e13fa95 147 display.FullRectangle(posX, posY + 3, posX + 1, posY + 4, BLACK);
Bilgin 0:c7dd8e13fa95 148 break;
Bilgin 0:c7dd8e13fa95 149 default: break;
Bilgin 0:c7dd8e13fa95 150 }
Bilgin 0:c7dd8e13fa95 151 break;
Bilgin 0:c7dd8e13fa95 152
Bilgin 0:c7dd8e13fa95 153 case 2:
Bilgin 0:c7dd8e13fa95 154 switch(direction)
Bilgin 0:c7dd8e13fa95 155 {
Bilgin 0:c7dd8e13fa95 156 case 1:
Bilgin 0:c7dd8e13fa95 157 display.FullRectangle(posX, posY + 2, posX + 7, posY + 7, BLACK);
Bilgin 0:c7dd8e13fa95 158 display.FullRectangle(posX + 3, posY, posX + 4, posY + 1, BLACK);
Bilgin 0:c7dd8e13fa95 159 display.FullRectangle(posX + 2, posY + 5, posX + 5, posY + 7, WHITE);
Bilgin 0:c7dd8e13fa95 160 break;
Bilgin 0:c7dd8e13fa95 161 case 2:
Bilgin 0:c7dd8e13fa95 162 display.FullRectangle(posX, posY, posX + 5, posY + 7, BLACK);
Bilgin 0:c7dd8e13fa95 163 display.FullRectangle(posX + 6, posY + 3, posX + 7, posY + 4, BLACK);
Bilgin 0:c7dd8e13fa95 164 display.FullRectangle(posX, posY + 2, posX + 2, posY + 5, WHITE);
Bilgin 0:c7dd8e13fa95 165 break;
Bilgin 0:c7dd8e13fa95 166 case 3:
Bilgin 0:c7dd8e13fa95 167 display.FullRectangle(posX, posY, posX + 7, posY + 5, BLACK);
Bilgin 0:c7dd8e13fa95 168 display.FullRectangle(posX + 3, posY + 6, posX + 4, posY + 7, BLACK);
Bilgin 0:c7dd8e13fa95 169 display.FullRectangle(posX + 2, posY, posX + 5, posY + 2, WHITE);
Bilgin 0:c7dd8e13fa95 170 break;
Bilgin 0:c7dd8e13fa95 171 case 4:
Bilgin 0:c7dd8e13fa95 172 display.FullRectangle(posX + 2, posY, posX + 7, posY + 7, BLACK);
Bilgin 0:c7dd8e13fa95 173 display.FullRectangle(posX, posY + 3, posX + 1, posY + 4, BLACK);
Bilgin 0:c7dd8e13fa95 174 display.FullRectangle(posX + 5, posY + 2, posX + 7, posY + 5, WHITE);
Bilgin 0:c7dd8e13fa95 175 break;
Bilgin 0:c7dd8e13fa95 176 default: break;
Bilgin 0:c7dd8e13fa95 177 }
Bilgin 0:c7dd8e13fa95 178 break;
Bilgin 0:c7dd8e13fa95 179
Bilgin 0:c7dd8e13fa95 180 case 3:
Bilgin 0:c7dd8e13fa95 181 display.FullRectangle(posX, posY, posX + 1, posY + 1, BLACK);
Bilgin 0:c7dd8e13fa95 182 break;
Bilgin 0:c7dd8e13fa95 183
Bilgin 0:c7dd8e13fa95 184 case 4:
Bilgin 0:c7dd8e13fa95 185 display.Line(posX, posY, posX + 7, posY + 7, BLACK);
Bilgin 0:c7dd8e13fa95 186 display.Line(posX + 7, posY, posX, posY + 7, BLACK);
Bilgin 0:c7dd8e13fa95 187 break;
Bilgin 0:c7dd8e13fa95 188
Bilgin 0:c7dd8e13fa95 189 case 5:
Bilgin 0:c7dd8e13fa95 190 //display.DrawBitmap(heart, posX, posY, BLACK);
Bilgin 0:c7dd8e13fa95 191 display.FullRectangle(posX, posY, posX + 3, posY + 3, BLACK);
Bilgin 0:c7dd8e13fa95 192 display.FullRectangle(posX + 1, posY + 1, posX + 2, posY + 2, WHITE);
Bilgin 0:c7dd8e13fa95 193 break;
Bilgin 0:c7dd8e13fa95 194 default: break;
Bilgin 0:c7dd8e13fa95 195 }
Bilgin 0:c7dd8e13fa95 196 }
Bilgin 0:c7dd8e13fa95 197
Bilgin 0:c7dd8e13fa95 198 void erase(int type, int posX, int posY, int direction) //1.player 2.bot 3.bullet 4.x 5.heart
Bilgin 0:c7dd8e13fa95 199 {
Bilgin 0:c7dd8e13fa95 200 switch(type)
Bilgin 0:c7dd8e13fa95 201 {
Bilgin 0:c7dd8e13fa95 202 case 1:
Bilgin 0:c7dd8e13fa95 203 switch(direction)
Bilgin 0:c7dd8e13fa95 204 {
Bilgin 0:c7dd8e13fa95 205 case 1:
Bilgin 0:c7dd8e13fa95 206 display.FullRectangle(posX, posY + 2, posX + 7, posY + 7, WHITE);
Bilgin 0:c7dd8e13fa95 207 display.FullRectangle(posX + 3, posY, posX + 4, posY + 1, WHITE);
Bilgin 0:c7dd8e13fa95 208 break;
Bilgin 0:c7dd8e13fa95 209 case 2:
Bilgin 0:c7dd8e13fa95 210 display.FullRectangle(posX, posY, posX + 5, posY + 7, WHITE);
Bilgin 0:c7dd8e13fa95 211 display.FullRectangle(posX + 6, posY + 3, posX + 7, posY + 4, WHITE);
Bilgin 0:c7dd8e13fa95 212 break;
Bilgin 0:c7dd8e13fa95 213 case 3:
Bilgin 0:c7dd8e13fa95 214 display.FullRectangle(posX, posY, posX + 7, posY + 5, WHITE);
Bilgin 0:c7dd8e13fa95 215 display.FullRectangle(posX + 3, posY + 6, posX + 4, posY + 7, WHITE);
Bilgin 0:c7dd8e13fa95 216 break;
Bilgin 0:c7dd8e13fa95 217 case 4:
Bilgin 0:c7dd8e13fa95 218 display.FullRectangle(posX + 2, posY, posX + 7, posY + 7, WHITE);
Bilgin 0:c7dd8e13fa95 219 display.FullRectangle(posX, posY + 3, posX + 1, posY + 4, WHITE);
Bilgin 0:c7dd8e13fa95 220 break;
Bilgin 0:c7dd8e13fa95 221 default: break;
Bilgin 0:c7dd8e13fa95 222 }
Bilgin 0:c7dd8e13fa95 223 break;
Bilgin 0:c7dd8e13fa95 224
Bilgin 0:c7dd8e13fa95 225 case 2:
Bilgin 0:c7dd8e13fa95 226 switch(direction)
Bilgin 0:c7dd8e13fa95 227 {
Bilgin 0:c7dd8e13fa95 228 case 1:
Bilgin 0:c7dd8e13fa95 229 display.FullRectangle(posX, posY + 2, posX + 7, posY + 7, WHITE);
Bilgin 0:c7dd8e13fa95 230 display.FullRectangle(posX + 3, posY, posX + 4, posY + 1, WHITE);
Bilgin 0:c7dd8e13fa95 231 //display.FullRectangle(posX + 2, posY + 5, posX + 5, posY + 7, WHITE);
Bilgin 0:c7dd8e13fa95 232 break;
Bilgin 0:c7dd8e13fa95 233 case 2:
Bilgin 0:c7dd8e13fa95 234 display.FullRectangle(posX, posY, posX + 5, posY + 7, WHITE);
Bilgin 0:c7dd8e13fa95 235 display.FullRectangle(posX + 6, posY + 3, posX + 7, posY + 4, WHITE);
Bilgin 0:c7dd8e13fa95 236 //display.FullRectangle(posX, posY + 2, posX + 2, posY + 5, WHITE);
Bilgin 0:c7dd8e13fa95 237 break;
Bilgin 0:c7dd8e13fa95 238 case 3:
Bilgin 0:c7dd8e13fa95 239 display.FullRectangle(posX, posY, posX + 7, posY + 5, WHITE);
Bilgin 0:c7dd8e13fa95 240 display.FullRectangle(posX + 3, posY + 6, posX + 4, posY + 7, WHITE);
Bilgin 0:c7dd8e13fa95 241 //display.FullRectangle(posX + 2, posY, posX + 5, posY + 2, WHITE);
Bilgin 0:c7dd8e13fa95 242 break;
Bilgin 0:c7dd8e13fa95 243 case 4:
Bilgin 0:c7dd8e13fa95 244 display.FullRectangle(posX + 2, posY, posX + 7, posY + 7, WHITE);
Bilgin 0:c7dd8e13fa95 245 display.FullRectangle(posX, posY + 3, posX + 1, posY + 4, WHITE);
Bilgin 0:c7dd8e13fa95 246 //display.FullRectangle(posX + 5, posY + 2, posX + 7, posY + 5, WHITE);
Bilgin 0:c7dd8e13fa95 247 break;
Bilgin 0:c7dd8e13fa95 248 default: break;
Bilgin 0:c7dd8e13fa95 249 }
Bilgin 0:c7dd8e13fa95 250 break;
Bilgin 0:c7dd8e13fa95 251
Bilgin 0:c7dd8e13fa95 252 case 3:
Bilgin 0:c7dd8e13fa95 253 display.FullRectangle(posX, posY, posX + 1, posY + 1, WHITE);
Bilgin 0:c7dd8e13fa95 254 break;
Bilgin 0:c7dd8e13fa95 255
Bilgin 0:c7dd8e13fa95 256 case 4:
Bilgin 0:c7dd8e13fa95 257 display.Line(posX, posY, posX + 7, posY + 7, WHITE);
Bilgin 0:c7dd8e13fa95 258 display.Line(posX + 7, posY, posX, posY + 7, WHITE);
Bilgin 0:c7dd8e13fa95 259 break;
Bilgin 0:c7dd8e13fa95 260
Bilgin 0:c7dd8e13fa95 261 case 5:
Bilgin 0:c7dd8e13fa95 262 //display.DrawBitmap(heart, posX, posY, BLACK);
Bilgin 0:c7dd8e13fa95 263 display.FullRectangle(posX, posY, posX + 3, posY + 3, WHITE);
Bilgin 0:c7dd8e13fa95 264 //display.FullRectangle(posX + 1, posY + 1, posX + 2, posY + 2, WHITE);
Bilgin 0:c7dd8e13fa95 265 break;
Bilgin 0:c7dd8e13fa95 266 default: break;
Bilgin 0:c7dd8e13fa95 267 }
Bilgin 0:c7dd8e13fa95 268 }