Snake game snake library

Committer:
Nefos
Date:
Fri May 05 10:36:54 2017 +0000
Revision:
1:93a4cb86f100
Parent:
0:2eb4d7e86e2f
Child:
2:5e04e34a3b66
The snake code is working, snake is acting like a snake

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