Snake game on nokia N5110 LCD

Dependencies:   mbed

Snake game on nokia N5110 LCD and Keyes Syos Joystick. You control snake using joystick. Start/pause game ba using button on joystick or by pressing p on your keyboard (serial communication). More info on my blog: http://sdizdarevic.com/post/94147065625/frdm-k64f-project

Committer:
sdizdarevic
Date:
Fri Aug 08 06:44:50 2014 +0000
Revision:
0:5bdb67970267
Check connections

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sdizdarevic 0:5bdb67970267 1 #ifndef E_SNAKE_H
sdizdarevic 0:5bdb67970267 2 #define E_SNAKE_H
sdizdarevic 0:5bdb67970267 3 #include <cstdlib>
sdizdarevic 0:5bdb67970267 4 #include "mbed.h"
sdizdarevic 0:5bdb67970267 5 #include "N5110.h"
sdizdarevic 0:5bdb67970267 6 #include "Helper.h"
sdizdarevic 0:5bdb67970267 7 class Snakelib
sdizdarevic 0:5bdb67970267 8 {
sdizdarevic 0:5bdb67970267 9 static const bool SnakeTypes [2][6][3][3];
sdizdarevic 0:5bdb67970267 10 static const bool SnakeFood [5][3][3];
sdizdarevic 0:5bdb67970267 11 static const int Pos [2][3][3];
sdizdarevic 0:5bdb67970267 12 short Snake [438][2];
sdizdarevic 0:5bdb67970267 13 static const double Speeds [10];
sdizdarevic 0:5bdb67970267 14 static const unsigned char Points[10];
sdizdarevic 0:5bdb67970267 15 AnalogIn VX, VY;
sdizdarevic 0:5bdb67970267 16 InterruptIn SW;
sdizdarevic 0:5bdb67970267 17 int HScore, Score;
sdizdarevic 0:5bdb67970267 18 int SnakeLen, Speed;
sdizdarevic 0:5bdb67970267 19 int SnakeType, FoodType;
sdizdarevic 0:5bdb67970267 20 int eX, eY, pX, pY, Dir;
sdizdarevic 0:5bdb67970267 21 bool Moved, Pause, Draw, Started;
sdizdarevic 0:5bdb67970267 22 N5110 DISP;
sdizdarevic 0:5bdb67970267 23 DigitalOut ENBL;
sdizdarevic 0:5bdb67970267 24 Ticker TJoy, TMove;
sdizdarevic 0:5bdb67970267 25 Timer Dbnc;
sdizdarevic 0:5bdb67970267 26 Ticker T;
sdizdarevic 0:5bdb67970267 27 void SetBlock (int Block = 0, int X = 1, int Y = 1)
sdizdarevic 0:5bdb67970267 28 {
sdizdarevic 0:5bdb67970267 29 for (int a = 0; a < 3; ++a)
sdizdarevic 0:5bdb67970267 30 for (int b = 0; b < 3; ++b)
sdizdarevic 0:5bdb67970267 31 if (Block == 2 && SnakeFood [FoodType][a][b])
sdizdarevic 0:5bdb67970267 32 DISP.setPixel (X + Pos[0][a][b], Y + Pos[1][a][b]);
sdizdarevic 0:5bdb67970267 33 else if (Block < 2 && SnakeTypes [Block][SnakeType][a][b])
sdizdarevic 0:5bdb67970267 34 DISP.setPixel (X + Pos[0][a][b], Y + Pos[1][a][b]);
sdizdarevic 0:5bdb67970267 35 }
sdizdarevic 0:5bdb67970267 36 int Rand (int Min = 1, int Max = 83)
sdizdarevic 0:5bdb67970267 37 {
sdizdarevic 0:5bdb67970267 38 static bool First = true;
sdizdarevic 0:5bdb67970267 39 if (First) srand (time (NULL)), First = false;
sdizdarevic 0:5bdb67970267 40 while (7)
sdizdarevic 0:5bdb67970267 41 {
sdizdarevic 0:5bdb67970267 42 int S = rand () % (Max - Min + 1) + Min;
sdizdarevic 0:5bdb67970267 43 if (!((S - 1) % 3)) return S;
sdizdarevic 0:5bdb67970267 44 }
sdizdarevic 0:5bdb67970267 45 }
sdizdarevic 0:5bdb67970267 46 void GameOver ()
sdizdarevic 0:5bdb67970267 47 {
sdizdarevic 0:5bdb67970267 48
sdizdarevic 0:5bdb67970267 49 //FlashB();
sdizdarevic 0:5bdb67970267 50 wait (2);
sdizdarevic 0:5bdb67970267 51 DISP.clear();
sdizdarevic 0:5bdb67970267 52 DISP.setXYAddress (0, 0);
sdizdarevic 0:5bdb67970267 53 DISP.printString ("END!", 29, 0);
sdizdarevic 0:5bdb67970267 54 DISP.printString ("Score: ", 10, 2);
sdizdarevic 0:5bdb67970267 55 char Buff[20];
sdizdarevic 0:5bdb67970267 56 ToString (Buff, Score);
sdizdarevic 0:5bdb67970267 57 DISP.printString (Buff, 50, 2);
sdizdarevic 0:5bdb67970267 58 DISP.printString ("Best: ", 10, 4);
sdizdarevic 0:5bdb67970267 59 ToString (Buff, HScore);
sdizdarevic 0:5bdb67970267 60 DISP.printString (Buff, 50, 4);
sdizdarevic 0:5bdb67970267 61 eX = eY = 0; //
sdizdarevic 0:5bdb67970267 62 Started = false;
sdizdarevic 0:5bdb67970267 63 wait (3);
sdizdarevic 0:5bdb67970267 64 Restart();
sdizdarevic 0:5bdb67970267 65 }
sdizdarevic 0:5bdb67970267 66 void Prekuco()
sdizdarevic 0:5bdb67970267 67 {
sdizdarevic 0:5bdb67970267 68 DISP.clear();
sdizdarevic 0:5bdb67970267 69 DISP.setXYAddress (0, 0);
sdizdarevic 0:5bdb67970267 70 DISP.printString ("Well done!!!!!", 0, 0);
sdizdarevic 0:5bdb67970267 71 DISP.printString ("Congrats", 0, 2);
sdizdarevic 0:5bdb67970267 72 eX = eY = 0;
sdizdarevic 0:5bdb67970267 73 Started = false;
sdizdarevic 0:5bdb67970267 74 wait (3);
sdizdarevic 0:5bdb67970267 75 Restart();
sdizdarevic 0:5bdb67970267 76 }
sdizdarevic 0:5bdb67970267 77 void HitFood ()
sdizdarevic 0:5bdb67970267 78 {
sdizdarevic 0:5bdb67970267 79 if (Snake [0][0] == pX && Snake [0][1] == pY)
sdizdarevic 0:5bdb67970267 80 {
sdizdarevic 0:5bdb67970267 81 Score += Points[Speed - 1];
sdizdarevic 0:5bdb67970267 82 AddSnakeBody();
sdizdarevic 0:5bdb67970267 83 RandFood(pX, pY);
sdizdarevic 0:5bdb67970267 84 }
sdizdarevic 0:5bdb67970267 85 }
sdizdarevic 0:5bdb67970267 86 void HitWall()
sdizdarevic 0:5bdb67970267 87 {
sdizdarevic 0:5bdb67970267 88 if (Snake[0][0] + 1 > 83 || Snake[0][0] - 1 < 0 || Snake[0][1] + 1 > 47 || Snake[0][1] - 1 < 0)
sdizdarevic 0:5bdb67970267 89 {
sdizdarevic 0:5bdb67970267 90 if (Score > HScore)
sdizdarevic 0:5bdb67970267 91 HScore = Score;
sdizdarevic 0:5bdb67970267 92 Started = false;;
sdizdarevic 0:5bdb67970267 93 GameOver();
sdizdarevic 0:5bdb67970267 94 return;
sdizdarevic 0:5bdb67970267 95 }
sdizdarevic 0:5bdb67970267 96 }
sdizdarevic 0:5bdb67970267 97 void HitSelf()
sdizdarevic 0:5bdb67970267 98 {
sdizdarevic 0:5bdb67970267 99 for (int a = 1; a <= SnakeLen; ++a)
sdizdarevic 0:5bdb67970267 100 if (Snake[0][0] == Snake[a][0] && Snake[0][1] == Snake[a][1])
sdizdarevic 0:5bdb67970267 101 {
sdizdarevic 0:5bdb67970267 102 if (Score > HScore)
sdizdarevic 0:5bdb67970267 103 HScore = Score;
sdizdarevic 0:5bdb67970267 104 GameOver();
sdizdarevic 0:5bdb67970267 105 return;
sdizdarevic 0:5bdb67970267 106 }
sdizdarevic 0:5bdb67970267 107 }
sdizdarevic 0:5bdb67970267 108 void Start()
sdizdarevic 0:5bdb67970267 109 {
sdizdarevic 0:5bdb67970267 110 Snake[0][0] = Rand(20, 70);
sdizdarevic 0:5bdb67970267 111 Snake[0][1] = Rand(10, 35);
sdizdarevic 0:5bdb67970267 112 RandFood(pX, pY);
sdizdarevic 0:5bdb67970267 113 AddSnakeBody();
sdizdarevic 0:5bdb67970267 114 AddSnakeBody();
sdizdarevic 0:5bdb67970267 115 Refresh();
sdizdarevic 0:5bdb67970267 116 }
sdizdarevic 0:5bdb67970267 117 void FlashB ()
sdizdarevic 0:5bdb67970267 118 {
sdizdarevic 0:5bdb67970267 119 for (int z = 0; z < 5; ++z)
sdizdarevic 0:5bdb67970267 120 {
sdizdarevic 0:5bdb67970267 121 DISP.clear();
sdizdarevic 0:5bdb67970267 122 DISP.setXYAddress (0, 0);
sdizdarevic 0:5bdb67970267 123 DISP.refresh();
sdizdarevic 0:5bdb67970267 124 wait (0.5);
sdizdarevic 0:5bdb67970267 125 DrawWall();
sdizdarevic 0:5bdb67970267 126 for (int a = 0; a <= SnakeLen; ++a)
sdizdarevic 0:5bdb67970267 127 SetBlock(a == 0 ? 0 : 1, Snake[a][0], Snake[a][1]);
sdizdarevic 0:5bdb67970267 128 SetBlock(2, pX, pY);
sdizdarevic 0:5bdb67970267 129 DISP.refresh();
sdizdarevic 0:5bdb67970267 130 }
sdizdarevic 0:5bdb67970267 131 }
sdizdarevic 0:5bdb67970267 132 void MoveSnake ()
sdizdarevic 0:5bdb67970267 133 {
sdizdarevic 0:5bdb67970267 134 if (Pause || !Started) return;
sdizdarevic 0:5bdb67970267 135 for (int a = SnakeLen; a >= 1; --a)
sdizdarevic 0:5bdb67970267 136 {
sdizdarevic 0:5bdb67970267 137 Snake[a][0] = Snake[a - 1][0];
sdizdarevic 0:5bdb67970267 138 Snake[a][1] = Snake[a - 1][1];
sdizdarevic 0:5bdb67970267 139 }
sdizdarevic 0:5bdb67970267 140 Snake[0][0] += eX;
sdizdarevic 0:5bdb67970267 141 Snake[0][1] += eY;
sdizdarevic 0:5bdb67970267 142 Moved = true;
sdizdarevic 0:5bdb67970267 143 Refresh();
sdizdarevic 0:5bdb67970267 144 }
sdizdarevic 0:5bdb67970267 145 void AddSnakeBody()
sdizdarevic 0:5bdb67970267 146 {
sdizdarevic 0:5bdb67970267 147 SnakeLen++;
sdizdarevic 0:5bdb67970267 148 int X = 0, Y = 0;
sdizdarevic 0:5bdb67970267 149 if (Dir == 0) X = 3, Y = 0;
sdizdarevic 0:5bdb67970267 150 if (Dir == 1) X = 0, Y = 3;
sdizdarevic 0:5bdb67970267 151 if (Dir == 2) X = -3, Y = 0;
sdizdarevic 0:5bdb67970267 152 if (Dir == 3) X = 0, Y = -3;
sdizdarevic 0:5bdb67970267 153 Snake [SnakeLen][0] = Snake[SnakeLen - 1][0] + X;
sdizdarevic 0:5bdb67970267 154 Snake [SnakeLen][1] = Snake[SnakeLen - 1][1] + Y;
sdizdarevic 0:5bdb67970267 155 }
sdizdarevic 0:5bdb67970267 156 void RandFood(int &X, int &Y)
sdizdarevic 0:5bdb67970267 157 {
sdizdarevic 0:5bdb67970267 158 while (7)
sdizdarevic 0:5bdb67970267 159 {
sdizdarevic 0:5bdb67970267 160 int A = Rand(1, 83);
sdizdarevic 0:5bdb67970267 161 int B = Rand(1, 47);
sdizdarevic 0:5bdb67970267 162 bool S = false;
sdizdarevic 0:5bdb67970267 163 for (int I = 0; I <= SnakeLen; ++I)
sdizdarevic 0:5bdb67970267 164 if (Snake[I][0] == A && Snake[I][1] == B)
sdizdarevic 0:5bdb67970267 165 S = true;
sdizdarevic 0:5bdb67970267 166 if (!S) {X = A; Y = B; return;}
sdizdarevic 0:5bdb67970267 167 }
sdizdarevic 0:5bdb67970267 168 }
sdizdarevic 0:5bdb67970267 169 void DrawWall ()
sdizdarevic 0:5bdb67970267 170 {
sdizdarevic 0:5bdb67970267 171 for (int a = 0; a < 84; ++a)
sdizdarevic 0:5bdb67970267 172 for (int b = 0; b < 48; ++b)
sdizdarevic 0:5bdb67970267 173 if (!a || !b || a == 83 || b == 47)
sdizdarevic 0:5bdb67970267 174 DISP.setPixel (a, b);
sdizdarevic 0:5bdb67970267 175 }
sdizdarevic 0:5bdb67970267 176 void Refresh ()
sdizdarevic 0:5bdb67970267 177 {
sdizdarevic 0:5bdb67970267 178 if (!Draw) return;
sdizdarevic 0:5bdb67970267 179 HitFood();
sdizdarevic 0:5bdb67970267 180 HitWall();
sdizdarevic 0:5bdb67970267 181 HitSelf();
sdizdarevic 0:5bdb67970267 182 DISP.clear();
sdizdarevic 0:5bdb67970267 183 DISP.setXYAddress (0, 0);
sdizdarevic 0:5bdb67970267 184 DrawWall();
sdizdarevic 0:5bdb67970267 185 for (int a = 0; a <= SnakeLen; ++a)
sdizdarevic 0:5bdb67970267 186 SetBlock(a == 0 ? 0 : 1, Snake[a][0], Snake[a][1]);
sdizdarevic 0:5bdb67970267 187 SetBlock(2, pX, pY);
sdizdarevic 0:5bdb67970267 188 DISP.refresh();
sdizdarevic 0:5bdb67970267 189 if (SnakeLen > 437) Prekuco();
sdizdarevic 0:5bdb67970267 190 }
sdizdarevic 0:5bdb67970267 191 void Moving ()
sdizdarevic 0:5bdb67970267 192 {
sdizdarevic 0:5bdb67970267 193 if (!Moved) return;
sdizdarevic 0:5bdb67970267 194 double vx = VX, vy = VY;
sdizdarevic 0:5bdb67970267 195 if (vx < 1./3.)
sdizdarevic 0:5bdb67970267 196 {
sdizdarevic 0:5bdb67970267 197 if (Dir == 2) return;
sdizdarevic 0:5bdb67970267 198 eX = -3; eY = 0;
sdizdarevic 0:5bdb67970267 199 Dir = 0;
sdizdarevic 0:5bdb67970267 200 Moved = false;
sdizdarevic 0:5bdb67970267 201 }
sdizdarevic 0:5bdb67970267 202 else if (vx > 2./3.)
sdizdarevic 0:5bdb67970267 203 {
sdizdarevic 0:5bdb67970267 204 if (Dir == 0) return;
sdizdarevic 0:5bdb67970267 205 eX = 3; eY = 0;
sdizdarevic 0:5bdb67970267 206 Dir = 2;
sdizdarevic 0:5bdb67970267 207 Moved = false;
sdizdarevic 0:5bdb67970267 208 }
sdizdarevic 0:5bdb67970267 209 if (vy < 1./3.)
sdizdarevic 0:5bdb67970267 210 {
sdizdarevic 0:5bdb67970267 211 if (Dir == 1) return;
sdizdarevic 0:5bdb67970267 212 eX = 0; eY = -3;
sdizdarevic 0:5bdb67970267 213 Dir = 3;
sdizdarevic 0:5bdb67970267 214 Moved = false;
sdizdarevic 0:5bdb67970267 215 }
sdizdarevic 0:5bdb67970267 216 else if (vy > 2./3.)
sdizdarevic 0:5bdb67970267 217 {
sdizdarevic 0:5bdb67970267 218 if (Dir == 3) return;
sdizdarevic 0:5bdb67970267 219 eX = 0; eY = 3;
sdizdarevic 0:5bdb67970267 220 Dir = 1;
sdizdarevic 0:5bdb67970267 221 Moved = false;
sdizdarevic 0:5bdb67970267 222 }
sdizdarevic 0:5bdb67970267 223 }
sdizdarevic 0:5bdb67970267 224 void Pressed ()
sdizdarevic 0:5bdb67970267 225 {
sdizdarevic 0:5bdb67970267 226 if (Dbnc.read() > .2)
sdizdarevic 0:5bdb67970267 227 {
sdizdarevic 0:5bdb67970267 228 if (!Started)
sdizdarevic 0:5bdb67970267 229 {
sdizdarevic 0:5bdb67970267 230 Started = true;
sdizdarevic 0:5bdb67970267 231 TMove.attach (this, &Snakelib::MoveSnake, Speeds[Speed - 1]);
sdizdarevic 0:5bdb67970267 232 }
sdizdarevic 0:5bdb67970267 233 else
sdizdarevic 0:5bdb67970267 234 {
sdizdarevic 0:5bdb67970267 235 Pause = !Pause;
sdizdarevic 0:5bdb67970267 236 Draw = !Pause;
sdizdarevic 0:5bdb67970267 237 }
sdizdarevic 0:5bdb67970267 238 }
sdizdarevic 0:5bdb67970267 239 Dbnc.reset();
sdizdarevic 0:5bdb67970267 240 }
sdizdarevic 0:5bdb67970267 241 public:
sdizdarevic 0:5bdb67970267 242 Snakelib (PinName P1, PinName P2, PinName P3, PinName P4, PinName P5,
sdizdarevic 0:5bdb67970267 243 PinName P6, PinName P7, PinName BX, PinName BY, PinName BS)
sdizdarevic 0:5bdb67970267 244 : VX (BX), VY (BY), SW (BS), HScore (0), Score (0), SnakeLen (0), Speed (6), SnakeType (0),
sdizdarevic 0:5bdb67970267 245 FoodType (0), eX (3), eY (0), pX(0), pY (0), Dir (2), Moved(false), Pause (false), Draw (true), Started (false),
sdizdarevic 0:5bdb67970267 246 DISP (P1, P2, P3, P4, P5, P6, P7), ENBL (LED_RED)
sdizdarevic 0:5bdb67970267 247 {
sdizdarevic 0:5bdb67970267 248
sdizdarevic 0:5bdb67970267 249 }
sdizdarevic 0:5bdb67970267 250 void START()
sdizdarevic 0:5bdb67970267 251 {
sdizdarevic 0:5bdb67970267 252 ENBL = 1;
sdizdarevic 0:5bdb67970267 253 Dbnc.start();
sdizdarevic 0:5bdb67970267 254 SW.mode (PullUp);
sdizdarevic 0:5bdb67970267 255 DISP.init();
sdizdarevic 0:5bdb67970267 256 DISP.setXYAddress (0, 0);
sdizdarevic 0:5bdb67970267 257 DISP.clear();
sdizdarevic 0:5bdb67970267 258 TJoy.attach (this, &Snakelib::Moving, 0.01);
sdizdarevic 0:5bdb67970267 259 DISP.printString ("- SNAKE -", 0, 0);
sdizdarevic 0:5bdb67970267 260 DISP.printString ("K64F", 0, 3);
sdizdarevic 0:5bdb67970267 261 DISP.printString ("Freescale", 0, 4);
sdizdarevic 0:5bdb67970267 262 wait (2);
sdizdarevic 0:5bdb67970267 263 SW.rise (this, &Snakelib::Pressed);
sdizdarevic 0:5bdb67970267 264 Start();
sdizdarevic 0:5bdb67970267 265
sdizdarevic 0:5bdb67970267 266
sdizdarevic 0:5bdb67970267 267 }
sdizdarevic 0:5bdb67970267 268 int SnakeSpeed () const {return Speed;}
sdizdarevic 0:5bdb67970267 269 void SetSnakeSpeed (unsigned char S)
sdizdarevic 0:5bdb67970267 270 {
sdizdarevic 0:5bdb67970267 271 if (S == Speed) return;
sdizdarevic 0:5bdb67970267 272 Speed = S;
sdizdarevic 0:5bdb67970267 273 Speed = Speed < 1 ? 1 : Speed > 10 ? 10 : Speed;
sdizdarevic 0:5bdb67970267 274 TMove.detach();
sdizdarevic 0:5bdb67970267 275 wait_ms (2);
sdizdarevic 0:5bdb67970267 276 TMove.attach (this, &Snakelib::MoveSnake, Speeds[Speed - 1]);
sdizdarevic 0:5bdb67970267 277 }
sdizdarevic 0:5bdb67970267 278 int GetSnakeType () const {return SnakeType + 1;}
sdizdarevic 0:5bdb67970267 279 void SetSnakeType (unsigned char S)
sdizdarevic 0:5bdb67970267 280 {
sdizdarevic 0:5bdb67970267 281 if (S == SnakeType) return;
sdizdarevic 0:5bdb67970267 282 int ST = S < 1 ? 1 : S > 6 ? 6 : S;
sdizdarevic 0:5bdb67970267 283 SnakeType = ST - 1;
sdizdarevic 0:5bdb67970267 284 Refresh();
sdizdarevic 0:5bdb67970267 285 }
sdizdarevic 0:5bdb67970267 286 int GetFoodType () const {return FoodType + 1;}
sdizdarevic 0:5bdb67970267 287 void SetFoodType (unsigned char S)
sdizdarevic 0:5bdb67970267 288 {
sdizdarevic 0:5bdb67970267 289 if (S == FoodType) return;
sdizdarevic 0:5bdb67970267 290 int FT = S < 1 ? 1 : S > 5 ? 5 : S;
sdizdarevic 0:5bdb67970267 291 FoodType = FT - 1;
sdizdarevic 0:5bdb67970267 292 Refresh();
sdizdarevic 0:5bdb67970267 293 }
sdizdarevic 0:5bdb67970267 294 void PauseGame () {Pause = true; Draw = false;}
sdizdarevic 0:5bdb67970267 295 void ResumeGame () {Pause = false; Draw = true;}
sdizdarevic 0:5bdb67970267 296 bool Paused () const {return Pause;}
sdizdarevic 0:5bdb67970267 297 void Restart()
sdizdarevic 0:5bdb67970267 298 {
sdizdarevic 0:5bdb67970267 299 TMove.detach();
sdizdarevic 0:5bdb67970267 300 SnakeLen = eY = Score = 0;
sdizdarevic 0:5bdb67970267 301 eX = 3;
sdizdarevic 0:5bdb67970267 302 Dir = 2;
sdizdarevic 0:5bdb67970267 303 Started = false;
sdizdarevic 0:5bdb67970267 304 Start();
sdizdarevic 0:5bdb67970267 305 }
sdizdarevic 0:5bdb67970267 306 };
sdizdarevic 0:5bdb67970267 307 const bool Snakelib::SnakeTypes [2][6][3][3] =
sdizdarevic 0:5bdb67970267 308 {
sdizdarevic 0:5bdb67970267 309 {
sdizdarevic 0:5bdb67970267 310 {{1, 1, 1}, {1, 1, 1}, {1, 1, 1}},
sdizdarevic 0:5bdb67970267 311 {{1, 1, 1}, {1, 0, 1}, {1, 1, 1}},
sdizdarevic 0:5bdb67970267 312 {{0, 1, 0}, {1, 1, 1}, {0, 1, 0}},
sdizdarevic 0:5bdb67970267 313 {{0, 1, 0}, {1, 0, 1}, {0, 1, 0}},
sdizdarevic 0:5bdb67970267 314 {{1, 1, 1}, {1, 1, 1}, {1, 1, 1}},
sdizdarevic 0:5bdb67970267 315 {{1, 1, 1}, {1, 0, 1}, {1, 1, 1}}
sdizdarevic 0:5bdb67970267 316 },
sdizdarevic 0:5bdb67970267 317 {
sdizdarevic 0:5bdb67970267 318 {{1, 1, 1}, {1, 0, 1}, {1, 1, 1}},
sdizdarevic 0:5bdb67970267 319 {{1, 1, 1}, {1, 1, 1}, {1, 1, 1}},
sdizdarevic 0:5bdb67970267 320 {{0, 1, 0}, {1, 0, 1}, {0, 1, 0}},
sdizdarevic 0:5bdb67970267 321 {{0, 1, 0}, {1, 1, 1}, {0, 1, 0}},
sdizdarevic 0:5bdb67970267 322 {{1, 1, 1}, {1, 1, 1}, {1, 1, 1}},
sdizdarevic 0:5bdb67970267 323 {{1, 1, 1}, {1, 0, 1}, {1, 1, 1}}
sdizdarevic 0:5bdb67970267 324 }
sdizdarevic 0:5bdb67970267 325 };
sdizdarevic 0:5bdb67970267 326 const bool Snakelib::SnakeFood [5][3][3] =
sdizdarevic 0:5bdb67970267 327 {
sdizdarevic 0:5bdb67970267 328 {{1, 0, 1}, {0, 1, 0}, {1, 0, 1}},
sdizdarevic 0:5bdb67970267 329 {{1, 1, 1}, {1, 1, 1}, {1, 1, 1}},
sdizdarevic 0:5bdb67970267 330 {{1, 1, 1}, {1, 0, 1}, {1, 1, 1}},
sdizdarevic 0:5bdb67970267 331 {{0, 1, 0}, {1, 1, 1}, {0, 1, 0}},
sdizdarevic 0:5bdb67970267 332 {{0, 1, 0}, {1, 0, 1}, {0, 1, 0}}
sdizdarevic 0:5bdb67970267 333 };
sdizdarevic 0:5bdb67970267 334 const int Snakelib::Pos [2][3][3] =
sdizdarevic 0:5bdb67970267 335 {
sdizdarevic 0:5bdb67970267 336 {{-1, 0, 1}, {-1, 0, 1}, {-1, 0, 1}},
sdizdarevic 0:5bdb67970267 337 {{1, 1, 1}, {0, 0, 0}, {-1, -1, -1}}
sdizdarevic 0:5bdb67970267 338 };
sdizdarevic 0:5bdb67970267 339 const double Snakelib::Speeds [10] = {1., .8, .7, .5, .32, .25, .15, .1, .075, .050};
sdizdarevic 0:5bdb67970267 340 const unsigned char Snakelib::Points[10] = {1, 1, 1, 2, 3, 4, 5, 6, 8, 10};
sdizdarevic 0:5bdb67970267 341 #endif //E_SNAKE_H