Balint Bogdan 2645 project, 200966741

Dependents:   2645Game_el15bb

Committer:
Nefos
Date:
Fri May 05 11:55:34 2017 +0000
Revision:
2:5e04e34a3b66
Parent:
1:93a4cb86f100
Child:
3:b24ef00836c5
food class has been made, snake can die

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Nefos 0:2eb4d7e86e2f 1 #include "Snake.h"
Nefos 0:2eb4d7e86e2f 2
Nefos 0:2eb4d7e86e2f 3
Nefos 2:5e04e34a3b66 4 #define WIDTH 84
Nefos 2:5e04e34a3b66 5 #define HEIGHT 48
Nefos 2:5e04e34a3b66 6 #define CEILING 8
Nefos 2:5e04e34a3b66 7 #define FLOOR 48
Nefos 2:5e04e34a3b66 8
Nefos 0:2eb4d7e86e2f 9 //Snake snakePart;
Nefos 0:2eb4d7e86e2f 10 snakePart snek;
Nefos 0:2eb4d7e86e2f 11
Nefos 1:93a4cb86f100 12
Nefos 1:93a4cb86f100 13
Nefos 0:2eb4d7e86e2f 14 Snake::Snake()
Nefos 0:2eb4d7e86e2f 15 {
Nefos 0:2eb4d7e86e2f 16
Nefos 0:2eb4d7e86e2f 17 }
Nefos 0:2eb4d7e86e2f 18 Snake::~Snake()
Nefos 0:2eb4d7e86e2f 19 {
Nefos 0:2eb4d7e86e2f 20
Nefos 0:2eb4d7e86e2f 21
Nefos 0:2eb4d7e86e2f 22 //delete things create aboce in construcxtor
Nefos 0:2eb4d7e86e2f 23 }
Nefos 0:2eb4d7e86e2f 24
Nefos 0:2eb4d7e86e2f 25 void Snake::init(int x, int y, int lenght){
Nefos 0:2eb4d7e86e2f 26
Nefos 0:2eb4d7e86e2f 27
Nefos 1:93a4cb86f100 28
Nefos 0:2eb4d7e86e2f 29 //initalizing the starting variables
Nefos 0:2eb4d7e86e2f 30 snek._x[0]=x;
Nefos 0:2eb4d7e86e2f 31 snek._y[0]=y;
Nefos 2:5e04e34a3b66 32 live=1;
Nefos 0:2eb4d7e86e2f 33 _length = lenght;
Nefos 0:2eb4d7e86e2f 34 counter=0;
Nefos 0:2eb4d7e86e2f 35 for (int i=0;_length>i;i++)
Nefos 0:2eb4d7e86e2f 36 {
Nefos 0:2eb4d7e86e2f 37 snek._x[i]=x+i;
Nefos 0:2eb4d7e86e2f 38 snek._y[i]=y;
Nefos 0:2eb4d7e86e2f 39 snek._dir[i]=1;
Nefos 0:2eb4d7e86e2f 40 }
Nefos 1:93a4cb86f100 41 snek._x[_length]=x+_length;
Nefos 1:93a4cb86f100 42 snek._y[_length]=y;
Nefos 1:93a4cb86f100 43
Nefos 1:93a4cb86f100 44 /* snek._y[0]=y;
Nefos 1:93a4cb86f100 45 snek._y[1]=y+1;
Nefos 1:93a4cb86f100 46 snek._y[2]=y+2;
Nefos 1:93a4cb86f100 47 snek._y[3]=y+2;
Nefos 1:93a4cb86f100 48 snek._y[4]=y+3;
Nefos 1:93a4cb86f100 49 snek._y[5]=y+3;
Nefos 1:93a4cb86f100 50 snek._y[6]=y+4;*/
Nefos 0:2eb4d7e86e2f 51 _direction = 1;//1 is East, 2 is South, 3 is West, 4 is North
Nefos 0:2eb4d7e86e2f 52
Nefos 0:2eb4d7e86e2f 53
Nefos 0:2eb4d7e86e2f 54 //putting food at middle of the map before randomizing
Nefos 1:93a4cb86f100 55 printf("xog is %d ", snek._x[_length-1]);
Nefos 1:93a4cb86f100 56 //printf("initalized");
Nefos 0:2eb4d7e86e2f 57 }
Nefos 0:2eb4d7e86e2f 58
Nefos 0:2eb4d7e86e2f 59 void Snake::draw(N5110 &lcd){
Nefos 2:5e04e34a3b66 60 checkWallCollision(lcd);
Nefos 2:5e04e34a3b66 61 if (live==1){
Nefos 0:2eb4d7e86e2f 62 lcd.clear();
Nefos 2:5e04e34a3b66 63
Nefos 2:5e04e34a3b66 64 lcd.drawRect(0,8,84,48-8,FILL_TRANSPARENT);
Nefos 0:2eb4d7e86e2f 65 for ( int i=0; _length>i;i++)
Nefos 0:2eb4d7e86e2f 66 {
Nefos 0:2eb4d7e86e2f 67 if (snek._x!=0)
Nefos 0:2eb4d7e86e2f 68 {
Nefos 0:2eb4d7e86e2f 69 if (snek._y!=0)
Nefos 0:2eb4d7e86e2f 70 {
Nefos 0:2eb4d7e86e2f 71 lcd.setPixel(snek._x[i],snek._y[i]);
Nefos 0:2eb4d7e86e2f 72 }
Nefos 0:2eb4d7e86e2f 73 }
Nefos 0:2eb4d7e86e2f 74
Nefos 0:2eb4d7e86e2f 75 //draw the snake array
Nefos 0:2eb4d7e86e2f 76 //draw lines from breakpoint to breakpoint to head
Nefos 0:2eb4d7e86e2f 77 //draw food
Nefos 0:2eb4d7e86e2f 78 //lcd.setPixel(48,28);
Nefos 2:5e04e34a3b66 79
Nefos 0:2eb4d7e86e2f 80 lcd.refresh();
Nefos 2:5e04e34a3b66 81 //update(pad);
Nefos 1:93a4cb86f100 82 //printf("drAwn");
Nefos 0:2eb4d7e86e2f 83 }
Nefos 2:5e04e34a3b66 84 }//live loop
Nefos 0:2eb4d7e86e2f 85 }
Nefos 0:2eb4d7e86e2f 86 void Snake::update(Gamepad &pad){
Nefos 2:5e04e34a3b66 87
Nefos 2:5e04e34a3b66 88 if (live==1){
Nefos 0:2eb4d7e86e2f 89
Nefos 0:2eb4d7e86e2f 90 d=pad.get_direction();
Nefos 1:93a4cb86f100 91 startx=snek._x[0];
Nefos 0:2eb4d7e86e2f 92
Nefos 0:2eb4d7e86e2f 93 counter=_length-2;
Nefos 1:93a4cb86f100 94
Nefos 1:93a4cb86f100 95 printf("x is %d ", snek._x[_length-1]);
Nefos 1:93a4cb86f100 96 if (snek._dir[_length-1]==1)
Nefos 0:2eb4d7e86e2f 97 {
Nefos 1:93a4cb86f100 98 snek._x[_length]++;
Nefos 1:93a4cb86f100 99 startx=0;
Nefos 1:93a4cb86f100 100 //snek._dir[counter]=1;
Nefos 1:93a4cb86f100 101 //counter--;
Nefos 0:2eb4d7e86e2f 102 //if (counter>0)
Nefos 0:2eb4d7e86e2f 103 //{counter--;}
Nefos 0:2eb4d7e86e2f 104
Nefos 0:2eb4d7e86e2f 105 }
Nefos 1:93a4cb86f100 106 if (snek._dir[_length-1]==2)
Nefos 0:2eb4d7e86e2f 107 {
Nefos 1:93a4cb86f100 108 snek._y[_length]--;
Nefos 1:93a4cb86f100 109 //snek._dir[counter]=2;
Nefos 1:93a4cb86f100 110 //counter--;
Nefos 1:93a4cb86f100 111 //if (i>0)
Nefos 1:93a4cb86f100 112 //{counter--;}
Nefos 1:93a4cb86f100 113
Nefos 1:93a4cb86f100 114 }
Nefos 1:93a4cb86f100 115 if (snek._dir[_length-1]==3)
Nefos 1:93a4cb86f100 116 {
Nefos 1:93a4cb86f100 117 snek._x[_length]--;
Nefos 1:93a4cb86f100 118 //snek._dir[counter]=2;
Nefos 1:93a4cb86f100 119 //counter--;
Nefos 0:2eb4d7e86e2f 120 //if (i>0)
Nefos 0:2eb4d7e86e2f 121 //{counter--;}
Nefos 0:2eb4d7e86e2f 122
Nefos 0:2eb4d7e86e2f 123 }
Nefos 1:93a4cb86f100 124 if (snek._dir[_length-1]==4)
Nefos 1:93a4cb86f100 125 {
Nefos 1:93a4cb86f100 126 snek._y[_length]++;
Nefos 1:93a4cb86f100 127 //snek._dir[counter]=2;
Nefos 1:93a4cb86f100 128 //counter--;
Nefos 1:93a4cb86f100 129 //if (i>0)
Nefos 1:93a4cb86f100 130 //{counter--;}
Nefos 1:93a4cb86f100 131
Nefos 1:93a4cb86f100 132 }
Nefos 1:93a4cb86f100 133
Nefos 1:93a4cb86f100 134 for (int i=0 ;_length<i ;i++)
Nefos 1:93a4cb86f100 135 {
Nefos 1:93a4cb86f100 136
Nefos 1:93a4cb86f100 137 //printf(" x = %d", snek._x[i]);
Nefos 1:93a4cb86f100 138
Nefos 1:93a4cb86f100 139 snek._x[i]=snek._x[i+1];
Nefos 1:93a4cb86f100 140 snek._y[i]=snek._y[i+1];
Nefos 1:93a4cb86f100 141 //printf("done");
Nefos 1:93a4cb86f100 142
Nefos 1:93a4cb86f100 143
Nefos 1:93a4cb86f100 144 }
Nefos 1:93a4cb86f100 145
Nefos 0:2eb4d7e86e2f 146 /*
Nefos 0:2eb4d7e86e2f 147 //snek._x[i]=snek._x[i+1];
Nefos 0:2eb4d7e86e2f 148 // snek._y[i]=snek._y[i+1];
Nefos 0:2eb4d7e86e2f 149 switch (snek._dir[i])
Nefos 0:2eb4d7e86e2f 150 {
Nefos 0:2eb4d7e86e2f 151 case 1:
Nefos 0:2eb4d7e86e2f 152 snek._x[i]++;
Nefos 0:2eb4d7e86e2f 153
Nefos 0:2eb4d7e86e2f 154 case 4:
Nefos 0:2eb4d7e86e2f 155 snek._y[i]--;
Nefos 0:2eb4d7e86e2f 156
Nefos 0:2eb4d7e86e2f 157 }
Nefos 0:2eb4d7e86e2f 158 */
Nefos 0:2eb4d7e86e2f 159
Nefos 0:2eb4d7e86e2f 160 //check dpad which way it is pointing
Nefos 0:2eb4d7e86e2f 161 //set direction accordingly, 1 is right, up is 2, 3 is left and 4 is down
Nefos 0:2eb4d7e86e2f 162 //set a breakpoint at head by snakeX/Y[i]
Nefos 0:2eb4d7e86e2f 163 //switch case to make sure direction is good
Nefos 0:2eb4d7e86e2f 164 //if head == food, _length++, and -direction we add 1 length
Nefos 0:2eb4d7e86e2f 165 // if head==wall game over
Nefos 0:2eb4d7e86e2f 166
Nefos 0:2eb4d7e86e2f 167
Nefos 1:93a4cb86f100 168
Nefos 0:2eb4d7e86e2f 169 //if (counter>0)
Nefos 0:2eb4d7e86e2f 170 // {counter--;}
Nefos 0:2eb4d7e86e2f 171 if (d==N)
Nefos 0:2eb4d7e86e2f 172 {
Nefos 0:2eb4d7e86e2f 173
Nefos 2:5e04e34a3b66 174 if (snek._dir[_length-1]!=4)
Nefos 0:2eb4d7e86e2f 175 {
Nefos 0:2eb4d7e86e2f 176 snek._dir[_length-1] = 2;
Nefos 0:2eb4d7e86e2f 177
Nefos 0:2eb4d7e86e2f 178 //snek._y[5]--;
Nefos 0:2eb4d7e86e2f 179 //return;
Nefos 0:2eb4d7e86e2f 180
Nefos 0:2eb4d7e86e2f 181 }
Nefos 0:2eb4d7e86e2f 182
Nefos 0:2eb4d7e86e2f 183
Nefos 0:2eb4d7e86e2f 184 }
Nefos 0:2eb4d7e86e2f 185 if (d==E)
Nefos 0:2eb4d7e86e2f 186 {
Nefos 0:2eb4d7e86e2f 187
Nefos 2:5e04e34a3b66 188 if (snek._dir[_length-1]!=3)
Nefos 0:2eb4d7e86e2f 189 {
Nefos 0:2eb4d7e86e2f 190 snek._dir[_length-1] = 1;
Nefos 0:2eb4d7e86e2f 191
Nefos 0:2eb4d7e86e2f 192 //snek._y[5]--;
Nefos 0:2eb4d7e86e2f 193 //return;
Nefos 0:2eb4d7e86e2f 194
Nefos 0:2eb4d7e86e2f 195 }
Nefos 0:2eb4d7e86e2f 196
Nefos 0:2eb4d7e86e2f 197
Nefos 0:2eb4d7e86e2f 198 }
Nefos 1:93a4cb86f100 199 if (d==W)
Nefos 1:93a4cb86f100 200 {
Nefos 1:93a4cb86f100 201
Nefos 2:5e04e34a3b66 202 if (snek._dir[_length-1]!=1)
Nefos 1:93a4cb86f100 203 {
Nefos 1:93a4cb86f100 204 snek._dir[_length-1] = 3;
Nefos 1:93a4cb86f100 205
Nefos 1:93a4cb86f100 206 //snek._y[5]--;
Nefos 1:93a4cb86f100 207 //return;
Nefos 1:93a4cb86f100 208
Nefos 1:93a4cb86f100 209 }
Nefos 1:93a4cb86f100 210
Nefos 1:93a4cb86f100 211
Nefos 1:93a4cb86f100 212 }
Nefos 1:93a4cb86f100 213 if (d==S)
Nefos 1:93a4cb86f100 214 {
Nefos 1:93a4cb86f100 215
Nefos 2:5e04e34a3b66 216 if (snek._dir[_length-1]!=2)
Nefos 1:93a4cb86f100 217 {
Nefos 1:93a4cb86f100 218 snek._dir[_length-1] = 4;
Nefos 1:93a4cb86f100 219
Nefos 1:93a4cb86f100 220 //snek._y[5]--;
Nefos 1:93a4cb86f100 221 //return;
Nefos 1:93a4cb86f100 222
Nefos 1:93a4cb86f100 223 }
Nefos 1:93a4cb86f100 224
Nefos 1:93a4cb86f100 225
Nefos 1:93a4cb86f100 226 }
Nefos 0:2eb4d7e86e2f 227 /*switch (d)
Nefos 0:2eb4d7e86e2f 228 {
Nefos 0:2eb4d7e86e2f 229 case N:
Nefos 0:2eb4d7e86e2f 230
Nefos 0:2eb4d7e86e2f 231
Nefos 0:2eb4d7e86e2f 232 /*case E:
Nefos 0:2eb4d7e86e2f 233 if (snek._dir[_length]!=3)
Nefos 0:2eb4d7e86e2f 234 {
Nefos 0:2eb4d7e86e2f 235 snek._dir[_length-1] = 1;
Nefos 0:2eb4d7e86e2f 236
Nefos 0:2eb4d7e86e2f 237 //snek._y[5]--;
Nefos 0:2eb4d7e86e2f 238 //return;
Nefos 0:2eb4d7e86e2f 239
Nefos 0:2eb4d7e86e2f 240 }*/
Nefos 0:2eb4d7e86e2f 241
Nefos 0:2eb4d7e86e2f 242
Nefos 0:2eb4d7e86e2f 243
Nefos 0:2eb4d7e86e2f 244 // }
Nefos 0:2eb4d7e86e2f 245 //counter=0;
Nefos 1:93a4cb86f100 246 printf("updated ");
Nefos 2:5e04e34a3b66 247 }//live loop
Nefos 0:2eb4d7e86e2f 248 }
Nefos 0:2eb4d7e86e2f 249
Nefos 0:2eb4d7e86e2f 250 snakePart Snake::add_point(int x, int y){
Nefos 0:2eb4d7e86e2f 251
Nefos 0:2eb4d7e86e2f 252
Nefos 0:2eb4d7e86e2f 253
Nefos 0:2eb4d7e86e2f 254
Nefos 0:2eb4d7e86e2f 255 //snek._x=x;
Nefos 0:2eb4d7e86e2f 256 //snek._y=y;
Nefos 0:2eb4d7e86e2f 257
Nefos 0:2eb4d7e86e2f 258
Nefos 0:2eb4d7e86e2f 259 return;
Nefos 0:2eb4d7e86e2f 260
Nefos 0:2eb4d7e86e2f 261 //_length++;
Nefos 0:2eb4d7e86e2f 262
Nefos 0:2eb4d7e86e2f 263 }
Nefos 2:5e04e34a3b66 264 void Snake::deadSnake(N5110 &lcd){
Nefos 2:5e04e34a3b66 265 lcd.clear();
Nefos 2:5e04e34a3b66 266 lcd.printString("Game Over",0,1);
Nefos 2:5e04e34a3b66 267 lcd.refresh();
Nefos 2:5e04e34a3b66 268 live=0;
Nefos 2:5e04e34a3b66 269
Nefos 2:5e04e34a3b66 270 }
Nefos 2:5e04e34a3b66 271 void Snake::checkWallCollision(N5110 &lcd){
Nefos 2:5e04e34a3b66 272
Nefos 2:5e04e34a3b66 273 if (snek._x[_length]==WIDTH||snek._x[_length]==0)
Nefos 2:5e04e34a3b66 274 {
Nefos 2:5e04e34a3b66 275
Nefos 2:5e04e34a3b66 276 deadSnake(lcd);
Nefos 2:5e04e34a3b66 277 }
Nefos 2:5e04e34a3b66 278 if (snek._y[_length]==CEILING||snek._y[_length]==FLOOR)
Nefos 2:5e04e34a3b66 279 {
Nefos 2:5e04e34a3b66 280
Nefos 2:5e04e34a3b66 281 deadSnake(lcd);
Nefos 2:5e04e34a3b66 282 }
Nefos 2:5e04e34a3b66 283
Nefos 0:2eb4d7e86e2f 284
Nefos 0:2eb4d7e86e2f 285 //return _length;
Nefos 0:2eb4d7e86e2f 286
Nefos 2:5e04e34a3b66 287 }
Nefos 2:5e04e34a3b66 288