以opengl制作2D贪吃蛇(一)
程序员文章站
2022-06-07 22:39:45
...
1) 搭建好基本的窗口环境 要确定窗口大小, 通过确定子的大小(TILE_WIDTH, TILE_HEIGHT), 子的数量(TILE_COLUMN, TILE_ROW) 2) 画子 两个循环 /* * 1) 搭建好基本的窗口环境 * 要确定窗口大小, 通过确定格子的大小(TILE_WIDTH, TILE_HEIGHT), * 格子的数量(TIL
1) 搭建好基本的窗口环境要确定窗口大小, 通过确定格子的大小(TILE_WIDTH, TILE_HEIGHT),
格子的数量(TILE_COLUMN, TILE_ROW)
2) 画格子
两个循环
/* * 1) 搭建好基本的窗口环境 * 要确定窗口大小, 通过确定格子的大小(TILE_WIDTH, TILE_HEIGHT), * 格子的数量(TILE_COLUMN, TILE_ROW) */ //2) 画格子 //* 两个循环 //3) 画方块来表示蛇的身体 // * glPointSize(..) #include#include #include int TILE_WIDTH = 32; int TILE_HEIGHT = 32; const int TILE_COLUMN = 20; const int TILE_ROW = 11; const int dt = 33; /* 毫秒数 */ #define DIR_UP 0 #define DIR_DOWN 1 #define DIR_LEFT 2 #define DIR_RIGHT 3 #define GL_PI 3.1415f int dir = DIR_RIGHT; float snake_x = 0; float snake_y = 0; float snake_v = 3; float food_x = 10; float food_y = 5; void ChangeSize(int w,int h) { GLfloat nRange = 100.0f; // Prevent a divide by zero if(h == 0) h = 1; // Set Viewport to window dimensions glViewport(0, 0, w, h); // Reset coordinate system glMatrixMode(GL_PROJECTION); glLoadIdentity(); // Establish clipping volume (left, right, bottom, top, near, far) glOrtho (0.0f,TILE_COLUMN*TILE_WIDTH,TILE_ROW*TILE_HEIGHT,0,-1, 1); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); } void SetupRC()//在循环之前,为程序做一些一次性的设置 { // background color glClearColor(0.0f, 0.0f, 0.0f, 1.0f ); glColor3f(0.0f,1.0f,0.0f); } void RenderScene(void) {GLfloat x,y,z,angle; // Clear the window with current clearing color glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); glPointSize(TILE_HEIGHT); glBegin(GL_POINTS); glVertex3f(snake_x+TILE_WIDTH/2,snake_y+TILE_HEIGHT/2,0.0f); glEnd(); for(float line_y=0;line_y 编译得到
演示结果: