Advertisement
High_Light

oop

Mar 20th, 2018
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.15 KB | None | 0 0
  1. #include <iostream>
  2. #include <list>
  3. #include<cmath>
  4. #include <algorithm>
  5.  
  6. #include <GL/glut.h>
  7. #include <GL/gl.h>
  8. #include <GL/glu.h>
  9.  
  10. using namespace std;
  11.  
  12. double scale = 1.0;
  13. double car_x=0;
  14. double car_y=0;
  15.  
  16. void render_square(double x, double y) {
  17.     glPushMatrix();
  18.  
  19.     double dx = 0.5;
  20.     double dy = 0.5;
  21.     glBegin(GL_POLYGON);
  22.     glVertex2f(x, y);
  23.     glVertex2f(x + dx, y);
  24.     glVertex2f(x + dx, y - dy);
  25.     glVertex2f(x, y - dy);
  26.     glEnd();
  27.     glPopMatrix();
  28. }
  29.  
  30. void draw_line(double x, double y, double x1, double y1) {
  31.     glBegin(GL_LINES);
  32.     glVertex2d(x, y);
  33.     glVertex2d(x1, y1);
  34.     glEnd();
  35. }
  36.  
  37. void draw_home_x_y (double x , double y){
  38.     draw_line(0+x,0+y,1+x,0+y);
  39.     draw_line(0+x,1+y,1+x,1+y);
  40.     draw_line(0+x,1+y,0+x,0+y);
  41.     draw_line(1+x,1+y,1+x,0+y);
  42.     draw_line(0+x,1+y,0.5+x,1.5+y);
  43.     draw_line(0.5+x,1.5+y,1+x,1+y);
  44.  
  45. }
  46.  
  47. void draw_car(car_x, car_y){
  48.     draw_line(-2,-2,-1,-2);
  49.     draw_line(-2,-1,-1,-1);
  50.     draw_line(-2,-1,-2,-2);
  51.     draw_line(-1,-1,-1,-2);
  52. }
  53.  
  54. void Render() {
  55.         glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  56.         glLoadIdentity();
  57.         glTranslatef(0, 0, -10);
  58.         glColor3d(1, 1, 1);
  59.         glScalef(scale, scale, scale);
  60.  
  61.         double x =0;
  62.         double y =0;
  63.         for (int i=-100;i<100;i+=4){
  64.             for(int j=-100; j<100;j+=4){
  65.                 draw_home_x_y(i,j);
  66.             }
  67.         }
  68.         glColor3d(1, 0, 0);
  69.         draw_car(0,0);
  70.  
  71.         glFlush();
  72. }
  73.  
  74.  
  75. void update(int t) {
  76.     Render();
  77.     glutTimerFunc(50, update, 0);
  78. }
  79.  
  80. void keyb(unsigned char key, int x, int y) {
  81.     if(key == '+') {
  82.         scale *= 1.1;
  83.     }
  84.     if(key == '-') {
  85.         scale *= 0.9;
  86.     }
  87.     if (key == 'w'){
  88.         car_y += 1;
  89.     }
  90.     if (key == 's'){
  91.         car_y += -1;
  92.     }
  93.     if (key == 'd'){
  94.         car_x += 1;
  95.     }
  96.     if (key == 'a'){
  97.         car_x += -1;
  98.     }
  99.     cout<< key << endl;
  100.     Render();
  101. }
  102.  
  103. void reshape(int w, int h) {
  104.  
  105.     // предупредим деление на ноль
  106.     // если окно сильно перетянуто будет
  107.     if(h == 0)
  108.         h = 1;
  109.     float ratio = 1.0* w / h;
  110.  
  111.     // используем матрицу проекции
  112.     glMatrixMode(GL_PROJECTION);
  113.  
  114.         // Reset матрицы
  115.     glLoadIdentity();
  116.  
  117.     // определяем окно просмотра
  118.     glViewport(0, 0, w, h);
  119.  
  120.     // установить корректную перспективу.
  121.     gluPerspective(45,ratio,1,1000);
  122.  
  123.     // вернуться к модели
  124.     glMatrixMode(GL_MODELVIEW);
  125. }
  126.  
  127. int main(int argc, char **argv)
  128. {
  129.     glutInit(&argc, argv);
  130.     glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH);
  131.     glutInitWindowSize(800, 600);
  132.     glutCreateWindow("Physics Engine");
  133.     glEnable(GL_DEPTH_TEST);
  134.     glMatrixMode(GL_PROJECTION);
  135.     glLoadIdentity();
  136.     glMatrixMode(GL_MODELVIEW);
  137.     glLoadIdentity();
  138.     glClearColor(0.23, 0.4, 0.7, 0.0);
  139.  
  140.     glutTimerFunc(50, update, 0);
  141.     glutReshapeFunc(reshape);
  142.     glutDisplayFunc(Render);
  143.     glutKeyboardFunc(keyb);
  144.     glutMainLoop();
  145. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement