The space invaders replica (SIR) is console game project written in C++ programming language. The SIR is targeting and works on Outrageous Circuits RETRO game console developer platform. The game is written in C++ programming language using MBED online IDE and compiler.

Dependencies:   mbed

Committer:
mitko
Date:
Sun Jan 25 09:14:58 2015 +0000
Revision:
0:7dfc10b70a77
The space invaders replica (SIR) is console game project written in C++ programming language. The SIR is targeting and works on Outrageous Circuits RETRO game console developer platform. The game is written in C++ programming language using MBED onli

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mitko 0:7dfc10b70a77 1 #include "mbed.h"
mitko 0:7dfc10b70a77 2
mitko 0:7dfc10b70a77 3
mitko 0:7dfc10b70a77 4 /* Display Resultion (128x160) */
mitko 0:7dfc10b70a77 5 #include "DisplayN18.h"
mitko 0:7dfc10b70a77 6 DisplayN18 disp;
mitko 0:7dfc10b70a77 7 char width = 160, height = 128;
mitko 0:7dfc10b70a77 8
mitko 0:7dfc10b70a77 9
mitko 0:7dfc10b70a77 10 /* Graphic Units */
mitko 0:7dfc10b70a77 11 // Draw Blank Unit (13x10)
mitko 0:7dfc10b70a77 12 void DrawBlankUnit(int Dx,int Dy)
mitko 0:7dfc10b70a77 13 {
mitko 0:7dfc10b70a77 14 for(int y=-5;y<16;y++)
mitko 0:7dfc10b70a77 15 for(int x=0;x<8;x++)
mitko 0:7dfc10b70a77 16 disp.setPixel(Dy+y,Dx+x,0x0000);
mitko 0:7dfc10b70a77 17 }
mitko 0:7dfc10b70a77 18
mitko 0:7dfc10b70a77 19 // Enemies Visibility and Coordinates
mitko 0:7dfc10b70a77 20 bool EnemyVisible[3][5];
mitko 0:7dfc10b70a77 21 /* {
mitko 0:7dfc10b70a77 22 {true,true,true,true,true},
mitko 0:7dfc10b70a77 23 {true,true,true,true,true},
mitko 0:7dfc10b70a77 24 {true,true,true,true,true}
mitko 0:7dfc10b70a77 25 }; */
mitko 0:7dfc10b70a77 26 bool FireBullet = false; // Fire Bullet
mitko 0:7dfc10b70a77 27
mitko 0:7dfc10b70a77 28 int EnemyCol[3][5] = {
mitko 0:7dfc10b70a77 29 {10,30,50,70,90},
mitko 0:7dfc10b70a77 30 {10,30,50,70,90},
mitko 0:7dfc10b70a77 31 {10,30,50,70,90}
mitko 0:7dfc10b70a77 32 };
mitko 0:7dfc10b70a77 33 int EnemyRow[3][5] = {
mitko 0:7dfc10b70a77 34 {10,10,10,10,10},
mitko 0:7dfc10b70a77 35 {20,20,20,20,20},
mitko 0:7dfc10b70a77 36 {30,30,30,30,30}
mitko 0:7dfc10b70a77 37 };
mitko 0:7dfc10b70a77 38 // Enemy Unit Part 1
mitko 0:7dfc10b70a77 39 unsigned short Enemy1[8][11] =
mitko 0:7dfc10b70a77 40 {
mitko 0:7dfc10b70a77 41 {0x0000,0x0000,0x0000,0xffff,0x0000,0x0000,0x0000,0xffff,0x0000,0x0000,0x0000},
mitko 0:7dfc10b70a77 42 {0xffff,0x0000,0x0000,0xffff,0x0000,0x0000,0x0000,0xffff,0x0000,0x0000,0xffff},
mitko 0:7dfc10b70a77 43 {0xffff,0x0000,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x0000,0xffff},
mitko 0:7dfc10b70a77 44 {0xffff,0xffff,0xffff,0x0000,0xffff,0xffff,0xffff,0x0000,0xffff,0xffff,0xffff},
mitko 0:7dfc10b70a77 45 {0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff},
mitko 0:7dfc10b70a77 46 {0x0000,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x0000},
mitko 0:7dfc10b70a77 47 {0x0000,0x0000,0xffff,0x0000,0x0000,0x0000,0x0000,0x0000,0xffff,0x0000,0x0000},
mitko 0:7dfc10b70a77 48 {0x0000,0xffff,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0xffff,0x0000},
mitko 0:7dfc10b70a77 49 };
mitko 0:7dfc10b70a77 50 // Enemy Unit Part 2
mitko 0:7dfc10b70a77 51 unsigned short Enemy2[8][11] =
mitko 0:7dfc10b70a77 52 {
mitko 0:7dfc10b70a77 53 {0x0000,0x0000,0xffff,0x0000,0x0000,0x0000,0x0000,0x0000,0xffff,0x0000,0x0000},
mitko 0:7dfc10b70a77 54 {0x0000,0x0000,0x0000,0xffff,0x0000,0x0000,0x0000,0xffff,0x0000,0x0000,0x0000},
mitko 0:7dfc10b70a77 55 {0x0000,0x0000,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x0000,0x0000},
mitko 0:7dfc10b70a77 56 {0x0000,0xffff,0xffff,0x0000,0xffff,0xffff,0xffff,0x0000,0xffff,0xffff,0x0000},
mitko 0:7dfc10b70a77 57 {0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff},
mitko 0:7dfc10b70a77 58 {0xffff,0x0000,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x0000,0xffff},
mitko 0:7dfc10b70a77 59 {0xffff,0x0000,0xffff,0x0000,0x0000,0x0000,0x0000,0x0000,0xffff,0x0000,0xffff},
mitko 0:7dfc10b70a77 60 {0x0000,0x0000,0x0000,0xffff,0xffff,0x0000,0xffff,0xffff,0x0000,0x0000,0x0000}
mitko 0:7dfc10b70a77 61 };
mitko 0:7dfc10b70a77 62 // Draw Enemy Unit Part 1
mitko 0:7dfc10b70a77 63 void DrawEnemyUnitPart1(int Dx,int Dy)
mitko 0:7dfc10b70a77 64 {
mitko 0:7dfc10b70a77 65 DrawBlankUnit(Dx,Dy);
mitko 0:7dfc10b70a77 66 for(int y=0;y<11;y++)
mitko 0:7dfc10b70a77 67 for(int x=0;x<8;x++)
mitko 0:7dfc10b70a77 68 if(Enemy1[x][y] != 0x0000)
mitko 0:7dfc10b70a77 69 disp.setPixel(Dy+y,Dx+x,Enemy1[x][y]);
mitko 0:7dfc10b70a77 70 }
mitko 0:7dfc10b70a77 71 // Draw Enemy Unit Part 2
mitko 0:7dfc10b70a77 72 void DrawEnemyUnitPart2(int Dx,int Dy)
mitko 0:7dfc10b70a77 73 {
mitko 0:7dfc10b70a77 74 DrawBlankUnit(Dx,Dy);
mitko 0:7dfc10b70a77 75 for(int y=0;y<11;y++)
mitko 0:7dfc10b70a77 76 for(int x=0;x<8;x++)
mitko 0:7dfc10b70a77 77 if(Enemy2[x][y] != 0x0000)
mitko 0:7dfc10b70a77 78 disp.setPixel(Dy+y,Dx+x,Enemy2[x][y]);
mitko 0:7dfc10b70a77 79 }
mitko 0:7dfc10b70a77 80 // Draw All Visible Enemies
mitko 0:7dfc10b70a77 81 void DrawEnemies(int y,int x)
mitko 0:7dfc10b70a77 82 {
mitko 0:7dfc10b70a77 83 // part 1
mitko 0:7dfc10b70a77 84 if(EnemyVisible[0][0]) DrawEnemyUnitPart1(EnemyRow[0][0]+y,EnemyCol[0][0]+x);
mitko 0:7dfc10b70a77 85 if(EnemyVisible[0][1]) DrawEnemyUnitPart1(EnemyRow[0][1]+y,EnemyCol[0][1]+x);
mitko 0:7dfc10b70a77 86 if(EnemyVisible[0][2]) DrawEnemyUnitPart1(EnemyRow[0][2]+y,EnemyCol[0][2]+x);
mitko 0:7dfc10b70a77 87 if(EnemyVisible[0][3]) DrawEnemyUnitPart1(EnemyRow[0][3]+y,EnemyCol[0][3]+x);
mitko 0:7dfc10b70a77 88 if(EnemyVisible[0][4]) DrawEnemyUnitPart1(EnemyRow[0][4]+y,EnemyCol[0][4]+x);
mitko 0:7dfc10b70a77 89 if(EnemyVisible[1][0]) DrawEnemyUnitPart1(EnemyRow[1][0]+y,EnemyCol[1][0]+x);
mitko 0:7dfc10b70a77 90 if(EnemyVisible[1][1]) DrawEnemyUnitPart1(EnemyRow[1][1]+y,EnemyCol[1][1]+x);
mitko 0:7dfc10b70a77 91 if(EnemyVisible[1][2]) DrawEnemyUnitPart1(EnemyRow[1][2]+y,EnemyCol[1][2]+x);
mitko 0:7dfc10b70a77 92 if(EnemyVisible[1][3]) DrawEnemyUnitPart1(EnemyRow[1][3]+y,EnemyCol[1][3]+x);
mitko 0:7dfc10b70a77 93 if(EnemyVisible[1][4]) DrawEnemyUnitPart1(EnemyRow[1][4]+y,EnemyCol[1][4]+x);
mitko 0:7dfc10b70a77 94 if(EnemyVisible[2][0]) DrawEnemyUnitPart1(EnemyRow[2][0]+y,EnemyCol[2][0]+x);
mitko 0:7dfc10b70a77 95 if(EnemyVisible[2][1]) DrawEnemyUnitPart1(EnemyRow[2][1]+y,EnemyCol[2][1]+x);
mitko 0:7dfc10b70a77 96 if(EnemyVisible[2][2]) DrawEnemyUnitPart1(EnemyRow[2][2]+y,EnemyCol[2][2]+x);
mitko 0:7dfc10b70a77 97 if(EnemyVisible[2][3]) DrawEnemyUnitPart1(EnemyRow[2][3]+y,EnemyCol[2][3]+x);
mitko 0:7dfc10b70a77 98 if(EnemyVisible[2][4]) DrawEnemyUnitPart1(EnemyRow[2][4]+y,EnemyCol[2][4]+x);
mitko 0:7dfc10b70a77 99 // part 2
mitko 0:7dfc10b70a77 100 if(EnemyVisible[0][0]) DrawEnemyUnitPart2(EnemyRow[0][0]+y,EnemyCol[0][0]+x);
mitko 0:7dfc10b70a77 101 if(EnemyVisible[0][1]) DrawEnemyUnitPart2(EnemyRow[0][1]+y,EnemyCol[0][1]+x);
mitko 0:7dfc10b70a77 102 if(EnemyVisible[0][2]) DrawEnemyUnitPart2(EnemyRow[0][2]+y,EnemyCol[0][2]+x);
mitko 0:7dfc10b70a77 103 if(EnemyVisible[0][3]) DrawEnemyUnitPart2(EnemyRow[0][3]+y,EnemyCol[0][3]+x);
mitko 0:7dfc10b70a77 104 if(EnemyVisible[0][4]) DrawEnemyUnitPart2(EnemyRow[0][4]+y,EnemyCol[0][4]+x);
mitko 0:7dfc10b70a77 105 if(EnemyVisible[1][0]) DrawEnemyUnitPart2(EnemyRow[1][0]+y,EnemyCol[1][0]+x);
mitko 0:7dfc10b70a77 106 if(EnemyVisible[1][1]) DrawEnemyUnitPart2(EnemyRow[1][1]+y,EnemyCol[1][1]+x);
mitko 0:7dfc10b70a77 107 if(EnemyVisible[1][2]) DrawEnemyUnitPart2(EnemyRow[1][2]+y,EnemyCol[1][2]+x);
mitko 0:7dfc10b70a77 108 if(EnemyVisible[1][3]) DrawEnemyUnitPart2(EnemyRow[1][3]+y,EnemyCol[1][3]+x);
mitko 0:7dfc10b70a77 109 if(EnemyVisible[1][4]) DrawEnemyUnitPart2(EnemyRow[1][4]+y,EnemyCol[1][4]+x);
mitko 0:7dfc10b70a77 110 if(EnemyVisible[2][0]) DrawEnemyUnitPart2(EnemyRow[2][0]+y,EnemyCol[2][0]+x);
mitko 0:7dfc10b70a77 111 if(EnemyVisible[2][1]) DrawEnemyUnitPart2(EnemyRow[2][1]+y,EnemyCol[2][1]+x);
mitko 0:7dfc10b70a77 112 if(EnemyVisible[2][2]) DrawEnemyUnitPart2(EnemyRow[2][2]+y,EnemyCol[2][2]+x);
mitko 0:7dfc10b70a77 113 if(EnemyVisible[2][3]) DrawEnemyUnitPart2(EnemyRow[2][3]+y,EnemyCol[2][3]+x);
mitko 0:7dfc10b70a77 114 if(EnemyVisible[2][4]) DrawEnemyUnitPart2(EnemyRow[2][4]+y,EnemyCol[2][4]+x);
mitko 0:7dfc10b70a77 115 // wait(0.01); // timeout
mitko 0:7dfc10b70a77 116 }
mitko 0:7dfc10b70a77 117 // Check Enemy Kill
mitko 0:7dfc10b70a77 118 void EnemyKill(int By,int Bx,int Ey,int Ex)
mitko 0:7dfc10b70a77 119 {
mitko 0:7dfc10b70a77 120 for(int row=0;row<3;row++)
mitko 0:7dfc10b70a77 121 for(int col=0;col<5;col++)
mitko 0:7dfc10b70a77 122 if( EnemyVisible[row][col] == true and
mitko 0:7dfc10b70a77 123 By >= EnemyRow[row][col]+Ey and By <= EnemyRow[row][col]+Ey+8 and
mitko 0:7dfc10b70a77 124 Bx >= EnemyCol[row][col]+Ex and Bx <= EnemyCol[row][col]+Ex+11
mitko 0:7dfc10b70a77 125 )
mitko 0:7dfc10b70a77 126 {
mitko 0:7dfc10b70a77 127 disp.setPixel(Bx,By,0x0000); // hide current bullet
mitko 0:7dfc10b70a77 128 FireBullet = false; // enable next bullet
mitko 0:7dfc10b70a77 129 EnemyVisible[row][col] = false; // disable killed enemy
mitko 0:7dfc10b70a77 130 DrawBlankUnit(EnemyRow[row][col]+Ey,EnemyCol[row][col]+Ex); // hide killed enemy
mitko 0:7dfc10b70a77 131 }
mitko 0:7dfc10b70a77 132 }
mitko 0:7dfc10b70a77 133
mitko 0:7dfc10b70a77 134 // Player Graphics
mitko 0:7dfc10b70a77 135 unsigned short Player[8][11] =
mitko 0:7dfc10b70a77 136 {
mitko 0:7dfc10b70a77 137 {0x0000,0x0000,0x0000,0x0000,0x0000,0xffff,0x0000,0x0000,0x0000,0x0000,0x0000},
mitko 0:7dfc10b70a77 138 {0x0000,0x0000,0x0000,0x0000,0xffff,0xffff,0xffff,0x0000,0x0000,0x0000,0x0000},
mitko 0:7dfc10b70a77 139 {0x0000,0x0000,0x0000,0x0000,0xffff,0xffff,0xffff,0x0000,0x0000,0x0000,0x0000},
mitko 0:7dfc10b70a77 140 {0x0000,0x0000,0x0000,0x0000,0xffff,0xffff,0xffff,0x0000,0x0000,0x0000,0x0000},
mitko 0:7dfc10b70a77 141 {0x0000,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0x0000},
mitko 0:7dfc10b70a77 142 {0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff},
mitko 0:7dfc10b70a77 143 {0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff},
mitko 0:7dfc10b70a77 144 {0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff},
mitko 0:7dfc10b70a77 145
mitko 0:7dfc10b70a77 146 };
mitko 0:7dfc10b70a77 147 // Draw Player
mitko 0:7dfc10b70a77 148 void DrawPlayer(int Dx,int Dy)
mitko 0:7dfc10b70a77 149 {
mitko 0:7dfc10b70a77 150 DrawBlankUnit(Dx,Dy);
mitko 0:7dfc10b70a77 151 for(int y=0;y<11;y++)
mitko 0:7dfc10b70a77 152 for(int x=0;x<8;x++)
mitko 0:7dfc10b70a77 153 if(Player[x][y] != 0x0000)
mitko 0:7dfc10b70a77 154 disp.setPixel(Dy+y,Dx+x,Player[x][y]);
mitko 0:7dfc10b70a77 155 }
mitko 0:7dfc10b70a77 156
mitko 0:7dfc10b70a77 157 /* Keyboard */
mitko 0:7dfc10b70a77 158 DigitalIn LeftButton(P0_14, PullUp);
mitko 0:7dfc10b70a77 159 DigitalIn RightButton(P0_11, PullUp);
mitko 0:7dfc10b70a77 160 DigitalIn FireButton(P0_1, PullUp);
mitko 0:7dfc10b70a77 161 // DigitalIn FireButton(P0_16, PullUp);
mitko 0:7dfc10b70a77 162 char LEFT = 0, RIGHT = 1, UP = 2, DOWN = 3;
mitko 0:7dfc10b70a77 163
mitko 0:7dfc10b70a77 164 /* Dispplay Splash Screen */
mitko 0:7dfc10b70a77 165 void DisplaySplashScreen()
mitko 0:7dfc10b70a77 166 {
mitko 0:7dfc10b70a77 167 char* info[5] =
mitko 0:7dfc10b70a77 168 {
mitko 0:7dfc10b70a77 169 "Burgas Game Jam 2015",
mitko 0:7dfc10b70a77 170 "Space Inviders Replica",
mitko 0:7dfc10b70a77 171 "by Dimitar Minchev",
mitko 0:7dfc10b70a77 172 "PhD of Informatics",
mitko 0:7dfc10b70a77 173 "Press Fire to Start ..."
mitko 0:7dfc10b70a77 174 };
mitko 0:7dfc10b70a77 175 // info
mitko 0:7dfc10b70a77 176 disp.drawString(10, 10, info[0], 0xffff, 0x0000, 1);
mitko 0:7dfc10b70a77 177 disp.drawString(10, 30, info[1], 0xffff, 0x0000, 1);
mitko 0:7dfc10b70a77 178 disp.drawString(10, 50, info[2], 0xffff, 0x0000, 1);
mitko 0:7dfc10b70a77 179 disp.drawString(10, 70, info[3], 0xffff, 0x0000, 1);
mitko 0:7dfc10b70a77 180 disp.drawString(10, 90, info[4], 0xffff, 0x0000, 1);
mitko 0:7dfc10b70a77 181 // wait keypress
mitko 0:7dfc10b70a77 182 while (FireButton) wait_ms(1);
mitko 0:7dfc10b70a77 183 disp.clear();
mitko 0:7dfc10b70a77 184 }
mitko 0:7dfc10b70a77 185 // YouWin
mitko 0:7dfc10b70a77 186 void DisplayYouWin()
mitko 0:7dfc10b70a77 187 {
mitko 0:7dfc10b70a77 188 disp.clear();
mitko 0:7dfc10b70a77 189 disp.drawString(10, 50, "You Win", 0xffff, 0x0000, 2);
mitko 0:7dfc10b70a77 190 while(true) wait_ms(1); // forever until restart
mitko 0:7dfc10b70a77 191 }
mitko 0:7dfc10b70a77 192 // GameOver
mitko 0:7dfc10b70a77 193 void DisplayGameOver()
mitko 0:7dfc10b70a77 194 {
mitko 0:7dfc10b70a77 195 disp.clear();
mitko 0:7dfc10b70a77 196 disp.drawString(10, 50, "Game Over", 0xffff, 0x0000, 2);
mitko 0:7dfc10b70a77 197 while(true) wait_ms(1); // forever until restart
mitko 0:7dfc10b70a77 198 }
mitko 0:7dfc10b70a77 199
mitko 0:7dfc10b70a77 200
mitko 0:7dfc10b70a77 201 // Main function
mitko 0:7dfc10b70a77 202 main()
mitko 0:7dfc10b70a77 203 {
mitko 0:7dfc10b70a77 204 // Start
mitko 0:7dfc10b70a77 205 DisplaySplashScreen();
mitko 0:7dfc10b70a77 206
mitko 0:7dfc10b70a77 207 // vars
mitko 0:7dfc10b70a77 208 bool MoveRight = true; // Movement Direction
mitko 0:7dfc10b70a77 209 int Ex = 0, Ey = 0; // Enemies Coordinates
mitko 0:7dfc10b70a77 210 int Px = 75, Py = 120; // Player Coordinates
mitko 0:7dfc10b70a77 211 int Bx = 80, By = 120; // Bullet Coordinates
mitko 0:7dfc10b70a77 212
mitko 0:7dfc10b70a77 213 // Initialize Emeny Visibility
mitko 0:7dfc10b70a77 214 for(int row=0;row<3;row++) for(int col=0;col<5;col++) EnemyVisible[row][col] = true;
mitko 0:7dfc10b70a77 215
mitko 0:7dfc10b70a77 216 // the loop
mitko 0:7dfc10b70a77 217 while (true)
mitko 0:7dfc10b70a77 218 {
mitko 0:7dfc10b70a77 219 // Buttons
mitko 0:7dfc10b70a77 220 int LeftButtonState = LeftButton.read();
mitko 0:7dfc10b70a77 221 if( LeftButtonState == 0 ) Px -= 5;
mitko 0:7dfc10b70a77 222 int RightButtonState = RightButton.read();
mitko 0:7dfc10b70a77 223 if( RightButtonState == 0 ) Px += 5;
mitko 0:7dfc10b70a77 224 int FireButtonState = FireButton.read();
mitko 0:7dfc10b70a77 225 if(FireButtonState == 0 && FireBullet == false)
mitko 0:7dfc10b70a77 226 {
mitko 0:7dfc10b70a77 227 Bx = Px + 5;
mitko 0:7dfc10b70a77 228 By = Py;
mitko 0:7dfc10b70a77 229 FireBullet = true;
mitko 0:7dfc10b70a77 230 }
mitko 0:7dfc10b70a77 231
mitko 0:7dfc10b70a77 232 // Draw Enemies
mitko 0:7dfc10b70a77 233 DrawEnemies(Ey,Ex);
mitko 0:7dfc10b70a77 234
mitko 0:7dfc10b70a77 235 // Draw Player
mitko 0:7dfc10b70a77 236 DrawPlayer(Py,Px);
mitko 0:7dfc10b70a77 237
mitko 0:7dfc10b70a77 238 // Bullet Movement
mitko 0:7dfc10b70a77 239 if(FireBullet)
mitko 0:7dfc10b70a77 240 {
mitko 0:7dfc10b70a77 241 disp.setPixel(Bx,By,0x0000);
mitko 0:7dfc10b70a77 242 By = By - 5;
mitko 0:7dfc10b70a77 243 disp.setPixel(Bx,By,0xffff);
mitko 0:7dfc10b70a77 244 }
mitko 0:7dfc10b70a77 245 if(By <= 10) // Remove bulet if it is outside
mitko 0:7dfc10b70a77 246 {
mitko 0:7dfc10b70a77 247 disp.setPixel(Bx,By,0x0000);
mitko 0:7dfc10b70a77 248 By = Py;
mitko 0:7dfc10b70a77 249 FireBullet = false;
mitko 0:7dfc10b70a77 250 }
mitko 0:7dfc10b70a77 251
mitko 0:7dfc10b70a77 252 // Check if bullet hit enemy
mitko 0:7dfc10b70a77 253 if(FireBullet) EnemyKill(By,Bx,Ey,Ex);
mitko 0:7dfc10b70a77 254
mitko 0:7dfc10b70a77 255 // Enemies Movement
mitko 0:7dfc10b70a77 256 if(Ex>=60 || Ex<=-6)
mitko 0:7dfc10b70a77 257 {
mitko 0:7dfc10b70a77 258 for(int row=10;row<=30;row+=10)
mitko 0:7dfc10b70a77 259 for(int col=10;col<=90;col+=20)
mitko 0:7dfc10b70a77 260 DrawBlankUnit(row+Ey,col+Ex);
mitko 0:7dfc10b70a77 261 Ey += 10;
mitko 0:7dfc10b70a77 262 }
mitko 0:7dfc10b70a77 263 if(Ex>=60) MoveRight = false;
mitko 0:7dfc10b70a77 264 if(Ex<=-6) MoveRight = true;
mitko 0:7dfc10b70a77 265 if(MoveRight) Ex++;
mitko 0:7dfc10b70a77 266 else Ex--;
mitko 0:7dfc10b70a77 267
mitko 0:7dfc10b70a77 268 // Check Win or Lose
mitko 0:7dfc10b70a77 269 bool win = true;
mitko 0:7dfc10b70a77 270 for(int row=0;row<3;row++) for(int col=0;col<5;col++) if(EnemyVisible[row][col] == true) win = false;
mitko 0:7dfc10b70a77 271 if(win) DisplayYouWin();
mitko 0:7dfc10b70a77 272 if(Ey >= 120) DisplayGameOver();
mitko 0:7dfc10b70a77 273 }
mitko 0:7dfc10b70a77 274 }