预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共19页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

共分为4个.h文件和5个.cpp文件keyListener.h,keyListener.cppmap.h,map.cpptexture.h,texture.cpptextview.h,textview.cppMain.cppMain.cpp#include<GL/glut.h>#include<GL/glu.h>#include<GL/gl.h>#include<string.h>#include<stdio.h>#include"map.h"#include"Texture.h"#include"keyListener.h"#include"textview.h"#pragmacomment(linker,"/subsystem:\"Windows\"/entry:\"mainCRTStartup\"")Texturetexture;//文理加载类Mapmap;//地图加载类KeyListenerkeylistener;//键盘监听事件类TextViewtextview;int*image;int**mp;intwindow;//窗口intis_pass=0;//是否过关标志int*pass=&is_pass;intlevel=1;//关卡int*lv=&level;intpre_lv=1;//颜色的RGB值intblack[3]={0,0,0};intwhite[3]={255,255,255};intorange[3]={255,128,0};//窗口大小变化时调用的函数voidChangeSize(GLsizeiw,GLsizeih){if(h==0){h=1;}glViewport(0,0,w,h);//定义视口大小,宽高一致intwidth=550;intheight=550;glMatrixMode(GL_PROJECTION);//重置坐标系统,使投影变换复位glLoadIdentity();//将当前的用户坐标系的原点移到了屏幕中心GLfloataspect;if(w<=h){aspect=(GLfloat)h/w;glOrtho(0,width,0,height*aspect,0,height);}elseif(w>h){aspect=(GLfloat)w/h;glOrtho(0,width*aspect,0,height,0,width);}}voiddisplay_text(){glColor3ub(orange[0],orange[1],orange[2]);glRasterPos2i(250,570);//起始位置textview.drawString("推箱子");//输出的字符串glRasterPos2i(400,570);charc[10]="第";chard[5];sprintf(d,"%d关",level);strcat(c,d);textview.drawString(c);glRasterPos2i(120,80);textview.drawString("1、ESC键退出游戏");glRasterPos2i(120,60);textview.drawString("2、BackSpace后退");glRasterPos2i(120,40);textview.drawString("3、PageUp、PageDown切换关卡");glRasterPos2i(120,20);textview.drawString("4、键盘上、下、左、右键控制方向");}//画长方形voiddraw_rect(intleftX,intleftY){glBegin(GL_POLYGON);glColor3ub(black[0],black[1],black[2]);glVertex2d(leftX,leftY);//左下角glVertex2d(leftX+100,leftY);//右下角glVertex2d(leftX+100,leftY+100);//右上角glVertex2d(leftX,leftY+100);//左上角glEnd();//结束画线}voiddrawmap(){glColor3ub(white[0],white[1],white[2]);//清理颜色,为黑色,(也可认为是背景颜色)glEnable(GL_TEXTURE_2D);for(inti=50;i<500;i+=30){for(intj=100;j<550;j+=30){inty=(i-50)/30;intx=14-(j-100)/30;intpos=mp[x][y];if(pos==6){keylistener.get_man_location(x,y);}texture.display_texture(image[pos],