Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <gl\glut.h>
- #include <gl\glaux.h>
- #include <time.h>
- float cx=0, cy=0,bx = 0,by = 0;
- int counter[4] = {1,1,1,1};
- void key(unsigned char key, int x, int y)
- {
- switch (key)
- {
- case 'd':
- cx+=0.5f;
- std::cout << "Vi nazhali D " << counter[0] << " raz(a)." << std::endl;
- counter[0]++;
- break;
- case 'a':
- cx-=0.5f;
- std::cout << "Vi nazhali A " << counter[1] << " raz(a)." << std::endl;
- counter[1]++;
- break;
- case 'w':
- cy+=0.5f;
- std::cout << "Vi nazhali W " << counter[2] << " raz(a)." << std::endl;
- counter[2]++;
- break;
- case 's':
- cy-=0.5f;
- std::cout << "Vi nazhali S " << counter[3] << " raz(a)." << std::endl;
- counter[3]++;
- break;
- }
- }
- void coolimg(int width, int height) {
- const float ar = (float) width / (float) height;
- glViewport(0, 0, width , height);
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- glFrustum(-ar, ar, -1.0, 1.0, 2.0, 100.0);
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity() ;
- }
- void display() {
- const double t = glutGet(GLUT_ELAPSED_TIME) / 1000.0;
- const double a = t*90.0;
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
- glColor3d(1,0,0); // цвет 3d
- glPushMatrix();
- glTranslated(cx + 0.92,cy + 0.92,-30);
- glRotated(60,1,0,0);
- glRotated(a,0,0,1);
- glutSolidSphere(1,5000,5000);
- glPopMatrix();
- glPushMatrix();
- if (bx = cx, by = cy) {
- srand(time(0));
- glTranslated(bx + rand()%15,by + rand()%15, -30);
- }
- glRotated(60,1,0,0);
- glRotated(a,0,0,1);
- glutSolidSphere(1,5000,5000);
- glPopMatrix();
- glutSwapBuffers();
- glutPostRedisplay(); // перерисовка окна
- }
- const GLfloat light_ambient[] = { 0.0f, 0.0f, 0.0f, 1.0f };
- const GLfloat light_diffuse[] = { 1.0f, 1.0f, 1.0f, 1.0f };
- const GLfloat light_specular[] = { 1.0f, 1.0f, 1.0f, 1.0f };
- const GLfloat light_position[] = { 2.0f, 5.0f, 5.0f, 0.0f };
- const GLfloat mat_ambient[] = { 0.7f, 0.7f, 0.7f, 1.0f };
- const GLfloat mat_diffuse[] = { 0.8f, 0.8f, 0.8f, 1.0f };
- const GLfloat mat_specular[] = { 1.0f, 1.0f, 1.0f, 1.0f };
- const GLfloat high_shininess[] = { 100.0f };
- int main(int argc, char **argv) {
- // инициализация
- glutInit(&argc, argv);
- glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
- glutInitWindowPosition(100,100);
- glutInitWindowSize(400,400);
- glutCreateWindow("Game");
- // Функции
- glutReshapeFunc(coolimg);
- glutDisplayFunc(display);
- glutKeyboardFunc(key);
- // 3d
- glClearColor(1,1,1,1);
- glEnable(GL_CULL_FACE);
- glCullFace(GL_BACK);
- glEnable(GL_DEPTH_TEST);
- glDepthFunc(GL_LESS);
- glEnable(GL_LIGHT0);
- glEnable(GL_NORMALIZE);
- glEnable(GL_COLOR_MATERIAL);
- glEnable(GL_LIGHTING);
- glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient);
- glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse);
- glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular);
- glLightfv(GL_LIGHT0, GL_POSITION, light_position);
- glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient);
- glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse);
- glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular);
- glMaterialfv(GL_FRONT, GL_SHININESS, high_shininess);
- // Основной цикл GLUT
- glutMainLoop();
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement