Язык программирования:
C/C++
Среда программирования:
microsoft visual studio 2013
#include <glut.h> #include <math.h> #include <stdlib.h> #include <iostream> using namespace std; float aut1, aut2, aut3,aut4,aut5,aut6,aut7;//блок float tua1,tua2,tua3,tua4,tua5,tua6,tua7;//переменная возвращающая белый цвет float color1 = 255;//белый цвет по умолчанию float color2 = 255; float color3 = 255; float color4 = 255; float color5 = 255; float color6 = 255; float color7 = 255; float x, y;//координаты //сохранение пропорций void proporsion(int w, int h) { if (h==0) { h=1; } float ratio = float(w)/h; glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(45,ratio,500,500); glMatrixMode(GL_MODELVIEW); } //рисование void paint(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);// очистка буфера //1 полигон glBegin(GL_POLYGON);//рисуем полигон glColor3ub(color1,color1,color1);//цвет 105 glVertex2f(-0.5, 0.5);//координаты glVertex2f(-1.0, 1.0); glVertex2f(-1.0, 1.5); glVertex2f(-0.5, 2.0); glVertex2f(-0.0, 1.5); glVertex2f(-0.0, 1.0); glEnd();//завершение Begin //2 полигон glBegin(GL_POLYGON);//рисуем полигон glColor3ub(color2,color2,color2);//цвет glVertex2f(-0.5+1.05, 0.5); glVertex2f(-1.0+1.05, 1.0); glVertex2f(-1.0+1.05, 1.5); glVertex2f(-0.5+1.05, 2.0); glVertex2f(-0.0+1.05, 1.5); glVertex2f(-0.0+1.05, 1.0); glEnd(); //3 полигон glBegin(GL_POLYGON);//рисуем полигон glColor3ub(color3,color3,color3);//цвет glVertex2f(-0.5+1.552, 0.5-1.05); glVertex2f(-1.0+1.552, 1.0-1.05); glVertex2f(-1.0+1.552, 1.5-1.05); glVertex2f(-0.5+1.552, 2.0-1.05); glVertex2f(-0.0+1.552, 1.5-1.05); glVertex2f(-0.0+1.552, 1.0-1.05); glEnd(); //4 полигон glBegin(GL_POLYGON);//рисуем полигон glColor3ub(color4,color4,color4);//цвет glVertex2f(-0.5+1.05, 0.5-2.1); glVertex2f(-1.0+1.05, 1.0-2.1); glVertex2f(-1.0+1.05, 1.5-2.1); glVertex2f(-0.5+1.05, 2.0-2.1); glVertex2f(-0.0+1.05, 1.5-2.1); glVertex2f(-0.0+1.05, 1.0-2.1); glEnd(); //5 полигон glBegin(GL_POLYGON);//рисуем полигон glColor3ub(color5,color5,color5);//цвет glVertex2f(-0.5, 0.5-2.1); glVertex2f(-1.0, 1.0-2.1); glVertex2f(-1.0, 1.5-2.1); glVertex2f(-0.5, 2.0-2.1); glVertex2f(-0.0, 1.5-2.1); glVertex2f(-0.0, 1.0-2.1); glEnd(); //6 полигон glBegin(GL_POLYGON);//рисуем полигон glColor3ub(color6,color6,color6);//цвет glVertex2f(-0.5-0.52, 0.5-1.05); glVertex2f(-1.0-0.52, 1.0-1.05); glVertex2f(-1.0-0.52, 1.5-1.05); glVertex2f(-0.5-0.52, 2.0-1.05); glVertex2f(-0.0-0.52, 1.5-1.05); glVertex2f(-0.0-0.52, 1.0-1.05); glEnd(); //7 полигон glBegin(GL_POLYGON);//рисуем полигон glColor3ub(color7,color7,color7);//цвет glVertex2f(-0.5+0.52, 0.5-1.05); glVertex2f(-1.0+0.52, 1.0-1.05); glVertex2f(-1.0+0.52, 1.5-1.05); glVertex2f(-0.5+0.52, 2.0-1.05); glVertex2f(-0.0+0.52, 1.5-1.05); glVertex2f(-0.0+0.52, 1.0-1.05); glEnd(); glutSwapBuffers(); } //установка таймера void Timer(int) { color1 = color1 - 5 + aut1 + tua1;//становление черным первый полигон color2 = color2 + tua2;//становление белым второй полигон color3 = color3 + tua3; color4 = color4 + tua4; color5 = color5 + tua5; color6 = color6 + tua6; color7 = color7 + tua7; if (color1 < 150)//когда первый полигон стал серым { color2 = color2 - 5 + aut2 + tua2;//становление черным второго полигона if (color1 < 80) { aut1 = 5; }//когда первый полигон стал черным остановить изменение цвета } if (color2 < 150) { color3 = color3 - 5 + aut3; if (color2 < 80) { aut2 = 5; } } if (color3 < 150) { color4 = color4 - 5 + aut4; if (color3 < 80) { aut3 = 5; } } if (color4 < 150) { color5 = color5 - 5 + aut5; if (color4 < 80) { aut4 = 5; } } if (color5 < 150) { color6 = color6 - 5 + aut6; if (color5 < 80) { aut5 = 5; } } if (color6 < 150) { color7 = color7 - 5 + aut7; if (color6 < 80) { aut6 = 5; } } if (color7 < 80)//когда последний полигон стал черным { aut7 = 5;//блок tua1 = 5;//исчезновение первого if (color1 > 150)//когда на половину исчез { tua2 = 5;//исчезновение второго if (color1 > 250)//когда исчез { tua1 = 0;//блок } } if (color2 > 150) { tua3 = 5; if (color2 > 250) { tua2 = 0; } } if (color3 > 150) { tua4 = 5; if (color3 > 250) { tua3 = 0; } } if (color4 > 150) { tua5 = 5; if (color4 > 250) { tua4 = 0; } } if (color5 > 150) { tua6 = 5; if (color5 > 250) { tua5 = 0; } } if (color6 > 250)//когда предпоследний полигон стал белым обнуляю параметры { tua6 = 0; aut1 = 0; aut2 = 0; aut3 = 0; aut4 = 0; aut5 = 0; aut6 = 0; aut7 = 0; tua1 = 0; tua2 = 0; tua3 = 0; tua4 = 0; tua5 = 0; tua6 = 0; tua7 = 0; color1 = 255; color2 = 255; color3 = 255; color4 = 255; color5 = 255; color6 = 255; color7 = 255; } } glutTimerFunc(8,Timer,0);//обновлять экран каждые 8мсек glutPostRedisplay(); } int main(int argc, char **argv) { // инициализация glutInit(&argc, argv); glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);//double: буфер рисования и буф сторонних вычислений glutInitWindowPosition(100, 100);//позиция окна glutInitWindowSize(500, 500);//размеры окна glutCreateWindow("OverWatch");//название окна glClearColor(1.0, 1.0, 1.0, 1.0);//цвет окна glOrtho(-5.0, 5.0, -5.0, 5.0, -5.0, 5.0);//установка границ glutDisplayFunc(paint);//вызов функции рисования glutReshapeFunc(proporsion);//вызов функции сохранения пропорций glutTimerFunc(0,Timer,0);//вызов таймера glutMainLoop();//основной цикл return 1; }
Прикрепленный файл | Размер |
---|---|
BrunsOverWatch.rar | 943.43 кб |