




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
欧阳歌谷创编 欧阳歌谷创编 2021年2月1欧阳歌谷创编 欧阳歌谷创编 2021年2月1欧阳歌谷创编 2021年2月1#include"stdafx.h"欧阳歌谷(2021.02.01)#include<stdio.h>#include<stdlib.h>#include<GL/glut.h>#include<math.h>#include<iostream>usingnamespacestd;voiddrawwalls(void);voiddrawtop(void);voiddrawball(void);#defineIDM_APPLICATION_EXIT(101)#defineIDM_APPLICATION_TEXTURE(102)#defineIDM_APPLICATION_BANK(103)#defineMAZE_HEIGHT(16)#defineMAZE_WIDTH(16)#defineSTARTING_POINT_X(13.5f);#defineSTARTING_POINT_Y(1.5f);#defineSTARTING_HEADING(90.0f);floatplayer_x=STARTING_POINT_X;floatplayer_y=STARTING_POINT_Y;floatplayer_h=STARTING_HEADING;//player'sheading欧阳歌谷创编 欧阳歌谷创编 2021年2月1欧阳歌谷创编 欧阳歌谷创编 2021年2月1floatplayer_s=0.0f;//forwardspeedoftheplayerfloatplayer_m=1.0f;//speedmultiplieroftheplayerfloatplayer_t=0.0f;//player'sturning(changeinheading)floatplayer_b=0.0f;//viewpointbank(roll)staticfloattexcoordX=0.0f;intwalllist=0;intmazelist=0;intballlist=0;intstatus=1;boolsearchroute=false;boolkeystate[4]={false,false,false,false};charmazedata[MAZE_HEIGHT][MAZE_WIDTH]={{'H','H','H','H','H','H','H','H','H','H','H','H','H','H','H','H'},{'H','','','','','','','','H','','','','','','','H'},{'H','','H','','H','H','H','','H','','H','','','','','H'},{'H','','H','H','','','H','','H','H','','H','','H','','H'},{'H','','','','','','H','','','','','','','H','','H'},{'H','','H','H','H','H','H','H','H','H','','H','H','H','','H'},{'H','','','','','','','','','','','','H','','','H'},{'H','','H','H','H','H','H','','H','H','H','','H','H','H','H'},{'H','','H','','','','H','','','','H','','','','','H'},{'H','','','','H','H','H','H','H','H','H','','','','','H'},{'H','','H','','','','H','','','','H','','','H','','H'},欧阳歌谷创编 2021年2月1欧阳歌谷创编 欧阳歌谷创编 2021年2月1欧阳歌谷创编 欧阳歌谷创编 2021年2月1欧阳歌谷创编 欧阳歌谷创编 2021年2月1欧阳歌谷创编 欧阳歌谷创编 2021年2月1{'H','','H','H','H','H','H','','H','H','H','H','','H','','H'},{'H','','','','','','H','','','','','','','H','','H'},{'H','','','H','H','','H','H','H','H','','H','H','H','','H'},{'H','','','','H','','H','','','','','H','','','','H'},{'H','H','H','H','H','H','H','H','H','H','H','H','H','','H','H'},};voidmyinit(){glClearColor(0.5f,0.5f,0.5f,0.0f);glColor3f(1.0,1.0,1.0);glEnable(GL_DEPTH_TEST);glEnable(GL_TEXTURE_2D);walllist=glGenLists(2);mazelist=walllist+1;balllist=walllist+2;glNewList(walllist,GL_COMPILE);drawwalls();glEndList();glNewList(mazelist,GL_COMPILE);drawtop();glEndList();glNewList(balllist,GL_COMPILE);drawball();glEndList();glMatrixMode(GL_PROJECTION);glLoadIdentity();gluPerspective(60.0,1.0,0.1,60.0);glMatrixMode(GL_MODELVIEW);glHint(GL_PERSPECTIVE_CORRECTION_HINT,GL_NICEST);/施1I^Ai2»±aDi}boolwall(intx,inty){return(x>=0&&y>=0&&x<MAZE_WIDTH&&y<MAZE_HEIGHT&&mazedata[y][x]!='');}boolonopen(intx,inty){if(wall(x,y)){return(mazedata[y][x]=='H');}}voidcloseit(intx,inty){if(onopen(x,y)){mazedata[y][x]='X';欧阳歌谷创编 欧阳歌谷创编 2021年2月120212021年2月1欧阳歌谷创编 欧阳歌谷创编 2021年2月1欧阳歌谷创编 欧阳歌谷创编 2021年2月1}boolneighbor(intx,inty,intw,int*nx,int*ny){switch(w){case0:*nx=x-1;*ny=y;break;*nx=x;*ny=y+1;break;*nx=x+1;*ny=y;break;*nx=x;*ny=y-1;break;default:break;}returnwall(*nx,*ny);}booldiagnal(intx,inty,intw,int*nx,int*ny){switch(w){case0:*nx=x-1;*ny=y-1;break;*nx=x-1;*ny=y+1;break;欧阳歌谷创编*nx=x+1;*ny=y+1;break;*nx=x+1;*ny=y-1;break;default:break;}returnwall(*nx,*ny);}voiddw(intx,inty,intp){intw=p;closeit(x,y);do{intx2=0;inty2=0;if(neighbor(x,y,w,&x2,&y2)){if(onopen(x2,y2)){dw(x2,y2,(w+3)%4);}else{if((w+1)%4==p){return;else{floatfx;floatfy;if(diagnal(x,y,w,&x2,&y2)&&onopen(x2,y2)){dw(x2,y2,(w+2)%4);}texcoordX=(texcoordX<0.5)?1.0f:0.0f;fx=(float)x+((w==1||w==2)?1.0f:0.0f);fy=(float)y+((w==0||w==1)?1.0f:0.0f);glTexCoord2f(texcoordX,0.0f);glVertex3f(fx,fy,0.0f);glTexCoord2f(texcoordX,1.0f);glVertex3f(fx,fy,1.0f);}w++;w%=4;}while(w!=p);return;}voiddrawwalls(){glEnable(GL_TEXTURE_2D);glBegin(GL_QUAD_STRIP);欧阳歌谷创编欧阳歌谷创编 欧阳歌谷创编 2021年2月1欧阳歌谷创编 欧阳歌谷创编 2021年2月1glColor3f(1.0,1.0,1.0);glVertex3f(0.0f,0.0f,0.0f);glVertex3f(0.0f,0.0f,1.0f);dw(0,0,0);glEnd();}voiddrawtop(){intx,y;glBegin(GL_QUADS);for(y=0;y<MAZE_HEIGHT;y++){for(x=0;x<MAZE_WIDTH;x++){if(wall(x,y)){mazedata[y][x]='X';glVertex3f(x+0.0f,y+0.0f,1.0f);glVertex3f(x+1.0f,y+0.0f,1.0f);glVertex3f(x+1.0f,y+1.0f,1.0f);glVertex3f(x+0.0f,y+1.0f,1.0f);}}}glEnd();}voidforward(floatpx,floatpy,floatbf){欧阳歌谷创编 2021年2月1intx=((int)player_x);inty=((int)player_y);inth=0;if((px>x+1.0f-bf)&&wall(x+1,y)){px=(float)(x)+1.0f-bf;h++;}if(py>y+1.0f-bf&&wall(x,y+1)){py=(float)(y)+1.0f-bf;h++;}if(px<x+bf&&wall(x-1,y)){px=(float)(x)+bf;h++;}if(py<y+bf&&wall(x,y-1)){py=(float)(y)+bf;h++;}player_x=px;player_y=py;}voiddrawball()欧阳歌谷创编 2021年2月1欧阳歌谷创编 欧阳歌谷创编 2021年2月1欧阳歌谷创编 欧阳歌谷创编 2021年2月1欧阳歌谷创编 欧阳歌谷创编 2021年2月1欧阳歌谷创编 欧阳歌谷创编 2021年2月1{glDisable(GL_TEXTURE_2D);glColor3f(1.0,0.0,0.0);glutSolidSphere(0.2f,15,15);}voidnavmaze1(){forward(player_x+player_s*(float)sin(player_h*3.14/180),player_y+player_s*(float)cos(player_h*3.14/180),0.2f);cout<<player_x<<player_y<<endl;player_h+=player_t;player_b=3*player_b/4+player_t/4;glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);glLoadIdentity();glPushMatrix();glRotatef(-90.0f,1.0f,0.0f,0.0f);glRotatef(player_h,0.0f,0.0f,1.0f);glTranslatef(-player_x,-player_y,-0.5f);glCallList(walllist);glPopMatrix();}voidnavmaze2(){欧阳歌谷创编 欧阳歌谷创编 2021年2月1if(status==1)欧阳歌谷创编if(status==1)欧阳歌谷创编2021年2月1欧阳歌谷创编 欧阳歌谷创编 2021年2月1if(status==1)欧阳歌谷创编if(status==1)欧阳歌谷创编2021年2月1forward(player_x+player_m*player_s*(float)sin(player_h*3.14/180),player_y+player_m*player_s*(float)cos(player_h*3.14/180),0.2f);cout<<player_x<<player_x<<endl;player_h+=player_t;player_b=3*player_b/4+player_t/4;glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);glLoadIdentity();glOrtho(-16.0,16.0,-16.0,16.0,-2.0,20.0);glPushMatrix();glRotatef(90.0f,0.0f,0.0f,1.0f);glTranslatef(-MAZE_WIDTH/2,-MAZE_HEIGHT/2,-0.5f);glCallList(walllist);glCallList(mazelist);glPushMatrix();glTranslatef(player_x,player_y,0.5f);glCallList(balllist);glPopMatrix();glPopMatrix();voidmyDisplay()欧阳歌谷创编 欧阳歌谷创编 2021年2月120212021年2月1欧阳歌谷创编 欧阳歌谷创编 2021年2月120212021年2月1{if(searchroute==true){}elsenavmaze1();}if(status==3){if(searchroute==true){}elsenavmaze2();}glFlush();glutSwapBuffers();}voidmyReshape(intw,inth){glViewport(0,0,w,h);glMatrixMode(GL_PROJECTION);glLoadIdentity();glMatrixMode(GL_MODELVIEW);glLoadIdentity();欧阳歌谷创编欧阳歌谷创编 欧阳歌谷创编 2021年2月1欧阳歌谷创编 欧阳歌谷创编 2021年2月1欧阳歌谷创编 欧阳歌谷创编 2021年2月1欧阳歌谷创编 欧阳歌谷创编 2021年2月1glutPostRedisplay();voidspecialKeys(intkey,intx,inty)switch(key)caseGLUT_KEY_LEFT:keystate[2]=true;player_t=-2.0f;break;caseGLUT_KEY_RIGHT:keystate[3]=true;player_t=2.0f;break;caseGLUT_KEY_UP:keystate[0]=true;player_s=0.01f;break;caseGLUT_KEY_DOWN:keystate[1]=true;player_s=-0.01f;break;default:break;voidkeyboard(unsignedcharkey,intx,inty)switch(key)case'1':status=1;break;case'3':status=3;break;default:break;glutPostRedisplay();voidupSpecialKeyboard(intkey,intx,inty)switch(key)caseGLUT_KEY_LEFT:keystate[2]=false;player_t=0.0f;欧阳歌谷创编 欧阳歌谷创编 2021年2月1欧阳歌谷创编 欧阳歌谷创编 2021年2月1break;caseGLUT_K
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五个人股份转让的合同范例
- 导游劳动合同模板正规范例
- 二零二五版全新雇佣保安劳务合同
- 施工建设合同
- 5s高危药品管理制度
- 餐馆消防由谁管理制度
- 门店产品加工管理制度
- 企业相关方管理制度
- 门店管理制度信息长途
- 费用成本发票管理制度
- 重症医学科健康宣教手册
- 山东省独生子女父母退休一次性养老补助申请表
- 2023年山东青岛市初中学业水平考试地理试卷真题(答案详解)
- 共同费用分割单表
- 酒店历史文化主题客房设计
- 临床输血规范
- 护理实习生岗前培训课件
- 早期大肠癌的诊断与内镜下治疗课件
- 艾宾浩斯记忆表格遗忘曲线
- 2023年4月自考00540外国文学史试题及答案含评分标准
- 第6章-非线性有限元法(几何非线性)课件
评论
0/150
提交评论