以opengl制作2D贪吃蛇(一)
来源:互联网 发布:python命令大全 编辑:程序博客网 时间:2024/04/30 12:30
1) 搭建好基本的窗口环境
要确定窗口大小, 通过确定格子的大小(TILE_WIDTH, TILE_HEIGHT),
要确定窗口大小, 通过确定格子的大小(TILE_WIDTH, TILE_HEIGHT),
格子的数量(TILE_COLUMN, TILE_ROW)
2) 画格子
两个循环
/* * 1) 搭建好基本的窗口环境 * 要确定窗口大小, 通过确定格子的大小(TILE_WIDTH, TILE_HEIGHT), * 格子的数量(TILE_COLUMN, TILE_ROW) */ //2) 画格子 //* 两个循环//3) 画方块来表示蛇的身体// * glPointSize(..)#include <stdio.h>#include <GL/glew.h>#include <GL/freeglut.h>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.1415fint 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 zeroif(h == 0)h = 1;// Set Viewport to window dimensions glViewport(0, 0, w, h);// Reset coordinate systemglMatrixMode(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 colorglClearColor(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 colorglClear(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<=TILE_ROW*TILE_HEIGHT;line_y += TILE_HEIGHT) { glBegin(GL_LINES); glVertex2f(0.0f,line_y); glVertex2f(TILE_COLUMN*TILE_WIDTH,line_y); glEnd(); } for(float line_x=0;line_x<=TILE_COLUMN*TILE_WIDTH;line_x+=TILE_WIDTH){glBegin(GL_LINES);glVertex2f(line_x,0.0f);glVertex2f(line_x,TILE_COLUMN*TILE_WIDTH);glEnd();}glPopMatrix();glutSwapBuffers();} int main(int argc,char* argv[]) {//基于GLUT的标准设置glutInit(&argc, argv);glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH | GLUT_STENCIL); glutInitWindowSize(TILE_WIDTH*TILE_COLUMN,TILE_HEIGHT*TILE_ROW);glutCreateWindow("Snake");glutReshapeFunc(ChangeSize);glutDisplayFunc(RenderScene);GLenum err = glewInit();if (GLEW_OK != err) {fprintf(stderr, "GLEW Error: %s\n", glewGetErrorString(err));return 1;}SetupRC(); glutMainLoop();} g++ -g nima.cpp -o nima -lGL -lglut -lGLEW
编译得到
演示结果:
- 以opengl制作2D贪吃蛇(一)
- Unity 贪吃蛇2D简易制作(一)
- Unity 贪吃蛇2D简易制作(二)
- openGl零基础完成贪吃蛇游戏(一)
- 初学Unity3D之制作贪吃蛇(一)
- 贪吃蛇小游戏2d
- 2D贪吃蛇小游戏!!!
- opengl贪吃蛇源代码
- 贪吃蛇(C++ OpenGL)
- 用OpenGL+C++写的一个小的3D游戏---3D贪吃蛇
- Tom Mulgrew——教你用Basic语言制作2D/3D OpenGL 程序(全中文教程) 一
- 2D贪吃蛇游戏教程
- 贪吃蛇制作
- 贪吃蛇的制作
- 自学制作贪吃蛇
- javascript 贪吃蛇(一)
- OpenGl制作3D效果
- [OpenGL]贪吃蛇游戏源码
- Android下实现图片缓存的实例
- Spring AOP 动态代理入门(一)
- POJ 2309 BST
- JAVA/JdbcManager
- nmom下载地址
- 以opengl制作2D贪吃蛇(一)
- C#数据库编程(建立数据库表,数据库的连接,实现的源代码)
- 【IOS基础知识】CGRectInset、CGRectOffset、frame、bounds对比整理
- C# WebBrowser 抓图获取网页验证码
- 手动把mysql数据导出来
- 拖拽功能,拖拽文档到程序
- 在 Windows 上像 Linux 一样使用命令
- Hadoop-datanode-FSDataset解析<转>
- 效果最好的网站排名软件软件是什么?