For the 8x8x8 RGB LEDCube
3DSnake.h@0:f3abe0df0567, 2017-01-29 (annotated)
- Committer:
- zgtk_r
- Date:
- Sun Jan 29 02:16:05 2017 +0000
- Revision:
- 0:f3abe0df0567
For the 8x8x8 RGB LEDCube
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
zgtk_r | 0:f3abe0df0567 | 1 | #pragma once |
zgtk_r | 0:f3abe0df0567 | 2 | |
zgtk_r | 0:f3abe0df0567 | 3 | #include "LEDCUBE_RGB_888.h" |
zgtk_r | 0:f3abe0df0567 | 4 | |
zgtk_r | 0:f3abe0df0567 | 5 | #define MAX_BODY 8 |
zgtk_r | 0:f3abe0df0567 | 6 | |
zgtk_r | 0:f3abe0df0567 | 7 | struct Vect{ |
zgtk_r | 0:f3abe0df0567 | 8 | int x, y, z; |
zgtk_r | 0:f3abe0df0567 | 9 | }; |
zgtk_r | 0:f3abe0df0567 | 10 | class Snake{ |
zgtk_r | 0:f3abe0df0567 | 11 | public: |
zgtk_r | 0:f3abe0df0567 | 12 | bool Mf; |
zgtk_r | 0:f3abe0df0567 | 13 | Vect Body[MAX_BODY]; |
zgtk_r | 0:f3abe0df0567 | 14 | COL color[2]; |
zgtk_r | 0:f3abe0df0567 | 15 | Snake(int x, int y, int z, COL CH, COL C){ |
zgtk_r | 0:f3abe0df0567 | 16 | Mf = true; |
zgtk_r | 0:f3abe0df0567 | 17 | for(int i = 0; i < MAX_BODY; i++){ |
zgtk_r | 0:f3abe0df0567 | 18 | Body[i].x = x; |
zgtk_r | 0:f3abe0df0567 | 19 | Body[i].y = y; |
zgtk_r | 0:f3abe0df0567 | 20 | Body[i].z = z; |
zgtk_r | 0:f3abe0df0567 | 21 | } |
zgtk_r | 0:f3abe0df0567 | 22 | color[0] = CH; |
zgtk_r | 0:f3abe0df0567 | 23 | color[1] = C; |
zgtk_r | 0:f3abe0df0567 | 24 | } |
zgtk_r | 0:f3abe0df0567 | 25 | void moveHead(int D){ |
zgtk_r | 0:f3abe0df0567 | 26 | D %= 12; |
zgtk_r | 0:f3abe0df0567 | 27 | int s = 1; |
zgtk_r | 0:f3abe0df0567 | 28 | //Vect m[6] = {{1,0,0},{0,1,0},{0,0,1},{-1,0,0},{0,-1,0},{0,0,-1}}; |
zgtk_r | 0:f3abe0df0567 | 29 | int mx[12] = {1,0,0,-1,0,0,1,0,1,-1,0,-1}; |
zgtk_r | 0:f3abe0df0567 | 30 | int my[12] = {0,1,0,0,-1,0,1,1,0,-1,-1,0}; |
zgtk_r | 0:f3abe0df0567 | 31 | int mz[12] = {0,0,1,0,0,-1,0,1,1,0,-1,-1}; |
zgtk_r | 0:f3abe0df0567 | 32 | Mf = true; |
zgtk_r | 0:f3abe0df0567 | 33 | Body[0].x += mx[D]; |
zgtk_r | 0:f3abe0df0567 | 34 | if(Body[0].x < 0){Body[0].x = 0;Mf = false;} |
zgtk_r | 0:f3abe0df0567 | 35 | if(Body[0].x >= 8-s){Body[0].x = 7-s;Mf = false;} |
zgtk_r | 0:f3abe0df0567 | 36 | Body[0].y += my[D]; |
zgtk_r | 0:f3abe0df0567 | 37 | if(Body[0].y < 0){Body[0].y = 0;Mf = false;} |
zgtk_r | 0:f3abe0df0567 | 38 | if(Body[0].y >= 8-s){Body[0].y = 7-s;Mf = false;} |
zgtk_r | 0:f3abe0df0567 | 39 | Body[0].z += mz[D]; |
zgtk_r | 0:f3abe0df0567 | 40 | if(Body[0].z < 0){Body[0].z = 0;Mf = false;} |
zgtk_r | 0:f3abe0df0567 | 41 | if(Body[0].z >= 8-s){Body[0].z = 7-s;Mf = false;} |
zgtk_r | 0:f3abe0df0567 | 42 | if(D >= 5)Mf = true; |
zgtk_r | 0:f3abe0df0567 | 43 | }; |
zgtk_r | 0:f3abe0df0567 | 44 | void moveBody(){ |
zgtk_r | 0:f3abe0df0567 | 45 | if(!Mf)return; |
zgtk_r | 0:f3abe0df0567 | 46 | for(int i = MAX_BODY-1; i >= 1; i--){ |
zgtk_r | 0:f3abe0df0567 | 47 | Body[i] = Body[i-1]; |
zgtk_r | 0:f3abe0df0567 | 48 | } |
zgtk_r | 0:f3abe0df0567 | 49 | } |
zgtk_r | 0:f3abe0df0567 | 50 | void draw(){ |
zgtk_r | 0:f3abe0df0567 | 51 | for(int i = 0; i < MAX_BODY; i++){ |
zgtk_r | 0:f3abe0df0567 | 52 | PutPixel( |
zgtk_r | 0:f3abe0df0567 | 53 | Body[i].x, |
zgtk_r | 0:f3abe0df0567 | 54 | Body[i].y, |
zgtk_r | 0:f3abe0df0567 | 55 | Body[i].z, |
zgtk_r | 0:f3abe0df0567 | 56 | color[1] |
zgtk_r | 0:f3abe0df0567 | 57 | ); |
zgtk_r | 0:f3abe0df0567 | 58 | } |
zgtk_r | 0:f3abe0df0567 | 59 | } |
zgtk_r | 0:f3abe0df0567 | 60 | void drawHB(){ |
zgtk_r | 0:f3abe0df0567 | 61 | for(int i = 1; i < MAX_BODY; i++){ |
zgtk_r | 0:f3abe0df0567 | 62 | PutPixel( |
zgtk_r | 0:f3abe0df0567 | 63 | Body[i].x, |
zgtk_r | 0:f3abe0df0567 | 64 | Body[i].y, |
zgtk_r | 0:f3abe0df0567 | 65 | Body[i].z, |
zgtk_r | 0:f3abe0df0567 | 66 | color[1] |
zgtk_r | 0:f3abe0df0567 | 67 | ); |
zgtk_r | 0:f3abe0df0567 | 68 | DrawBox( |
zgtk_r | 0:f3abe0df0567 | 69 | Body[i].x, |
zgtk_r | 0:f3abe0df0567 | 70 | Body[i].y, |
zgtk_r | 0:f3abe0df0567 | 71 | Body[i].z, |
zgtk_r | 0:f3abe0df0567 | 72 | 2,2,2, |
zgtk_r | 0:f3abe0df0567 | 73 | color[1], |
zgtk_r | 0:f3abe0df0567 | 74 | true |
zgtk_r | 0:f3abe0df0567 | 75 | ); |
zgtk_r | 0:f3abe0df0567 | 76 | } |
zgtk_r | 0:f3abe0df0567 | 77 | PutPixel( |
zgtk_r | 0:f3abe0df0567 | 78 | Body[0].x, |
zgtk_r | 0:f3abe0df0567 | 79 | Body[0].y, |
zgtk_r | 0:f3abe0df0567 | 80 | Body[0].z, |
zgtk_r | 0:f3abe0df0567 | 81 | color[0] |
zgtk_r | 0:f3abe0df0567 | 82 | ); |
zgtk_r | 0:f3abe0df0567 | 83 | DrawBox( |
zgtk_r | 0:f3abe0df0567 | 84 | Body[0].x, |
zgtk_r | 0:f3abe0df0567 | 85 | Body[0].y, |
zgtk_r | 0:f3abe0df0567 | 86 | Body[0].z, |
zgtk_r | 0:f3abe0df0567 | 87 | 2,2,2, |
zgtk_r | 0:f3abe0df0567 | 88 | color[0], |
zgtk_r | 0:f3abe0df0567 | 89 | true |
zgtk_r | 0:f3abe0df0567 | 90 | ); |
zgtk_r | 0:f3abe0df0567 | 91 | } |
zgtk_r | 0:f3abe0df0567 | 92 | }; |