Jahanzeb Ahmed Khan 201375614

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers body.cpp Source File

body.cpp

00001 #include "body.h"
00002 
00003 Body::Body()
00004 {
00005 }
00006 Body::~Body()
00007 {
00008 }
00009 
00010 void Body::init()
00011 {
00012     sx0 = 12;
00013     sx1 = 13;
00014     sx2 = 14;
00015     sx3 = 15;
00016     sx4 = 16;
00017     sx5 = 17;
00018     sx6 = 18;
00019     sx8 = 19;
00020     sx9 = 20;
00021     
00022     sy0 = 6;
00023     sy1 = 6;
00024     sy2 = 6;
00025     sy3 = 6;
00026     sy4 = 6;
00027     sy5 = 6;
00028     sy6 = 6;
00029     sy7 = 6;
00030     sy8 = 6;
00031     sy9 = 6;
00032     
00033     score = 0;
00034     endgame = false;
00035     input_check = Button_right;
00036 }
00037 
00038 void Body::game_end(N5110 &lcd){
00039     if (21 < sx0 < 63){/**If snake hits vertical line*/
00040         if (sy0 == 24){
00041             endgame = true;
00042         }
00043     }
00044     if (12 < sy0 < 36){/**if snake hits horizontal line*/
00045         if (sx0 == 42){
00046             endgame = true;
00047         }
00048     }
00049     if ((sx0 == sx1 && sy0 == sy1) || (sx0 == sx2 && sy0 == sy2) || (sx0 == sx3 && sy0 == sy3) || (sx0 == sx4 && sy0 == sy4) || (sx0 == sx5 && sy0 == sy5) || (sx0 == sx6 && sy0 == sy6) || (sx0 == sx7 && sy0 == sy7) || (sx0 == sx8 && sy0 == sy8) || (sx0 == sx9 && sy0 == sy9))
00050     {
00051         endgame = true;
00052     }
00053 }
00054 
00055 void Body::visual(N5110 &lcd, Gamepad &pad, Food &food)
00056 {
00057     lcd.clear();
00058     
00059     char buffer[12];
00060     sprintf(buffer,"Score = %2d", score);
00061     lcd.printString(buffer,0,1);
00062     
00063     lcd.setPixel(food.fo_x, food.fo_y, true);
00064     
00065     lcd.drawLine(21,24,63,24,1);
00066     lcd.drawLine(42,12,42,36,1);
00067     
00068     lcd.setPixel(sx0, sy0, true);
00069     lcd.setPixel(sx1, sy1, true);
00070     lcd.setPixel(sx2, sy2, true);
00071     lcd.setPixel(sx3, sy3, true);
00072     lcd.setPixel(sx4, sy4, true);
00073     lcd.setPixel(sx5, sy5, true);
00074     lcd.setPixel(sx6, sy6, true);
00075     lcd.setPixel(sx7, sy7, true);
00076     lcd.setPixel(sx8, sy8, true);
00077     lcd.setPixel(sx9, sy9, true);
00078     
00079     if (endgame == true){
00080         lcd.clear();
00081         pad.tone(1500.0,1.0);
00082         
00083         lcd.drawRect(10,5,64,38,FILL_TRANSPARENT);
00084         lcd.printString("YOU DIED", 21, 2);
00085         char buffer2[12];
00086         sprintf(buffer2,"you got %2d", score);
00087     }
00088     
00089     lcd.refresh();
00090 }
00091 
00092 void Body::user_input(Gamepad &pad)
00093 {
00094         Input input = input_check;
00095         
00096         if(input != Button_left){
00097             if(pad.A_pressed()){
00098                 input_check = Button_right;
00099             }
00100         }
00101         if(input != Button_right){
00102             if(pad.Y_pressed()){
00103                 input_check = Button_left;
00104             }
00105         }
00106         if(input != Button_top){
00107             if(pad.B_pressed()){
00108                 input_check = Button_bottom;
00109             }
00110         }
00111         if(input != Button_bottom){
00112             if(pad.X_pressed()){
00113                 input_check = Button_top;
00114             }
00115         }
00116         else{
00117             input_check = input_check;
00118         }
00119 }
00120 
00121 bool Body::endgame_check()
00122 {
00123     return endgame;
00124 }
00125 
00126 void Body::food_eaten(N5110 &lcd, Gamepad &pad, Food &food)
00127 {
00128     if ((sx0 == food.fo_x) && (sy0 == food.fo_y))
00129     {
00130         score = score + 1;
00131         food.chng_food = true;
00132         pad.led(1,1);
00133         wait(0.2);
00134         pad.led(2,1);
00135         wait(0.2);
00136         pad.led(3,1);
00137         wait(0.2);
00138         pad.led(4,1);
00139         wait(0.2);
00140         pad.led(5,1);
00141         wait(0.2);
00142         pad.led(6,1);
00143         wait(0.2);
00144         pad.led(1,0);
00145         wait(0.2);
00146         pad.led(2,0);
00147         wait(0.2);
00148         pad.led(3,0);
00149         wait(0.2);
00150         pad.led(4,0);
00151         wait(0.2);
00152         pad.led(5,0);
00153         wait(0.2);
00154         pad.led(6,0);
00155     }
00156 }
00157 
00158 int Body::score_display()
00159 {
00160     return score;
00161 }
00162 
00163 void Body::movement(){
00164     if (input_check == Button_top){
00165         sx9 = sx8;
00166         sx8 = sx7;
00167         sx7 = sx6;
00168         sx6 = sx5;
00169         sx5 = sx4;
00170         sx4 = sx3;
00171         sx3 = sx2;
00172         sx2 = sx1;
00173         sx1 = sx0;
00174         sy9 = sy8;
00175         sy8 = sy7;
00176         sy7 = sy6;
00177         sy6 = sy5;
00178         sy5 = sy4;
00179         sy4 = sy3;
00180         sy2 = sy2;
00181         sy2 = sy1;
00182         sy1 = sy0;    
00183         
00184         sx0 = sx0;
00185         sy0 = sy0 - 1;
00186         
00187     }
00188     if (input_check == Button_right){
00189         sx9 = sx8;
00190         sx8 = sx7;
00191         sx7 = sx6;
00192         sx6 = sx5;
00193         sx5 = sx4;
00194         sx4 = sx3;
00195         sx3 = sx2;
00196         sx2 = sx1;
00197         sx1 = sx0;
00198         sy9 = sy8;
00199         sy8 = sy7;
00200         sy7 = sy6;
00201         sy6 = sy5;
00202         sy5 = sy4;
00203         sy4 = sy3;
00204         sy2 = sy2;
00205         sy2 = sy1;
00206         sy1 = sy0;    
00207         
00208         sx0 = sx0 + 1;
00209         sy0 = sy0;
00210     }
00211     if (input_check == Button_bottom){
00212         sx9 = sx8;
00213         sx8 = sx7;
00214         sx7 = sx6;
00215         sx6 = sx5;
00216         sx5 = sx4;
00217         sx4 = sx3;
00218         sx3 = sx2;
00219         sx2 = sx1;
00220         sx1 = sx0;
00221         sy9 = sy8;
00222         sy8 = sy7;
00223         sy7 = sy6;
00224         sy6 = sy5;
00225         sy5 = sy4;
00226         sy4 = sy3;
00227         sy2 = sy2;
00228         sy2 = sy1;
00229         sy1 = sy0;    
00230         
00231         sx0 = sx0 + 1;
00232         sy0 = sy0;
00233     }
00234     if (input_check == Button_left){
00235         sx9 = sx8;
00236         sx8 = sx7;
00237         sx7 = sx6;
00238         sx6 = sx5;
00239         sx5 = sx4;
00240         sx4 = sx3;
00241         sx3 = sx2;
00242         sx2 = sx1;
00243         sx1 = sx0;
00244         sy9 = sy8;
00245         sy8 = sy7;
00246         sy7 = sy6;
00247         sy6 = sy5;
00248         sy5 = sy4;
00249         sy4 = sy3;
00250         sy2 = sy2;
00251         sy2 = sy1;
00252         sy1 = sy0;    
00253         
00254         sx0 = sx0 + 1;
00255         sy0 = sy0;
00256     }
00257     if (sy0 == 0)
00258     {
00259         sy0 = 41;
00260     }
00261     if (sy0 == 42)
00262     {
00263         sy0 = 1;
00264     }
00265     if (sx0 == 0)
00266     {
00267         sy0 = 83;
00268     }
00269     if (sx0 == 84)
00270     {
00271         sy0 = 1;
00272     }
00273 }
00274  
00275  void Body::trail_delete(N5110 &lcd)
00276  {
00277     lcd.setPixel(sx9,sy9,false);
00278 }   
00279