Balint Bogdan 2645 project, 200966741
Snake.cpp@0:2eb4d7e86e2f, 2017-05-04 (annotated)
- Committer:
- Nefos
- Date:
- Thu May 04 12:01:04 2017 +0000
- Revision:
- 0:2eb4d7e86e2f
- Child:
- 1:93a4cb86f100
Highly buggy version, something went wrong with the snake movement, have to fix it now..;
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 | 0:2eb4d7e86e2f | 7 | Snake::Snake() |
Nefos | 0:2eb4d7e86e2f | 8 | { |
Nefos | 0:2eb4d7e86e2f | 9 | |
Nefos | 0:2eb4d7e86e2f | 10 | } |
Nefos | 0:2eb4d7e86e2f | 11 | Snake::~Snake() |
Nefos | 0:2eb4d7e86e2f | 12 | { |
Nefos | 0:2eb4d7e86e2f | 13 | |
Nefos | 0:2eb4d7e86e2f | 14 | |
Nefos | 0:2eb4d7e86e2f | 15 | //delete things create aboce in construcxtor |
Nefos | 0:2eb4d7e86e2f | 16 | } |
Nefos | 0:2eb4d7e86e2f | 17 | |
Nefos | 0:2eb4d7e86e2f | 18 | void Snake::init(int x, int y, int lenght){ |
Nefos | 0:2eb4d7e86e2f | 19 | |
Nefos | 0:2eb4d7e86e2f | 20 | |
Nefos | 0:2eb4d7e86e2f | 21 | //initalizing the starting variables |
Nefos | 0:2eb4d7e86e2f | 22 | snek._x[0]=x; |
Nefos | 0:2eb4d7e86e2f | 23 | snek._y[0]=y; |
Nefos | 0:2eb4d7e86e2f | 24 | _length = lenght; |
Nefos | 0:2eb4d7e86e2f | 25 | counter=0; |
Nefos | 0:2eb4d7e86e2f | 26 | for (int i=0;_length>i;i++) |
Nefos | 0:2eb4d7e86e2f | 27 | { |
Nefos | 0:2eb4d7e86e2f | 28 | snek._x[i]=x+i; |
Nefos | 0:2eb4d7e86e2f | 29 | snek._y[i]=y; |
Nefos | 0:2eb4d7e86e2f | 30 | snek._dir[i]=1; |
Nefos | 0:2eb4d7e86e2f | 31 | } |
Nefos | 0:2eb4d7e86e2f | 32 | _direction = 1;//1 is East, 2 is South, 3 is West, 4 is North |
Nefos | 0:2eb4d7e86e2f | 33 | |
Nefos | 0:2eb4d7e86e2f | 34 | |
Nefos | 0:2eb4d7e86e2f | 35 | //putting food at middle of the map before randomizing |
Nefos | 0:2eb4d7e86e2f | 36 | |
Nefos | 0:2eb4d7e86e2f | 37 | |
Nefos | 0:2eb4d7e86e2f | 38 | } |
Nefos | 0:2eb4d7e86e2f | 39 | |
Nefos | 0:2eb4d7e86e2f | 40 | void Snake::draw(N5110 &lcd){ |
Nefos | 0:2eb4d7e86e2f | 41 | lcd.clear(); |
Nefos | 0:2eb4d7e86e2f | 42 | lcd.drawRect(0,4,84,48-8,FILL_TRANSPARENT); |
Nefos | 0:2eb4d7e86e2f | 43 | for ( int i=0; _length>i;i++) |
Nefos | 0:2eb4d7e86e2f | 44 | { |
Nefos | 0:2eb4d7e86e2f | 45 | if (snek._x!=0) |
Nefos | 0:2eb4d7e86e2f | 46 | { |
Nefos | 0:2eb4d7e86e2f | 47 | if (snek._y!=0) |
Nefos | 0:2eb4d7e86e2f | 48 | { |
Nefos | 0:2eb4d7e86e2f | 49 | lcd.setPixel(snek._x[i],snek._y[i]); |
Nefos | 0:2eb4d7e86e2f | 50 | } |
Nefos | 0:2eb4d7e86e2f | 51 | } |
Nefos | 0:2eb4d7e86e2f | 52 | |
Nefos | 0:2eb4d7e86e2f | 53 | //draw the snake array |
Nefos | 0:2eb4d7e86e2f | 54 | //draw lines from breakpoint to breakpoint to head |
Nefos | 0:2eb4d7e86e2f | 55 | //draw food |
Nefos | 0:2eb4d7e86e2f | 56 | //lcd.setPixel(48,28); |
Nefos | 0:2eb4d7e86e2f | 57 | lcd.refresh(); |
Nefos | 0:2eb4d7e86e2f | 58 | } |
Nefos | 0:2eb4d7e86e2f | 59 | } |
Nefos | 0:2eb4d7e86e2f | 60 | void Snake::update(Gamepad &pad){ |
Nefos | 0:2eb4d7e86e2f | 61 | |
Nefos | 0:2eb4d7e86e2f | 62 | d=pad.get_direction(); |
Nefos | 0:2eb4d7e86e2f | 63 | |
Nefos | 0:2eb4d7e86e2f | 64 | |
Nefos | 0:2eb4d7e86e2f | 65 | counter=_length-2; |
Nefos | 0:2eb4d7e86e2f | 66 | for (int i= 0;_length >i ;i++) |
Nefos | 0:2eb4d7e86e2f | 67 | { |
Nefos | 0:2eb4d7e86e2f | 68 | |
Nefos | 0:2eb4d7e86e2f | 69 | |
Nefos | 0:2eb4d7e86e2f | 70 | |
Nefos | 0:2eb4d7e86e2f | 71 | if (snek._dir[i]==1) |
Nefos | 0:2eb4d7e86e2f | 72 | { |
Nefos | 0:2eb4d7e86e2f | 73 | snek._x[i]++; |
Nefos | 0:2eb4d7e86e2f | 74 | snek._dir[counter]=1; |
Nefos | 0:2eb4d7e86e2f | 75 | counter--; |
Nefos | 0:2eb4d7e86e2f | 76 | //if (counter>0) |
Nefos | 0:2eb4d7e86e2f | 77 | //{counter--;} |
Nefos | 0:2eb4d7e86e2f | 78 | |
Nefos | 0:2eb4d7e86e2f | 79 | } |
Nefos | 0:2eb4d7e86e2f | 80 | if (snek._dir[i]==2) |
Nefos | 0:2eb4d7e86e2f | 81 | { |
Nefos | 0:2eb4d7e86e2f | 82 | snek._y[i]--; |
Nefos | 0:2eb4d7e86e2f | 83 | snek._dir[counter]=2; |
Nefos | 0:2eb4d7e86e2f | 84 | counter--; |
Nefos | 0:2eb4d7e86e2f | 85 | //if (i>0) |
Nefos | 0:2eb4d7e86e2f | 86 | //{counter--;} |
Nefos | 0:2eb4d7e86e2f | 87 | |
Nefos | 0:2eb4d7e86e2f | 88 | } |
Nefos | 0:2eb4d7e86e2f | 89 | /* |
Nefos | 0:2eb4d7e86e2f | 90 | //snek._x[i]=snek._x[i+1]; |
Nefos | 0:2eb4d7e86e2f | 91 | // snek._y[i]=snek._y[i+1]; |
Nefos | 0:2eb4d7e86e2f | 92 | switch (snek._dir[i]) |
Nefos | 0:2eb4d7e86e2f | 93 | { |
Nefos | 0:2eb4d7e86e2f | 94 | case 1: |
Nefos | 0:2eb4d7e86e2f | 95 | snek._x[i]++; |
Nefos | 0:2eb4d7e86e2f | 96 | |
Nefos | 0:2eb4d7e86e2f | 97 | case 4: |
Nefos | 0:2eb4d7e86e2f | 98 | snek._y[i]--; |
Nefos | 0:2eb4d7e86e2f | 99 | |
Nefos | 0:2eb4d7e86e2f | 100 | } |
Nefos | 0:2eb4d7e86e2f | 101 | */ |
Nefos | 0:2eb4d7e86e2f | 102 | |
Nefos | 0:2eb4d7e86e2f | 103 | //check dpad which way it is pointing |
Nefos | 0:2eb4d7e86e2f | 104 | //set direction accordingly, 1 is right, up is 2, 3 is left and 4 is down |
Nefos | 0:2eb4d7e86e2f | 105 | //set a breakpoint at head by snakeX/Y[i] |
Nefos | 0:2eb4d7e86e2f | 106 | //switch case to make sure direction is good |
Nefos | 0:2eb4d7e86e2f | 107 | //if head == food, _length++, and -direction we add 1 length |
Nefos | 0:2eb4d7e86e2f | 108 | // if head==wall game over |
Nefos | 0:2eb4d7e86e2f | 109 | |
Nefos | 0:2eb4d7e86e2f | 110 | |
Nefos | 0:2eb4d7e86e2f | 111 | } |
Nefos | 0:2eb4d7e86e2f | 112 | //if (counter>0) |
Nefos | 0:2eb4d7e86e2f | 113 | // {counter--;} |
Nefos | 0:2eb4d7e86e2f | 114 | if (d==N) |
Nefos | 0:2eb4d7e86e2f | 115 | { |
Nefos | 0:2eb4d7e86e2f | 116 | |
Nefos | 0:2eb4d7e86e2f | 117 | if (snek._dir[_length]!=4) |
Nefos | 0:2eb4d7e86e2f | 118 | { |
Nefos | 0:2eb4d7e86e2f | 119 | snek._dir[_length-1] = 2; |
Nefos | 0:2eb4d7e86e2f | 120 | |
Nefos | 0:2eb4d7e86e2f | 121 | //snek._y[5]--; |
Nefos | 0:2eb4d7e86e2f | 122 | //return; |
Nefos | 0:2eb4d7e86e2f | 123 | |
Nefos | 0:2eb4d7e86e2f | 124 | } |
Nefos | 0:2eb4d7e86e2f | 125 | |
Nefos | 0:2eb4d7e86e2f | 126 | |
Nefos | 0:2eb4d7e86e2f | 127 | } |
Nefos | 0:2eb4d7e86e2f | 128 | if (d==E) |
Nefos | 0:2eb4d7e86e2f | 129 | { |
Nefos | 0:2eb4d7e86e2f | 130 | |
Nefos | 0:2eb4d7e86e2f | 131 | if (snek._dir[_length]!=3) |
Nefos | 0:2eb4d7e86e2f | 132 | { |
Nefos | 0:2eb4d7e86e2f | 133 | snek._dir[_length-1] = 1; |
Nefos | 0:2eb4d7e86e2f | 134 | |
Nefos | 0:2eb4d7e86e2f | 135 | //snek._y[5]--; |
Nefos | 0:2eb4d7e86e2f | 136 | //return; |
Nefos | 0:2eb4d7e86e2f | 137 | |
Nefos | 0:2eb4d7e86e2f | 138 | } |
Nefos | 0:2eb4d7e86e2f | 139 | |
Nefos | 0:2eb4d7e86e2f | 140 | |
Nefos | 0:2eb4d7e86e2f | 141 | } |
Nefos | 0:2eb4d7e86e2f | 142 | /*switch (d) |
Nefos | 0:2eb4d7e86e2f | 143 | { |
Nefos | 0:2eb4d7e86e2f | 144 | case N: |
Nefos | 0:2eb4d7e86e2f | 145 | |
Nefos | 0:2eb4d7e86e2f | 146 | |
Nefos | 0:2eb4d7e86e2f | 147 | /*case E: |
Nefos | 0:2eb4d7e86e2f | 148 | if (snek._dir[_length]!=3) |
Nefos | 0:2eb4d7e86e2f | 149 | { |
Nefos | 0:2eb4d7e86e2f | 150 | snek._dir[_length-1] = 1; |
Nefos | 0:2eb4d7e86e2f | 151 | |
Nefos | 0:2eb4d7e86e2f | 152 | //snek._y[5]--; |
Nefos | 0:2eb4d7e86e2f | 153 | //return; |
Nefos | 0:2eb4d7e86e2f | 154 | |
Nefos | 0:2eb4d7e86e2f | 155 | }*/ |
Nefos | 0:2eb4d7e86e2f | 156 | |
Nefos | 0:2eb4d7e86e2f | 157 | |
Nefos | 0:2eb4d7e86e2f | 158 | |
Nefos | 0:2eb4d7e86e2f | 159 | // } |
Nefos | 0:2eb4d7e86e2f | 160 | //counter=0; |
Nefos | 0:2eb4d7e86e2f | 161 | |
Nefos | 0:2eb4d7e86e2f | 162 | |
Nefos | 0:2eb4d7e86e2f | 163 | } |
Nefos | 0:2eb4d7e86e2f | 164 | |
Nefos | 0:2eb4d7e86e2f | 165 | snakePart Snake::add_point(int x, int y){ |
Nefos | 0:2eb4d7e86e2f | 166 | |
Nefos | 0:2eb4d7e86e2f | 167 | |
Nefos | 0:2eb4d7e86e2f | 168 | |
Nefos | 0:2eb4d7e86e2f | 169 | |
Nefos | 0:2eb4d7e86e2f | 170 | //snek._x=x; |
Nefos | 0:2eb4d7e86e2f | 171 | //snek._y=y; |
Nefos | 0:2eb4d7e86e2f | 172 | |
Nefos | 0:2eb4d7e86e2f | 173 | |
Nefos | 0:2eb4d7e86e2f | 174 | return; |
Nefos | 0:2eb4d7e86e2f | 175 | |
Nefos | 0:2eb4d7e86e2f | 176 | //_length++; |
Nefos | 0:2eb4d7e86e2f | 177 | |
Nefos | 0:2eb4d7e86e2f | 178 | } |
Nefos | 0:2eb4d7e86e2f | 179 | void Snake::get_length(){ |
Nefos | 0:2eb4d7e86e2f | 180 | |
Nefos | 0:2eb4d7e86e2f | 181 | //return _length; |
Nefos | 0:2eb4d7e86e2f | 182 | |
Nefos | 0:2eb4d7e86e2f | 183 | } |