Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <windows.h> // pentru SO Windows
- #include <GL/glut.h> // GLUT, includes glu.h and gl.h
- #include <stdio.h>
- int gridX,gridY;
- void timer_callback();
- void display_apeleaza();
- void reshape_callback(int, int);
- void initGrid(int , int);
- void drawGrid();
- void init()
- {
- //setarea culorii de fundal negru si opacitate 100%
- glClearColor(0.0f,0.0f,0.0f,1.0f);
- initGrid(40,40);
- }
- int main(int argc, char** argv){
- //initializare GLUT
- glutInit(&argc, argv);
- //display RGB cu double frame buffering
- //cand desenarea unui frame este completa atunci cei doi
- //bufferi sunt interschimbati
- glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE);
- //configurarea dimensiunilor ferestrei grafice
- glutInitWindowSize(500, 500);
- //pozitionarea ferestrei grafice
- glutInitWindowPosition(50, 50);
- //crearea ferestrei grafice cu specificarea numelui
- glutCreateWindow("SNAKE");
- //inregistrarea functiei display_apeleaza() pentru redare
- glutDisplayFunc(display_apeleaza);
- //indica ce actiune este necesara a se efectua in cazul
- //in care fereastra este redimensionata
- glutReshapeFunc(reshape_callback);
- glutTimerFunc(0,timer_callback,0);
- init();
- //initializarea buclei infinite pentru redare
- glutMainLoop();
- return 0;
- }
- //test
- int index = 0;
- //functie apelata la fiecare re-desenare
- void display_apeleaza()
- {
- //aplicarea modificarilor de culoare
- glClear(GL_COLOR_BUFFER_BIT);
- //Apelarea functiei drawGrid
- drawGrid();
- //patratel ce se misca
- glRectd(index,20,index+2,22);
- index++;
- if(index>40)
- {
- index = 0;
- }
- //finalizare patratel ce se misca
- //interschimbarea bufferelor
- glutSwapBuffers();
- }
- void reshape_callback(int w, int h)
- {
- //Pozitia viewport-ului dupa resize
- glViewport(0,0,(GLsizei)w,(GLsizei)h);
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- //Joc 2D asa ca vom folosii proiectia ortogonala
- glOrtho(0.0,40.0,0.0,40.0,-1.0,1.0);
- glMatrixMode(GL_MODELVIEW);
- }
- //Initializam numarul de coloane si linii in forma de patrate
- void initGrid(int x, int y)
- {
- gridX=x;
- gridY=y;
- }
- void unit(int,int);
- //Desenam numarul de coloane si linii in forma de patrate
- void drawGrid()
- {
- //Initializarea pozitiilor patratelor pe linie/coloana
- for(int x = 0; x < gridX; x++)
- {
- for(int y = 0; y < gridY; y++)
- {
- unit(x,y);
- }
- }
- }
- //Marimea unitatii de masurare
- void unit(int x,int y)
- {
- //Schimbam culoarea patratelor exterioare in rosu
- if(x == 0 || y == 0 || x == gridX - 1 || y == gridY - 1)
- {
- //grosime linie
- glLineWidth(3.0);
- //culoare linie
- glColor3f(1.0,0.0,0.0);
- }
- else
- {
- glLineWidth(1.0);
- glColor3f(1.0,1.0,1.0);
- }
- //Linii conectate intre ele
- glBegin(GL_LINE_LOOP);
- glVertex2f(x,y);
- glVertex2f(x+1,y);
- glVertex2f(x+1,y+1);
- glVertex2f(x,y+1);
- glEnd();
- }
- void timer_callback()
- {
- glutPostRedisplay();
- glutTimerFunc(100,timer_callback,0);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement