Snake game snake library
Snake.cpp@1:93a4cb86f100, 2017-05-05 (annotated)
- 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?
User | Revision | Line number | New 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 | } |