Balint Bogdan 2645 project, 200966741

Dependents:   2645Game_el15bb

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?

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 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 }