For the 8x8x8 RGB LEDCube

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?

UserRevisionLine numberNew 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 };