Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: 4DGL-uLCD-SE SDFileSystem mbed wave_player
Fork of missile_command by
Revision 2:eba4ed0263a4, committed 2015-10-20
- Comitter:
- ajindia6
- Date:
- Tue Oct 20 19:13:03 2015 +0000
- Parent:
- 1:3da29f1d84b4
- Commit message:
- Mbed Mission Control Game
Changed in this revision
--- a/city_landscape/city_landscape.cpp Wed Oct 29 02:58:53 2014 +0000 +++ b/city_landscape/city_landscape.cpp Tue Oct 20 19:13:03 2015 +0000 @@ -1,25 +1,3 @@ -/* Gatech ECE2035 2014 FALL missile command - * Copyright (c) 2014 Gatech ECE2035 - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - #include "city_landscape_private.h" CITY city_record[MAX_NUM_CITY];
--- a/city_landscape/city_landscape_private.h Wed Oct 29 02:58:53 2014 +0000 +++ b/city_landscape/city_landscape_private.h Tue Oct 20 19:13:03 2015 +0000 @@ -1,24 +1,3 @@ -/* Gatech ECE2035 2014 FALL missile command - * Copyright (c) 2014 Gatech ECE2035 - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ #ifndef CITY_LANDSCAPE_PRIVATE_H #define CITY_LANDSCAPE_PRIVATE_H
--- a/city_landscape/city_landscape_public.h Wed Oct 29 02:58:53 2014 +0000 +++ b/city_landscape/city_landscape_public.h Tue Oct 20 19:13:03 2015 +0000 @@ -1,25 +1,3 @@ -/* Gatech ECE2035 2014 FALL missile command - * Copyright (c) 2014 Gatech ECE2035 - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -/** @file city_landscape_public.h */ #ifndef CITY_LANDSCAPE_PUBLIC_H #define CITY_LANDSCAPE_PUBLIC_H
--- a/globals.h Wed Oct 29 02:58:53 2014 +0000 +++ b/globals.h Tue Oct 20 19:13:03 2015 +0000 @@ -1,24 +1,3 @@ -/* Gatech ECE2035 2014 FALL missile command - * Copyright (c) 2014 Gatech ECE2035 - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ #ifndef GLOBAL_H #define GLOBAL_H
--- a/main.cpp Wed Oct 29 02:58:53 2014 +0000
+++ b/main.cpp Tue Oct 20 19:13:03 2015 +0000
@@ -1,26 +1,3 @@
-/* Gatech ECE2035 2014 FALL missile command
- * Copyright (c) 2014 Gatech ECE2035
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-/** @file main.cpp */
-// Include header files for platform
#include "mbed.h"
#include "uLCD_4DGL.h"
#include "wave_player.h"
@@ -34,23 +11,114 @@
#include "player.h"
// Platform initialization
-DigitalIn left_pb(p23); DigitalIn right_pb(p21); DigitalIn fire_pb(p22);
+DigitalIn left_pb(p23); DigitalIn right_pb(p21); DigitalIn fire_pb(p22); DigitalIn reset_pb(p24);
uLCD_4DGL uLCD(p28,p27,p29);
AnalogOut DACout(p18);
wave_player waver(&DACout);
SDFileSystem sd(p5, p6, p7, p8, "sd"); // mosi, miso, sck, cs
-// Example of the decleration of your implementation
+
void playSound(char * wav);
+//Initialize variables
+PLAYER_MISSILE missileArr [5];
+PLAYER player;
+int radius = 10;
+int missileCount = 5;
+
+
-/** Main() is where you start your implementation
- @brief The hints of implementation are in the comments. <br>
- @brief You are expected to implement your code in main.cpp and player.cpp. But you could modify any code if you want to make the game work better.
-*/
-int main()
-{
- // [Demo of 7-segment display]
- // 1.Initialize the segment display
+//draw the anti missile
+void player_missile_draw(PLAYER_MISSILE missile, int color) {
+
+ int init_x, init_y, current_x, current_y;
+ init_x = missile.source_x;
+ init_y = 96;
+ current_x = init_x;
+ current_y = missile.y;
+ uLCD.line(init_x, init_y, current_x, current_y, color);
+ }
+ // create the anti missile
+ void player_missile_create(void){
+ int z;
+ for(z=0;z<5;z++){
+ if(missileArr[z].status == PLAYER_MISSILE_DEACTIVE){
+ missileArr[z].y = 96;
+ //each missile has its own tick
+
+ //set a random source for the missile
+ missileArr[z].source_x = player.x + 5;
+ //set a random target for the missile
+ missileArr[z].origin_y = 96;
+ //the missile starts at its source
+
+ missileArr[z].status = PLAYER_MISSILE_ACTIVE;
+ break;
+ }
+ }
+}
+
+
+
+void player_missile_update_position(void){
+ int b;
+ //controls how fast the missile will move
+
+ //delta_x and delta_y account for the slope of the missile
+ double delta_y;
+ for(b=0;b<5;b++){
+ if(missileArr[b].status == PLAYER_MISSILE_ACTIVE){
+ // update missile position
+ delta_y = 5;
+
+
+ missileArr[b].y = missileArr[b].y - delta_y;
+
+
+ // draw missile
+ player_missile_draw(missileArr[b], PLAYER_COLOR);
+ }
+ if(missileArr[b].y < 0) {
+
+ player_missile_draw(missileArr[b], BLACK_COLOR );
+ missileArr[b].status = PLAYER_MISSILE_DEACTIVE;
+
+
+
+ }
+ else if(missileArr[b].status == PLAYER_MISSILE_EXPLODED){
+ // clear the missile on the screen
+ player_missile_draw(missileArr[b], BLACK_COLOR);
+
+
+ // we have done with this missile, remove it from record
+ missileArr[b].status = PLAYER_MISSILE_DEACTIVE;
+ //resets the missile's internal tick
+ missileCount = missileCount + 1;
+
+
+ }
+ }
+
+ }
+
+void player_set_exploded(int index){
+ // Error check
+ ASSERT_P(index<MAX_NUM_MISSILE,ERROR_MISSILE_INDEX_UPDATE_STATUS);
+
+ missileArr[index].status = PLAYER_MISSILE_EXPLODED;
+ missileCount = missileCount + 1;
+}
+
+
+
+
+int main() {
+
+ uLCD.locate(0, 0);
+ //uLCD.printf("Lvl:", level());
+ //uLCD.printf("Score: %2d", s);
+ //uLCD.prinf("Missiles: ",
+ //uLCD.printf("Lives: ",
setup_sequence();
seg_driver_initialize();
// 2.show numbers
@@ -60,66 +128,236 @@
wait(0.2);
}
- // [Demo of play sound file]
+
playSound("/sd/wavfiles/BUZZER.wav");
- /// [Example of missile command implementation]
- /// Here is a rough flow to implement the missile command: <br><br>
- /// 1.Initialize and draw the city landscape
+ // Draw cities
city_landscape_init(4);
// Initialize the buttons
left_pb.mode(PullUp); // The variable left_pb will be zero when the pushbutton for moving the player left is pressed
right_pb.mode(PullUp); // The variable rightt_pb will be zero when the pushbutton for moving the player right is pressed
fire_pb.mode(PullUp); //the variable fire_pb will be zero when the pushbutton for firing a missile is pressed
+ reset_pb.mode(PullUp);
- /// 2.Begin the game loop
+ ///Begin the game loop
+
+ player.x = 60;
+ player_draw(player.x,100);
+ int d, w, l;
+ int s = 0;
+ int cityCount = 4;
+ int lives = 3;
+
+
while(1){
- /// 3.Example of drawing the player
- player_draw(60,100); // draws a player at the center of the screen
+
+ //print Score and Lives
+ uLCD.locate(0,0);
+ uLCD.color(0x00FF00);
+ uLCD.printf("Score: %2d \n", s);
+ uLCD.printf("Lives: %2d" , lives);
- /// 4.Example of calling the missile API.
- missile_generator(); /// It updates all incoming missiles on the screen
+ if (reset_pb == 0) {
+ while(1) {
+ wait(1);
+ if(reset_pb == 0) {
+ break;
+ }
+ }
+ }
+
- /// 5.Implement the code to get user input and update the player
- /// -[Hint] You could see city_landscape.cpp to get some ideas about how to implement your player. <br>
- if(left_pb == 0){
- /// -[Hint] Implement the code to move player left <br>
+ //If all 4 pushbuttons are pressed, jump to next level
+ if (((left_pb == 0) && (right_pb == 0) && (fire_pb == 0) && (reset_pb == 0))) {
+ while(1) {
+ uLCD.filled_rectangle(0, 0, 128, 128, 0x000000);
+ uLCD.locate(4, 5);
+ uLCD.printf("Level 2!! \n \n");
+ uLCD.printf("Incoming missiles are faster!");
+
+ wait(5);
+ uLCD.locate(4,5);
+ uLCD.color(0x000000);
+ uLCD.printf("Level 2!! \n \n");
+ uLCD.printf("Incoming missiles are faster!");
+ break;
+ }
+ city_landscape_init(4);
+ set_missile_speed(3);
+ player_draw(player.x,100);
+
+ }
+
+ missileCount = 5;
+ for(l = 0; l<5; l++) {
+ if(missileArr[l].status == PLAYER_MISSILE_ACTIVE) {
+ missileCount = missileCount - 1;
+ }
+ seg_driver(missileCount);
+ }
+
+
+
+
+
+ missile_generator(); /// updates all incoming missiles on the screen
+
+
+ if(left_pb == 0 && player.x>0){
+ //Move player left
+ player_draw(player.x,100);
+ player_delete(player.x,100);
+ player.x = player.x - 10;
+ player_draw(player.x,100);
+
}
- if(right_pb == 0){
- /// -[Hint] Implement the code to move player right <br>
+ if(right_pb == 0 && player.x<110){
+ //Move player right
+ player_draw(player.x,100);
+ player_delete(player.x,100);
+ player.x = player.x + 10;
+ player_draw(player.x,100);
}
if(fire_pb == 0){
- /// -[Hint] Implement the code to fire player-missile <br>
+
+
+ //fire missile and make laser sound
+ player_missile_create();
+
+ //
+ playSound("/sd/wavfiles/LASER.wav");
+ }
+ player_missile_update_position();
- // [Demo of play sound file]
- playSound("/sd/wavfiles/BUZZER.wav");
+ //missile-player collision
+ for ( int p=0; p<5; p++) {
+ MISSILE missile_record = missile_get_info(p);
+
+ int q,w, r, t;
+ q = player.x + 10;
+ w = 100;
+ r = player.x;
+ t = 96;
+ if((missile_record.x > r & missile_record.x<q) & (missile_record.y<w & missile_record.y>t & (missile_record.status==MISSILE_ACTIVE))) {
+ lives -= 1;
+ missile_set_exploded(p);
+ wait(1);
+ if(lives == 0) {
+ gameover(s);
+
+ break;
+ }
+
+ for(int j=0; j<11; j=j+3) {
+ uLCD.circle(missile_record.x, missile_record.y, j, YELLOW_COLOR);
+ uLCD.circle(missile_record.x, missile_record.y, j, BLACK_COLOR);
+
+
+ }
+
+
}
-
- /// 6.Implement the code to draw a user missile
- /// -[Hint] You could see missile.cpp or missile_generator() for your reference <br>
-
- /// 7.Implement the code to detect the collision between missiles and cities
- /// -[Hint] You could use city_get_info() and missile_get_info() <br>
- /// -[Hint] You could use missile_set_exploded() to notify the missile module that the missile was exploded. <br>
- /// -[Hint] You need to check which city was hit by the missile, and call city_destroy() to destroy it. <br>
- /// -[Hint] You might also check whether the missile hit the land <br>
-
- /// 8.Implement the code to detect a collision between player-missiles and incoming missiles
- /// -[Hint] You could use missile_get_info() to get the position of incoming missile <br>
- /// -[Hint] You could use missile_set_exploded() to notify the missile module that the missile was exploded. <br>
- /// -[Hint] You might also check whether the missile hit the player <br>
-
- /// 9.Implement the code to check the end of game
- /// -[Hint] For example, if there is no more city, it should be gameover. <br>
-
}
-}
+
+
+
+ //missile-city collision
+ for ( int e=0; e<5; e++) {
+ MISSILE missile_record = missile_get_info(e);
+ for (int d = 0; d<5; d++) {
+ CITY city_record = city_get_info(d);
+ int f, g, h, i;
+ f = city_record.x + city_record.width;
+ g = city_record.y - city_record.height;
+ h = city_record.x;
+ i = city_record.y;
+ if((missile_record.x > h & missile_record.x<f) & (missile_record.y<i & missile_record.y>g) & (city_record.status == EXIST)) {
+ for(int j=0; j<11; j=j+3) {
+ uLCD.circle(missile_record.x, missile_record.y, j, YELLOW_COLOR);
+ uLCD.circle(missile_record.x, missile_record.y, j, BLACK_COLOR);
+
+
+ }
+ missile_set_exploded(e);
+ city_destroy(d);
+ cityCount = cityCount -1;
+ if(cityCount == 0) {
+ gameover(s);
+ }
+
+ break;
+
+ }
+
+ }
+
+
+ }
+
+
+
+
+
+ //missile-player_missile collision
+ for(d=0; d<5; d++) {
+ for(w=0; w<5; w++) {
+ MISSILE missile_record = missile_get_info(w);
+ double f;
+ f = (int)sqrt(pow((double)(missile_record.x-missileArr[d].source_x),2.0) + pow((double)(missile_record.y-missileArr[d].y),2.0));
+
+ if((f<radius) && (missile_record.status == MISSILE_ACTIVE) && (missileArr[d].status== PLAYER_MISSILE_ACTIVE)) {
+ for (int j=0; j< (radius+1); j = j+3) {
+ uLCD.circle(missile_record.x, missile_record.y, j, 0xFFFF00);
+
+ }
+ for (int j=0; j<(radius+1); j=j+3) {
+ uLCD.circle(missile_record.x, missile_record.y, j, BLACK_COLOR);
+
+ }
+ missile_set_exploded(w);
+
+ player_set_exploded(d);
+ playSound("/sd/wavfiles/hit.wav");
+ s= s+1;
+
+ if (s==10 ) {
+ while(1) {
+ uLCD.filled_rectangle(0, 0, 128, 128, 0x000000);
+ uLCD.locate(4, 5);
+ uLCD.printf("Level 2!! \n \n");
+ uLCD.printf("Incoming missiles are faster!");
+
+ wait(5);
+ uLCD.locate(4,5);
+ uLCD.color(0x000000);
+ uLCD.printf("Level 2!! \n \n");
+ uLCD.printf("Incoming missiles are faster!");
+ break;
+ }
+ city_landscape_init(4);
+ set_missile_speed(3);
+ player_draw(player.x,100);
+
+ }
+
+
+ }
+
+ }
+
+ }
+
+
+
+
+ }
+ }
-// Example of implementation of your functions
-void playSound(char * wav)
-{
+
+
+void playSound(char * wav) {
// open wav file
FILE *wave_file;
wave_file=fopen(wav,"r");
@@ -130,3 +368,4 @@
// close wav file
fclose(wave_file);
}
+
--- a/missile/missile.cpp Wed Oct 29 02:58:53 2014 +0000 +++ b/missile/missile.cpp Tue Oct 20 19:13:03 2015 +0000 @@ -1,25 +1,3 @@ -/* Gatech ECE2035 2014 FALL missile command - * Copyright (c) 2014 Gatech ECE2035 - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - #include "missile_private.h" MISSILE missile_record[MAX_NUM_MISSILE];
--- a/missile/missile_private.h Wed Oct 29 02:58:53 2014 +0000 +++ b/missile/missile_private.h Tue Oct 20 19:13:03 2015 +0000 @@ -1,24 +1,3 @@ -/* Gatech ECE2035 2014 FALL missile command - * Copyright (c) 2014 Gatech ECE2035 - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ #ifndef MISSILE_PRIVATE_H #define MISSILE_PRIVATE_H
--- a/missile/missile_public.h Wed Oct 29 02:58:53 2014 +0000
+++ b/missile/missile_public.h Tue Oct 20 19:13:03 2015 +0000
@@ -1,25 +1,3 @@
-/* Gatech ECE2035 2014 FALL missile command
- * Copyright (c) 2014 Gatech ECE2035
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-/** @file missile_public.h */
#ifndef MISSILE_PUBLIC_H
#define MISSILE_PUBLIC_H
@@ -30,6 +8,7 @@
MISSILE_DEACTIVE=0///<missile is no longer active
} MISSILE_STATUS;
+
/// The structure to store the information of a missile
typedef struct {
int x; ///< The x-coordinate of missile current position
@@ -67,4 +46,6 @@
*/
void set_missile_interval(int interval);
+void missile_draw(MISSILE missile, int color);
+
#endif //MISSILE_PUBLIC_H
\ No newline at end of file
--- a/player.cpp Wed Oct 29 02:58:53 2014 +0000
+++ b/player.cpp Tue Oct 20 19:13:03 2015 +0000
@@ -1,37 +1,54 @@
-/* Gatech ECE2035 2014 FALL missile command
- * Copyright (c) 2014 Gatech ECE2035
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-// Template of player implementation
#include "mbed.h"
#include "uLCD_4DGL.h"
#include "globals.h"
#include "player.h"
-// Example of drawing the player
+//Initialize antimissile status
+PLAYER_MISSILE_STATUS status;
+
+
+
+
+
+//Function to draw the player
void player_draw(int x, int y) {
- uLCD.filled_rectangle(x, y, x+PLAYER_WIDTH, y+PLAYER_HEIGHT, PLAYER_COLOR);
- uLCD.filled_rectangle(x+PLAYER_DELTA, y-PLAYER_DELTA, x+PLAYER_WIDTH-PLAYER_DELTA, y+PLAYER_HEIGHT, PLAYER_COLOR);
+ uLCD.filled_rectangle(x, y, x+PLAYER_WIDTH, y+PLAYER_HEIGHT, 0xFFA500);
+ uLCD.filled_rectangle(x+PLAYER_DELTA, y-PLAYER_DELTA, x+PLAYER_WIDTH-PLAYER_DELTA, y+PLAYER_HEIGHT, 0xFF0000);
+ uLCD.filled_rectangle(x,y, x+PLAYER_WIDTH/4, y+2+PLAYER_HEIGHT, 0xFFA500);
+ uLCD.filled_rectangle(x+8, y, x+PLAYER_WIDTH, y+2+PLAYER_HEIGHT, 0xFFA500);
+}
+
+//Function to delete player
+void player_delete(int x, int y) {
+ uLCD.filled_rectangle(x, y, x+PLAYER_WIDTH, y+PLAYER_HEIGHT, BLACK_COLOR);
+ uLCD.filled_rectangle(x+PLAYER_DELTA, y-PLAYER_DELTA, x+PLAYER_WIDTH-PLAYER_DELTA, y+PLAYER_HEIGHT, BLACK_COLOR);
+ uLCD.filled_rectangle(x,y, x+PLAYER_WIDTH/4, y+2+PLAYER_HEIGHT, BLACK_COLOR);
+ uLCD.filled_rectangle(x+8, y, x+PLAYER_WIDTH, y+2+PLAYER_HEIGHT, BLACK_COLOR);
}
-// ... You need to implement your own functions for player ...
+void gameover(int s) {
+
+ while(1) {
+ uLCD.filled_rectangle(0, 0, 128, 128, 0x000000);
+ uLCD.locate(4, 5);
+ uLCD.printf("GAME OVER \n \n");
+ uLCD.printf("YOUR SCORE WAS:%2d",s);
+ wait(1);
+ }
+
+ }
+
+
+
+
+
+
+
+
+
+
+
+
+
--- a/player.h Wed Oct 29 02:58:53 2014 +0000
+++ b/player.h Tue Oct 20 19:13:03 2015 +0000
@@ -1,41 +1,50 @@
-/* Gatech ECE2035 2014 FALL missile command
- * Copyright (c) 2014 Gatech ECE2035
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
// Template of player header file
#ifndef PLAYER_H
#define PLAYER_H
-// Example of some player settings
+// Player settings
#define PLAYER_WIDTH 10
#define PLAYER_HEIGHT 3
#define PLAYER_DELTA 3
#define PLAYER_COLOR 0x0000FF
+#define BLACK_COLOR 0x000000
+#define YELLOW_COLOR 0xFFFF00
+#define GREEN_COLOR 0x00FF00
+
+
-/** Get the information of city
- @brief x and y are the top left corner of the player drawing
- @param x x-coordinate
- @param y y-coordinate
-*/
+typedef enum {
+ PLAYER_MISSILE_EXPLODED=2,///<missile has been destroyed
+ PLAYER_MISSILE_ACTIVE=1,///<missile is active
+ PLAYER_MISSILE_DEACTIVE=0///<missile is no longer active
+} PLAYER_MISSILE_STATUS;
+//Initialize ANTI-missile structure
+
+typedef struct {
+ int x;
+ int origin_y; ///< The x-coordinate of missile current position
+ int y; ///< The y-coordinate of missile current position
+ int source_x;
+ int source_y;
+ PLAYER_MISSILE_STATUS status; ///< The missile status, see MISSILE_STATUS
+
+} PLAYER_MISSILE;
+//Initialize PLAYER structure
+typedef struct {
+ int x;
+ int y;
+ int numMissile;
+ int lives;
+
+
+ } PLAYER;
+//Declare functions
+void player_missile_draw(PLAYER_MISSILE player_missile, int color);
void player_draw(int x, int y);
+void player_delete(int x, int y);
+void missile_start(int counter);
+void player_set_exploded(int index);
+void gameover(int s);
#endif //PLAYER_H
\ No newline at end of file
