For the 8x8x8 RGB LEDCube
Embed:
(wiki syntax)
Show/hide line numbers
3DSnake.h
00001 #pragma once 00002 00003 #include "LEDCUBE_RGB_888.h" 00004 00005 #define MAX_BODY 8 00006 00007 struct Vect{ 00008 int x, y, z; 00009 }; 00010 class Snake{ 00011 public: 00012 bool Mf; 00013 Vect Body[MAX_BODY]; 00014 COL color[2]; 00015 Snake(int x, int y, int z, COL CH, COL C){ 00016 Mf = true; 00017 for(int i = 0; i < MAX_BODY; i++){ 00018 Body[i].x = x; 00019 Body[i].y = y; 00020 Body[i].z = z; 00021 } 00022 color[0] = CH; 00023 color[1] = C; 00024 } 00025 void moveHead(int D){ 00026 D %= 12; 00027 int s = 1; 00028 //Vect m[6] = {{1,0,0},{0,1,0},{0,0,1},{-1,0,0},{0,-1,0},{0,0,-1}}; 00029 int mx[12] = {1,0,0,-1,0,0,1,0,1,-1,0,-1}; 00030 int my[12] = {0,1,0,0,-1,0,1,1,0,-1,-1,0}; 00031 int mz[12] = {0,0,1,0,0,-1,0,1,1,0,-1,-1}; 00032 Mf = true; 00033 Body[0].x += mx[D]; 00034 if(Body[0].x < 0){Body[0].x = 0;Mf = false;} 00035 if(Body[0].x >= 8-s){Body[0].x = 7-s;Mf = false;} 00036 Body[0].y += my[D]; 00037 if(Body[0].y < 0){Body[0].y = 0;Mf = false;} 00038 if(Body[0].y >= 8-s){Body[0].y = 7-s;Mf = false;} 00039 Body[0].z += mz[D]; 00040 if(Body[0].z < 0){Body[0].z = 0;Mf = false;} 00041 if(Body[0].z >= 8-s){Body[0].z = 7-s;Mf = false;} 00042 if(D >= 5)Mf = true; 00043 }; 00044 void moveBody(){ 00045 if(!Mf)return; 00046 for(int i = MAX_BODY-1; i >= 1; i--){ 00047 Body[i] = Body[i-1]; 00048 } 00049 } 00050 void draw(){ 00051 for(int i = 0; i < MAX_BODY; i++){ 00052 PutPixel( 00053 Body[i].x, 00054 Body[i].y, 00055 Body[i].z, 00056 color[1] 00057 ); 00058 } 00059 } 00060 void drawHB(){ 00061 for(int i = 1; i < MAX_BODY; i++){ 00062 PutPixel( 00063 Body[i].x, 00064 Body[i].y, 00065 Body[i].z, 00066 color[1] 00067 ); 00068 DrawBox( 00069 Body[i].x, 00070 Body[i].y, 00071 Body[i].z, 00072 2,2,2, 00073 color[1], 00074 true 00075 ); 00076 } 00077 PutPixel( 00078 Body[0].x, 00079 Body[0].y, 00080 Body[0].z, 00081 color[0] 00082 ); 00083 DrawBox( 00084 Body[0].x, 00085 Body[0].y, 00086 Body[0].z, 00087 2,2,2, 00088 color[0], 00089 true 00090 ); 00091 } 00092 };
Generated on Wed Jul 27 2022 09:49:51 by 1.7.2