Arnav Jindia / Mbed 2 deprecated Missile_Control_Game

Dependencies:   4DGL-uLCD-SE SDFileSystem mbed wave_player

Fork of missile_command by ECE 2035 TA

Files at this revision

API Documentation at this revision

Comitter:
ajindia6
Date:
Tue Oct 20 19:13:03 2015 +0000
Parent:
1:3da29f1d84b4
Commit message:
Mbed Mission Control Game

Changed in this revision

city_landscape/city_landscape.cpp Show annotated file Show diff for this revision Revisions of this file
city_landscape/city_landscape_private.h Show annotated file Show diff for this revision Revisions of this file
city_landscape/city_landscape_public.h Show annotated file Show diff for this revision Revisions of this file
globals.h Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
missile/missile.cpp Show annotated file Show diff for this revision Revisions of this file
missile/missile_private.h Show annotated file Show diff for this revision Revisions of this file
missile/missile_public.h Show annotated file Show diff for this revision Revisions of this file
player.cpp Show annotated file Show diff for this revision Revisions of this file
player.h Show annotated file Show diff for this revision Revisions of this file
--- 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