Как сделать переключатель в процесинг?
- Войдите на сайт для отправки комментариев
Сб, 26/06/2021 - 16:41
Как сделать переключатель в процесинг? Например при первом нажатие на кнопку происходит действие 1, а при втором - действие 2. После действия 2 идет действие 1.
Ввести переменную которая при каждом нажатии на кнопку увеличивается на 1 (при превышении определённого порога сбрасывать её значение в 0). Проверять её значение и по ним делать действия 1,2,3...
Там это все работает не так, там картинки красивые и стрелочки (на сколько я знаю).
Очень всё похоже на Ардуино или наоборот :-)
import processing.serial.*; //3D processing // //ВИРТУАЛЬНЫЙ ИСПОЛНИТЕЛЬ ЭФФЕКТОВ СВЕТОДИОДНОГО КУБА 6*6*6// float rotX = 0.0, rotY = 0.0; int lastX, lastY; float distX = 0.0, distY = 0.0; float X,Y; int x=0,y=0,z=0;//счётчики - координаты int i;//счётчик int s=0;//счётчик int ss=0;//счётчик int sss=0;//счётчик int R=25;//размер куба в окне int fl=1;//флаг состояний (управляет сменой режимов внешнего вида куба) int k=0;//счётчик int j=0;//счётчик int raz=2;//коэффициент влияющий на размер элемента куба boolean fl_A=true;//флаг состояний (управление переключением эффекта) boolean fl_B=true;//флаг состояний (управляет сменой направлений вращения куба при автономном режиме) boolean fl_D=true;//флаг состояний (управляет стоп кадром) int r=0,g=255,b=0;//составляющие цвета int color_=0;//счётчик цвета int forma_=0;//счётчик формы элемента куба int n=50;//скорость анимации int T=0;//переменная хранения моментов времени int m=0;//счётчик int knopka=50;//счётчик включённой кнопки int fotka=0;//счётчик фоток int transf=0;//счётчик трансформаций - реверс,поворот анимации boolean fl_C=true;//флаг состояний (управляет сменой ручного и автоматического вращения куба ) int N=0;//переменная определяет цвет экрана (ночь,утро-вечер,день) boolean fl_P=false;//управляет включением-выключением порта int port_no=0;//номер порта,счётчик /////////////////////////////////////////////////////////////////////// // последовательный порт: Serial myPort; /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////// массив данных нескольких эффектов //////////////////////////////// int []tabl_dano={17,23,29,35,48,54,60,66,156,162,168,174,197,203,209,215,20,21,56,57,91,92,93,94,127,128,129,130,164,165,200,201,227, 17,23,29,35,42,48,54,60,156,162,168,174,191,197,203,209,20,21,56,57,91,92,93,94,127,128,129,130,164,165,200,201,227, 6,12,18,24,53,59,65,71,155,161,167,173,192,198,204,210,20,21,56,57,91,92,93,94,127,128,129,130,164,165,200,201,227, 12,18,24,30,53,59,65,71,161,167,173,179,192,198,204,210,20,21,56,57,91,92,93,94,127,128,129,130,164,165,200,201,227, 12,18,24,30,47,53,59,65,161,167,173,179,186,192,198,204,20,21,56,57,91,92,93,94,127,128,129,130,164,165,200,201,227, 11,17,23,29,48,54,60,66,150,156,162,168,197,203,209,215,20,21,56,57,91,92,93,94,127,128,129,130,164,165,200,201,227, 255,//квадропод шагает// 30,31,32,33,34,35,61,62,63,64,66,67,68,69,70,71,92,93,97,98,99,100,102,103,104,105,106,107,128,129,133,134,135,136,138,139,140,141,142,143,169,170,171,172,174,175,176,177,178,179,210,211,212,213,214,215,227, 255,//пирамидка статичная // 26,27,28,32,33,34,49,50,51,52,62,63,64,68,69,70,75,76,77,81,82,83,85,88,111,112,113,117,118,119,121,124,157,158,159,160,168,169,170,174,175,176,204,205,206,210,211,212,227, 25,26,27,31,32,33,39,40,41,45,46,47,49,50,51,52,61,62,63,67,68,69,75,76,77,81,82,83,85,88,121,124,157,158,159,160,163,164,165,169,170,171,199,200,201,205,206,207,227, 24,25,26,30,31,32,49,50,51,52,60,61,62,66,67,68,75,76,77,81,82,83,85,88,111,112,113,117,118,119,121,124,157,158,159,160,170,171,172,176,177,178,206,207,208,212,213,214,227, 19,20,21,25,26,27,49,50,51,52,55,56,57,61,62,63,85,88,111,112,113,117,118,119,121,124,147,148,149,153,154,155,157,158,159,160,169,170,171,175,176,177,205,206,207,211,212,213,227, 255,//динозавр походка // 5,227, 4,11,41,227, 3,10,17,40,47,77,227, 2,9,16,23,39,46,53,76,83,113,227, 1,8,15,22,29,38,45,52,59,75,82,89,112,119,149,227, 0,7,14,21,28,35,37,44,51,58,65,74,81,88,95,111,118,125,148,155,185,227, 6,13,20,27,34,36,43,50,57,64,71,73,80,87,94,110,117,124,131,147,154,161,184,191,227, 12,19,26,33,42,49,56,63,70,72,79,86,93,100,107,109,116,123,130,137,146,153,160,167,183,190,227, 18,25,32,48,55,62,69,78,85,92,99,106,108,115,122,129,136,143,145,152,159,166,173,182,189,196,203,227, 24,31,54,61,68,84,91,98,105,114,121,128,135,142,144,151,158,165,172,179,181,188,195,202,209,227, 30,60,67,90,97,104,120,127,134,141,150,157,164,171,178,180,187,194,201,208,215,227, 66,96,103,126,133,140,156,163,170,177,186,193,200,207,214,227, 102,132,139,162,169,176,192,199,206,213,227, 138,168,175,198,205,212,227, 174,204,211,227, 210,227, 255,// ЭФФЕКТ СЛОЙ ДВИЖЕТСЯ ПО ДИАГОНАЛИ КУБА СНИЗУ ВВЕРХ, СЛЕВА НАПРОВО, ВГЛУБЬ// 0,7,14,21,28,35,36,43,50,57,64,71,72,79,86,93,100,107,108,115,122,129,136,143,144,151,158,165,172,179,180,187,194,201,208,215,227, 1,6,13,20,27,34,37,42,49,56,63,70,73,78,85,92,99,106,109,114,121,128,135,142,145,150,157,164,171,178,181,193,200,207,214,227, 2,7,12,19,26,38,43,48,55,62,69,74,79,84,91,98,105,110,115,120,127,134,141,146,151,156,163,170,177,182,187,192,199,206,213,227, 3,8,13,18,25,32,39,44,49,54,61,68,75,80,85,90,97,104,111,116,121,126,133,140,147,152,157,162,169,176,183,188,193,198,205,212,227, 4,9,14,19,24,31,40,45,50,55,60,67,76,81,86,91,96,103,112,117,122,127,132,139,148,153,158,163,168,175,184,189,194,199,204,211,227, 5,10,15,20,25,30,41,46,51,56,61,66,77,82,87,92,97,102,113,118,123,128,133,138,149,154,159,164,169,174,185,190,195,200,205,210,227, 4,11,16,21,26,31,40,47,52,57,62,67,76,83,88,93,98,103,112,119,124,129,134,139,148,155,160,165,170,175,184,191,196,201,206,211,227, 3,10,17,22,27,32,39,46,53,58,63,68,75,82,89,94,99,104,111,118,125,130,135,140,147,154,161,166,171,176,183,190,197,202,207,212,227, 2,9,16,23,28,33,38,45,52,59,64,69,74,81,88,95,100,105,110,117,124,131,136,141,146,153,160,167,172,177,182,189,196,203,208,213,227, 1,8,15,22,29,34,37,44,51,58,65,70,73,80,87,94,101,106,109,116,123,130,137,142,145,152,159,166,173,178,181,188,195,202,209,214,227, 255,// ЭФФЕКТ ВОЛНА// 0,1,6,7,10,11,12,13,16,17,22,23,36,37,42,43,46,47,48,49,52,53,58,59,160,161,162,163,166,167,168,169,172,173,174,175,196,197,198,199,202,203,204,205,208,209,210,211,227, 4,5,6,7,10,11,12,13,16,17,18,19,40,41,42,43,46,47,48,49,52,53,54,55,154,155,156,157,160,161,162,163,166,167,168,169,190,191,192,193,196,197,198,199,202,203,204,205,227, 10,11,12,13,16,17,18,19,22,23,24,25,46,47,48,49,52,53,54,55,58,59,60,61,148,149,150,151,154,155,156,157,160,161,162,163,184,185,186,187,190,191,192,193,196,197,198,199,227, 16,17,18,19,22,23,24,25,28,29,30,31,52,53,54,55,58,59,60,61,64,65,66,67,144,145,150,151,154,155,156,157,160,161,166,167,180,181,186,187,190,191,192,193,196,197,202,203,227, 12,13,18,19,22,23,24,25,28,29,34,35,48,49,54,55,58,59,60,61,64,65,70,71,150,151,156,157,160,161,162,163,166,167,172,173,186,187,192,193,196,197,198,199,202,203,208,209,227, 6,7,12,13,16,17,18,19,22,23,28,29,42,43,48,49,52,53,54,55,58,59,64,65,156,157,162,163,166,167,168,169,172,173,178,179,192,193,198,199,202,203,204,205,208,209,214,215,227, 255,// мотор-цилиндры // 4,5,10,11,40,41,46,47,227, 3,4,5,9,11,15,16,17,39,41,51,53,75,76,77,81,83,87,88,89,227, 2,3,4,5,8,11,14,17,20,21,22,23,38,41,56,59,74,77,92,95,110,111,112,113,116,119,122,125,128,129,130,131,227, 1,2,3,4,5,7,11,13,17,19,23,25,26,27,28,29,37,41,61,65,73,77,97,101,109,113,133,137,145,146,147,148,149,151,155,157,161,163,167,169,170,171,172,173,227, 0,1,2,3,4,5,6,11,12,17,18,23,24,29,30,31,32,33,34,35,36,41,66,71,72,77,102,107,108,113,126,138,143,144,149,174,179,180,181,182,183,184,185,186,191,192,197,198,203,204,209,210,211,212,213,214,215,227, 42,43,44,45,46,48,52,54,58,60,64,66,70,78,82,102,106,114,118,138,142,150,154,174,178,186,187,188,189,190,192,196,198,202,204,208,210,211,212,213,214,227, 84,85,86,87,90,93,96,99,102,103,104,105,120,123,138,141,156,159,174,177,192,193,194,195,198,201,204,207,210,211,212,213,227, 126,127,128,132,134,138,139,140,162,164,174,176,198,199,200,204,206,210,211,212,227, 168,169,174,175,204,205,210,211,227, 255,// ЭФФЕКТ НАРАСТАНИЕ И УМЕНЬШЕНИЕ КОНТУРА КУБА ПО ДИАГОНАЛИ// 3,8,26,33,38,49,55,68,79,84,90,97,115,120,126,133,146,157,163,176,183,188,206,213,227, 2,7,25,32,37,48,54,67,78,84,90,96,114,120,126,132,145,156,162,175,182,187,205,212,227, 1,6,24,31,36,48,54,66,78,84,90,96,114,120,126,132,144,156,162,174,181,186,204,211,227, 0,6,24,30,36,48,54,66,78,84,90,96,114,120,126,132,144,156,162,174,180,186,204,210,227, 0,6,24,30,36,48,54,66,78,85,91,96,114,121,127,132,138,144,156,162,174,180,186,204,210,227, 0,6,24,30,36,49,55,61,66,79,86,92,97,115,122,128,133,144,157,163,174,180,186,204,210,227, 0,7,25,30,37,50,56,67,80,87,93,98,116,123,129,134,145,158,164,175,180,187,205,210,227, 1,8,26,31,38,51,57,68,81,88,94,99,117,124,130,135,146,159,165,176,181,188,206,211,227, 2,9,27,32,39,52,58,69,82,89,95,100,118,125,131,136,147,160,166,177,182,189,207,212,227, 3,10,28,33,40,53,59,70,83,89,95,101,119,125,131,137,148,161,167,178,183,190,208,213,227, 4,11,29,34,41,53,59,71,83,89,95,101,107,119,125,131,137,149,161,167,179,184,191,209,214,227, 5,11,29,35,41,53,59,71,83,89,95,101,119,125,131,137,143,149,161,167,179,185,191,209,215,227, 5,11,29,35,41,53,59,71,83,88,94,101,119,124,130,137,149,161,167,179,185,191,209,215,227, 5,11,29,35,41,52,58,71,82,87,93,100,118,123,129,136,149,160,166,179,185,191,209,215,227, 5,10,28,35,40,51,57,70,81,86,92,99,117,122,128,135,148,159,165,178,185,190,208,215,227, 4,9,27,34,39,50,56,69,80,85,91,98,116,121,127,134,147,158,164,177,184,189,207,214,227, 255,// ЭФФЕКТ ВЫТРЯХИВАНИЯ КОВРА// 0,7,14,21,28,35,37,44,51,58,65,70,74,81,88,95,100,105,111,118,125,130,135,140,148,155,160,165,170,175,185,190,195,200,205,210,227, 1,8,15,22,29,34,38,45,52,59,64,69,75,82,89,94,99,104,112,119,124,129,134,139,149,154,159,164,169,174,184,189,194,199,204,211,227, 2,9,16,23,28,33,39,46,53,58,63,68,76,83,88,93,98,103,113,118,123,128,133,138,148,153,158,163,168,175,183,188,193,198,205,212,227, 3,10,17,22,27,32,40,47,52,57,62,67,77,82,87,92,97,102,112,117,122,127,132,139,147,152,157,162,169,176,182,187,192,199,206,213,227, 4,11,16,21,26,31,41,46,51,56,61,66,76,81,86,91,96,103,111,116,121,126,133,140,146,151,156,163,170,177,181,186,193,200,207,214,227, 5,10,15,20,25,30,40,45,50,55,60,67,75,80,85,90,97,104,110,115,120,127,134,141,145,150,157,164,171,178,180,187,194,201,208,215,227, 4,9,14,19,24,31,39,44,49,54,61,68,74,79,84,91,98,105,109,114,121,128,135,142,144,151,158,165,172,179,181,188,195,202,209,214,227, 3,8,13,18,25,32,38,43,48,55,62,69,73,78,85,92,99,106,108,115,122,129,136,143,145,152,159,166,173,178,182,189,196,203,208,213,227, 2,7,12,19,26,33,37,42,49,56,63,70,72,79,86,93,100,107,109,116,123,130,137,142,146,153,160,167,172,177,183,190,197,202,207,212,227, 1,6,13,20,27,34,36,43,50,57,64,71,73,80,87,94,101,106,110,117,124,131,136,141,147,154,161,166,171,176,184,191,196,201,206,211,227, 255,// ВОЛНА-ГОРА// 5,10,15,20,25,30,180,187,194,201,208,215,227, 11,16,21,26,31,66,144,181,188,195,202,209,227, 17,22,27,32,67,102,108,145,182,189,196,227, 23,28,33,68,72,103,109,138,146,183,190,197,227, 29,34,36,69,73,104,110,139,147,174,184,191,227, 0,35,37,70,74,105,111,140,148,175,185,210,227, 1,6,38,71,75,106,112,141,149,176,204,211,227, 2,7,12,39,76,107,113,142,177,198,205,212,227, 3,8,13,18,40,77,143,178,192,199,206,213,227, 4,9,14,19,24,41,179,186,193,200,207,214,227, 255,// ДВЕ ЗМЕЙКИ ГОНЯЮТСЯ ДРУГ ЗА ДРУГОМ// 2,7,8,9,12,13,14,15,16,19,20,21,25,26,27,31,32,33,227, 1,2,3,6,7,8,9,10,13,14,15,19,20,21,25,26,27,38,227, 0,1,2,3,4,7,8,9,13,14,15,19,20,21,37,38,39,74,227, 1,2,3,7,8,9,13,14,15,36,37,38,39,40,73,74,75,110,227, 1,2,3,7,8,9,37,38,72,73,74,75,76,109,110,111,146,227, 1,2,3,37,38,39,73,74,75,108,109,110,111,112,145,146,147,182,227, 37,38,39,73,74,75,109,110,111,144,145,146,147,148,181,182,183,188,227, 73,74,75,109,110,111,145,146,147,180,181,182,183,184,187,188,189,194,227, 109,110,111,145,146,147,181,182,183,186,187,188,189,190,193,194,195,200,227, 145,146,147,181,182,183,187,188,189,192,193,194,195,196,199,200,201,206,227, 181,182,183,187,188,189,193,194,195,198,199,200,201,202,205,206,207,212,227, 176,187,188,189,193,194,195,199,200,201,204,205,206,207,208,211,212,213,227, 140,175,176,177,193,194,195,199,200,201,205,206,207,210,211,212,213,214,227, 104,139,140,141,174,175,176,177,178,199,200,201,205,206,207,211,212,213,227, 68,103,104,105,138,139,140,141,142,175,176,177,205,206,207,211,212,213,227, 32,67,68,69,102,103,104,105,106,139,140,141,175,176,177,211,212,213,227, 26,31,32,33,66,67,68,69,70,103,104,105,139,140,141,175,176,177,227, 20,25,26,27,30,31,32,33,34,67,68,69,103,104,105,139,140,141,227, 14,19,20,21,24,25,26,27,28,31,32,33,67,68,69,103,104,105,227, 8,13,14,15,18,19,20,21,22,25,26,27,31,32,33,67,68,69,227, 255,// СТРЕЛКА ДВИЖЕТСЯ ГОРИЗОНТАЛЬНО ПО ВНЕШНИМ СТОРОНАМ КУБА// 4,9,11,16,39,41,51,53,76,81,83,88,227, 111,116,118,123,146,148,158,160,183,188,190,195,227, 128,133,135,163,165,175,177,200,205,207,212,227, 19,24,26,31,54,56,66,68,91,96,98,103,227, 2,7,9,14,37,39,49,51,74,79,81,86,227, 111,116,118,123,146,148,158,160,183,188,190,195,227, 130,135,137,142,165,167,177,179,202,207,209,214,227, 81,86,88,93,116,118,128,130,153,158,160,165,227, 22,27,29,34,57,59,69,71,94,99,101,106,227, 49,54,56,61,84,86,96,98,121,126,128,133,227, 39,44,46,51,74,76,86,88,111,116,118,123,227, 55,60,62,67,90,92,102,104,127,132,134,139,227, 118,123,125,130,153,155,165,167,190,195,197,202,227, 255,// СЛУЧАЙНОЕ ДВИЖЕНИЕ ШАРА// 0,1,2,3,4,5,227, 6,7,8,9,10,11,36,37,38,39,40,41,227, 12,13,14,15,16,17,42,43,44,45,46,47,72,73,74,75,76,77,227, 18,19,20,21,22,23,48,49,50,51,52,53,78,79,80,81,82,83,108,109,110,111,112,113,227, 24,25,26,27,28,29,54,55,56,57,58,59,84,85,86,87,88,89,114,115,116,117,118,119,144,145,146,147,148,149,227, 30,31,32,33,34,35,60,61,62,63,64,65,90,91,92,93,94,95,120,121,122,123,124,125,150,151,152,153,154,155,180,181,182,183,184,185,227, 66,67,68,69,70,71,96,97,98,99,100,101,126,127,128,129,130,131,156,157,158,159,160,161,186,187,188,189,190,191,227, 102,103,104,105,106,107,132,133,134,135,136,137,162,163,164,165,166,167,192,193,194,195,196,197,227, 138,139,140,141,142,143,168,169,170,171,172,173,198,199,200,201,202,203,227, 174,175,176,177,178,179,204,205,206,207,208,209,227, 210,211,212,213,214,215,227, 30,31,32,33,34,35,227, 24,25,26,27,28,29,67,68,69,70,71,227, 18,19,20,21,22,23,60,61,62,63,64,65,102,103,104,105,106,107,227, 12,13,14,15,16,17,54,55,56,57,58,59,96,97,98,99,100,101,138,139,140,141,142,143,227, 6,7,8,9,10,11,48,49,50,51,52,53,90,91,92,93,94,95,132,133,134,135,136,137,174,175,176,177,178,179,227, 0,1,2,3,4,5,42,43,44,45,46,47,84,85,86,87,88,89,126,127,128,129,130,131,168,169,170,171,172,173,210,211,212,213,214,215,227, 36,37,38,39,40,41,78,79,80,81,82,83,120,121,122,123,124,125,162,163,164,165,166,167,204,205,206,207,208,209,227, 72,73,74,75,76,77,114,115,116,117,118,119,156,157,158,159,160,161,198,199,200,201,202,203,227, 108,109,110,111,112,113,150,151,152,153,154,155,192,193,194,195,196,197,227, 144,145,146,147,148,149,186,187,188,189,190,191,227, 180,181,182,183,184,185,227, 255,// ДВЕ ПЛОСКОСТИ ВЕРТИКАЛЬНЫЕ ПООЧЕРЕДИ ДВИГАЮТСЯ ПО ДИАГОНАЛИ// //добавка здесь новых данных для эффектов 300}; int []tabl_eff=new int[600]; int nomer_eff=1;//счётчик номеров эффектов StringList nazvania_eff;//переменная хранения списка имён эффектов //////////////////////////////////////////////////////////////////////// void setup() { size(650, 600, P3D);//размер экрана //noStroke(); stroke(0,100,100,100); frameRate(10);//число кадров в секунду //////////////// // печатаем список всех доступных последовательных портов: printArray (Serial.list()); // открываем используемый порт на нужной скорости: myPort = new Serial(this, Serial.list()[0], 115200); nazvania_eff= new StringList();//массив хранения имён эффектов ///////// НАЗВАНИЯ эффектов вносим в список /////////////// nazvania_eff.append("ДВЕ ПЛОСКОСТИ ВЕРТИКАЛЬНЫЕ ПООЧЕРЕДИ ДВИГАЮТСЯ ПО ДИАГОНАЛИ");// нулевое по счёту название эфф. в массиве хр. имён - последние в массиве данных!!! ///// добавка здесь новых названий эффектов nazvania_eff.append("КВАДРОПОД ШАГАЕТ"); nazvania_eff.append("ПИРАМИДКА СТАТИЧНАЯ"); nazvania_eff.append("ДИНОЗАВР - ПОХОДКА"); nazvania_eff.append("СЛОЙ ДВИЖЕТСЯ ПО ДИАГОНАЛИ КУБА СНИЗУ ВВЕРХ, СЛЕВА НАПРОВО, ВГЛУБЬ"); nazvania_eff.append("ЭФФЕКТ ВОЛНА"); nazvania_eff.append("МОТОР - ЦИЛИНДРЫ"); nazvania_eff.append("НАРАСТАНИЕ И УМЕНЬШЕНИЕ КОНТУРА КУБА ПО ДИАГОНАЛИ"); nazvania_eff.append("ВЫТРЯХИВАНИЯ КОВРА"); nazvania_eff.append("ВОЛНА-ГОРА"); nazvania_eff.append("ДВЕ ЗМЕЙКИ ГОНЯЮТСЯ ДРУГ ЗА ДРУГОМ"); nazvania_eff.append("СТРЕЛКА ДВИЖЕТСЯ ГОРИЗОНТАЛЬНО ПО ВНЕШНИМ СТОРОНАМ КУБА"); nazvania_eff.append("СЛУЧАЙНОЕ ДВИЖЕНИЕ ШАРА"); } //////////////////////////////////////////////////////////////////////// void draw() {delay(n);//скорость анимации регулирует ////////////////////////////////////////////////// i=0; while(fl_A==true){tabl_eff[i]=tabl_dano[j];if(tabl_dano[j]==255){fl_A=false;s=0;}i++;j++;if(tabl_dano[j]==300){j=0;nomer_eff=0;}}//запись в массив текущего эффекта if(fl_D==true){k++;}if(k>600){fl_A=true;k=0;nomer_eff++;}//число циклов draw на 1 эффект ///////////////////////////////////////////////// background(N);//цвет фона lights();//освещение сцены /////// РИСУЕМ кнопки управления и названия к ним - добавочно к клавишам //////////////// for (i=0;i<9;i++) { strokeWeight(3);stroke(255,0,0);fill(0, 255, 255,200);rect(20+70*i,20, 60, 30, 5);stroke(0,100,100,100);//горизонтальные кнопки strokeWeight(3);stroke(255,0,0);fill(0, 255, 255,200);rect(20,100+50*i, 60, 30, 5);stroke(0,100,100,100);//вертикальные кнопки } stroke(255,0,0);noFill();rect(10,140, 80, 100, 5);stroke(0,100,100,100);//рамка вокруг кнопок порта //////// горизонтальные кнопки /////////////// fill(0);textSize(18); text(" ФОН", 20, 40);text(" ЦВЕТ", 90, 40);textSize(12);text(" АВТ/РУЧ", 160, 40);textSize(10);text(" СТОП-ШАГ", 230, 40); textSize(14);text(" ФОРМА", 300, 40);textSize(12);text(" РАЗМЕР", 370, 40);textSize(10);text(" СКОРОСТЬ", 440, 40);textSize(11);text(" ЭФФЕКТ"+nomer_eff, 510, 40); textSize(18);text(" ФОТО", 580, 40); //////// вертикальные кнопки /////////////// textSize(11); text(" ТРАНСФ."+transf, 20, 120);textSize(9); if(fl_P==true){text(" ВКЛЮЧЕНО", 20, 170);}else{text("ВЫКЛЮЧЕНО", 20, 170);} textSize(14);text(Serial.list()[port_no],25, 220); //////////// текст с номером исполняемого эффекта //////////////// fill(255,0,0);textSize(14); text("ЭФФЕКТ №"+nomer_eff, 20, 590);textSize(14);text(nazvania_eff.get(nomer_eff), 120, 590); ///////////////////////////////////////////////// translate(width/2, (height/2)-50); ///////// НАВИГАЦИЯ исполнения эффектов //////// if (mousePressed && (mouseButton == LEFT)){if( mouseX>100&&mouseY>75&&fl_C==true){X=rotX + distY; Y=rotY + distX;fl=1;}else{fun_knopka();}}// если нажата кнопка мыши и она левая вращаем видимым кубом if(fl_C==true) { if (mousePressed && (mouseButton == RIGHT)){X=rotX + distY; Y=rotY + distX;fl=0;}// если нажата кнопка мыши и она правая вращаем невидимым кубом rotateX(X); rotateY(Y); } else{avtonom();} if (mousePressed && (mouseButton == CENTER)){fl_D=!fl_D;delay(200);}// если нажата центральная кнопка мыши то стоп кадр if (keyPressed&&key == ' ') {fl_A=true;k=0;nomer_eff++;}//если нажат пробел переходим к следующему эффекту if (keyPressed&&(key == 'ц'||key == 'Ц'||key == 'w'||key == 'W')) {color_smena();}//если нажата клавиша "W"(Ц) меняем цвет куба if (keyPressed&&(key == 'v'||key == 'V'||key == 'м'||key == 'М')){n=n+50;if(n>150){n=50;}delay(100);}// если нажата клавиша "V"(М)меняем скорость исполнения эффекта if (keyPressed&&(key == 'a'||key == 'A'||key == 'ф'||key == 'Ф')){fl_C=!fl_C;delay(100);}// если нажата клавиша "A"(Ф)меняем автономный и ручной режимы if (keyPressed&&(key == 'r'||key == 'R'||key == 'к'||key == 'К')){raz=raz*2;if(raz>4){raz=1;}delay(100);}// если нажата клавиша "R"(К)меняем размер элемента куба if (keyPressed&&(key == 'f'||key == 'F'||key == 'а'||key == 'А')){forma_++;if(forma_>2){forma_=0;}delay(100);}// если нажата клавиша "F"(А)меняем форму элемента куба if (keyPressed&&(key == 'q'||key == 'Q'||key == 'й'||key == 'Й')){N=N+127;if(N>255){N=0;}delay(100);}// если нажата клавиша "Q"(Й)меняем цвет экрана (день-ночь) //if (keyPressed&&(key == 's'||key == 'S'||key == 'ы'||key == 'Ы')){s=ss;delay(100);}//покадровое исполнение текущего эффекта, работает вместе со стоп-кадром ///////////////////////////////////////////////// /////// перебор кадров в эффекте /////////////// ///////////////////////////////////////////////// for (i=s+1;i<tabl_eff.length;i++) { if(tabl_eff[i]==255){s=0;ss=sss;break;} if(tabl_eff[i]==227){ss=i;if(s==0){sss=i;} if(fl_P==true){myPort.write(str(tabl_eff[i]));myPort.write(',');}//передача данных на реальный куб break;} } //////////////////////////////////////////////// ////// построение изображения куба в кадре ////////////// /////////////////////////////////////////////// for (x=-2;x<4;x++) { for (y=-2;y<4;y++) { for (z=-2;z<4;z++) { if(fl==1){translate(2*R*x,2*R*y,2*R*z);strokeWeight(1);noFill();forma();translate(-2*R*x,-2*R*y,-2*R*z);}// условие видимости всего куба for (i=s;i<ss;i++) { if((x+2)+(y+2)*6+(z+2)*36==tabl_eff[i]&&transf==0){translate(2*R*x,2*R*y,2*R*z);strokeWeight(0.1);fill(r, g, b);forma();translate(-2*R*x,-2*R*y,-2*R*z);//рисует пиксели по кадру if(fl_P==true){myPort.write(str(tabl_eff[i]));myPort.write(',');}//передача данных на реальный куб } if((y+2)+(x+2)*6+(z+2)*36==tabl_eff[i]&&transf==1){translate(2*R*x,2*R*y,2*R*z);strokeWeight(0.1);fill(r, g, b);forma();translate(-2*R*x,-2*R*y,-2*R*z);}//рисует пиксели по кадру (поворот) if((x+2)+(-y+3)*6+(z+2)*36==tabl_eff[i]&&transf==2){translate(2*R*x,2*R*y,2*R*z);strokeWeight(0.1);fill(r, g, b);forma();translate(-2*R*x,-2*R*y,-2*R*z);}//рисует пиксели по кадру (реверс) if((y+2)+(-x+3)*6+(-z+3)*36==tabl_eff[i]&&transf==3){translate(2*R*x,2*R*y,2*R*z);strokeWeight(0.1);fill(r, g, b);forma();translate(-2*R*x,-2*R*y,-2*R*z);}//рисует пиксели по кадру (комбинация) if((-y+3)+(x+2)*6+(-z+3)*36==tabl_eff[i]&&transf==4){translate(2*R*x,2*R*y,2*R*z);strokeWeight(0.1);fill(r, g, b);forma();translate(-2*R*x,-2*R*y,-2*R*z);}//рисует пиксели по кадру (комбинация) if((x+2)+(y+2)*6+(z+2)*36==tabl_eff[i]&&transf==5){translate(2*R*x,2*R*y,2*R*z);strokeWeight(1);stroke(255,127,0);noFill();forma();stroke(0,100,100,100);translate(-2*R*x,-2*R*y,-2*R*z);}//рисует пиксели- контуры по кадру if(transf==5){}//исчезновение } } } } if(fl_D==true){s=ss;} //////////////////////////////////////////////// if(fl==0){strokeWeight(R/5);translate(R,R,R);noFill();box(12*R);}//рамка - куб при невидимости всего куба if(fl==1){strokeWeight(R/5);translate(R,8*R,R);noFill();box(13*R,2*R,13*R);}//рамка - основание куба при его видимости ///////////////////////////////// if(knopka==8){if(fotka==0){save("kadr_0.png");}if(fotka==1){save("kadr_1.png");}if(fotka==2){save("kadr_2.png");}if(fotka==3){save("kadr_3.png");} if(fotka==4){save("kadr_4.png");}if(fotka==5){save("kadr_5.png");}if(fotka==6){save("kadr_6.png");}if(fotka==7){save("kadr_7.png");} fotka++;if(fotka>7){fotka=0;}knopka=50;}//сохранение "фото" стоп-кадра ///////////////////////////////////////////////// } /////////////////// функции положения курсора и вращения колеса //////////////////////////////////////////// void mousePressed() {if(mouseX>100&& mouseY>75){ lastX = mouseX; lastY = mouseY;} }//когда нажата void mouseDragged() {if(mouseX>100&& mouseY>75){ distX = radians(mouseX - lastX); distY = radians(lastY - mouseY);} }//когда движется void mouseReleased() { if(mouseX>100&& mouseY>75){ rotX += distY; rotY += distX;distX = distY = 0.0;} }//когда отпущена void mouseWheel(MouseEvent event){R=R+5*event.getCount();}//приближение-удаление куба с помощью колеса мыши ////////////////// функция автономного вращения куба ////////////////////////// void avtonom() { if(fl_B==true){rotateY(2*PI*m/256);}else{rotateY(-2*PI*m/256);} if(millis()-T>n){T=millis();m++;if(m>255){m=0;fl_B=!fl_B;if(fl_D==true){color_smena();fl_A=true;k=0;nomer_eff++;}}} } ///////////// функция смены цвета /////////////// void color_smena() { color_++; if(color_>7){color_=0;}if(color_==0){r=0;g=255;b=0;}if(color_==1){r=255;g=0;b=0;}if(color_==2){r=0;g=127;b=255;}if(color_==3){r=0;g=255;b=255;}if(color_==4){r=255;g=255;b=255;} if(color_==5){r=255;g=255;b=0;}if(color_==6){r=255;g=0;b=255;}if(color_==7){r=255;g=127;b=0;} } /////////// функция смены формы элемента куба //////////// void forma() { if(forma_==0){box(R/raz);}//форма пикселя куб if(forma_==1){//форма пикселя шару подобная ellipse(0, 0,R/raz,R/raz); rotateX(PI/2);ellipse(0, 0,R/raz,R/raz);rotateX(-PI/2); rotateX(-PI/4);ellipse(0, 0,R/raz,R/raz);rotateX(PI/4); rotateX(PI/4);ellipse(0, 0,R/raz,R/raz);rotateX(-PI/4); rotateY(PI/2);ellipse(0, 0,R/raz,R/raz);rotateY(-PI/2); rotateY(PI/4);ellipse(0, 0,R/raz,R/raz);rotateY(-PI/4); rotateY(-PI/4);ellipse(0, 0,R/raz,R/raz);rotateY(PI/4); rotateZ(PI/4);ellipse(0, 0,R/raz,R/raz);rotateZ(-PI/4); rotateZ(-PI/4);ellipse(0, 0,R/raz,R/raz);rotateZ(PI/4); rotateZ(PI/2);ellipse(0, 0,R/raz,R/raz);rotateZ(-PI/2); } if(forma_==2)//форма пикселя светодиоду подобная { rect(-R/(2*raz),0,R/raz,R/raz ); ellipse(0, 0,R/raz,R/raz); rotateY(PI/2);rect(-R/(2*raz),0,R/raz,R/raz ); ellipse(0, 0,R/raz,R/raz);rotateY(-PI/2); rotateY(PI/4);rect(-R/(2*raz),0,R/raz,R/raz ); ellipse(0, 0,R/raz,R/raz);rotateY(-PI/4); rotateY(-PI/4);rect(-R/(2*raz),0,R/raz,R/raz ); ellipse(0, 0,R/raz,R/raz);rotateY(PI/4); rotateX(PI/2);ellipse(0,0,R/raz,R/raz);translate(0,0,-R/raz);ellipse(0,0,R/raz,R/raz);translate(0,0,R/raz);rotateX(-PI/2); } } /////////////// функция проверки нажатия дублирующих клавиши кнопок /////////////////////////////////////////// void fun_knopka() { if(mouseY<75)//горизонтальные { for (i=0;i<9;i++) { if( mouseX>20+(70*i)&&mouseX<80+(70*i)){knopka=i; translate(-width/2, (-height/2)+50);fill(0,255,255,200);rect(20+70*i,20, 60, 30, 5);translate(width/2, (height/2)-50);break;} } /////// выполнение команд по условиям для горизонтальных кнопок //////// if(knopka==0){N=N+127;if(N>255){N=0;}delay(100);}//цвет фона приложения день-ночь-утро if(knopka==1){color_smena();}//выбор цвета пикселей if(knopka==2){fl_C=!fl_C;delay(100);}// меняем автономный и ручной режимы if(knopka==3){s=ss;delay(100);}//покадровое исполнение текущего эффекта, работает вместе со стоп-кадром if(knopka==4){forma_++;if(forma_>2){forma_=0;}delay(100);}//форма пикселя меняется if(knopka==5){raz=raz*2;if(raz>4){raz=1;}delay(100);}//размер пикселя меняем if(knopka==6){n=n+50;if(n>150){n=50;}delay(100);}//скорость регулируем if(knopka==7){fl_A=true;k=0;nomer_eff++;}//переход к следующему эффекту //if(knopka==8){save("kadr.png");knopka=50;}//сохранение "фото" стоп-кадра (СТРОКА НАХОДИТЬСЯ В ДРУГОМ МЕСТЕ ПРОГРАММЫ) } if(mouseX<100)//вертикальные { for (i=0;i<9;i++) { if( mouseY>100+(50*i)&&mouseY<130+(50*i)){knopka=i+9; translate(-width/2, (-height/2)+50);fill(0,255,255,200);rect(20,100+50*i, 60, 30, 5);translate(width/2, (height/2)-50);break;} } /////// выполнение команд по условиям для вертикальных кнопок //////// if(knopka==9){transf++;if(transf>6){transf=0;}delay(100);}//трансформация - реверс,поворот,комбинация,исчезновение анимации if(knopka==10){fl_P=!fl_P;perekl_porta();delay(100);}//включение-выключение сом порта if(knopka==11){port_no++;if(port_no+1>Serial.list().length){port_no=0;}delay(100);}//выбор номера порта для связи } } ////////////////////////////////////////////////////////// void perekl_porta() { myPort.clear(); myPort.stop();myPort = new Serial(this,Serial.list()[port_no], 115200);//очищаем порт,отключаем и меняем на новый }Первая тема 2021 года в этом самом мертвом месте форума... Поздравляю, шоле... Animesh, а тебя не смущает такая популярность предмета твоего интереса?
Всё нормально с предметом, форум не совсем профильный...