C语言魔方游戏.docx_第1页
C语言魔方游戏.docx_第2页
C语言魔方游戏.docx_第3页
C语言魔方游戏.docx_第4页
C语言魔方游戏.docx_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

#include #include #include #include #include #pragma comment(lib,opengl32.lib)#pragma comment(lib,glu32.lib)#define ROTX 1#define ROTY 2#define ROTZ 3#define ROTL 4#define ROTR 5#define ROTU 6#define ROTD 7int w=500;int h=500;float r=0;int sr=1;int R_state,R_count;int Begin_G=0;typedef struct MPOINT float x, y, z; MPOINT;typedef struct MRECTMPOINT Ft4;int cid;MRECT;MRECT Art83, Ert122;typedef struct GMRECTMRECT Ar43, Er42, Fr4;int aval, eval, fval;GMRECT;GMRECT X1, X2, X3, Y1, Y2, Y3, Z1, Z2, Z3;MRECT A13=-150,150,150,-150,50,150,-50,50,150,-50,150,150,-150,150,150,-50,150,150,-50,150,50,-150,150,50,-150,150,150,-150,150,50,-150,50,50,-150,50,150;MRECT A23=150,150,150,150,50,150,50,50,150,50,150,150,150,150,150,50,150,150,50,150,50,150,150,50,150,150,150,150,150,50,150,50,50,150,50,150;MRECT E12=-50,150,150,-50,50,150,50,50,150,50,150,150,-50,150,150,50,150,150,50,150,50,-50,150,50;MRECT E52=-150,150,50,-150,50,50,-150,50,-50,-150,150,-50,-150,150,50,-50,150,50,-50,150,-50,-150,150,-50;MRECT E92=-150,50,150,-150,-50,150,-50,-50,150,-50,50,150,-150,50,150,-150,-50,150,-150,-50,50,-150,50,50;MRECT Frt6=-50,50,150,-50,-50,150,50,-50,150,50,50,150,-50,150,50,50,150,50,50,150,-50,-50,150,-50,-150,50,50,-150,-50,50,-150,-50,-50,-150,50,-50;int V133 =4,4,1, V23 =0,4,4;int X1_a4=0,3,7,4, X1_e4=8,5,11,4, X1_f4=2;int X2_a4=0, X2_e4=0,1,2,3, X2_f4=0,4,3,1;int X3_a4=1,2,6,5, X3_e4=9,6,10,7, X3_f4=5;int Y1_a4=0,1,5,4, Y1_e4=0,7,3,4, Y1_f4=1;int Y2_a4=0, Y2_e4=8,9,10,11, Y2_f4=0,5,3,2;int Y3_a4=3,2,6,7, Y3_e4=1,6,2,5, Y3_f4=4;int Z1_a4=0,1,2,3, Z1_e4=0,9,1,8, Z1_f4=0;int Z2_a4=0, Z2_e4=4,7,6,5, Z2_f4=1,5,4,2;int Z3_a4=4,5,6,7, Z3_e4=3,10,2,11, Z3_f4=3;typedef struct COLORID float r, g, b; COLORID;COLORID Fcr6=0.75f,0.0f,0.0f,0.0f,0.75f,0.0f,0.0f,0.0f,0.75f,1.0f,0.6f,0.3f,0.0f,0.75f,0.75f,0.75f,0.0f,0.75f;LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);void init_Rect()int i,j;for(i=0;i3;i+)Art0i=A1i; Art1i=A2i;for(i=0;i3;i+)for(j=0;j4;j+)Art2i.Ftj.x=Art1i.Ftj.x;Art2i.Ftj.y=-Art1i.Ftj.y;Art2i.Ftj.z=Art1i.Ftj.z;Art3i.Ftj.x=Art0i.Ftj.x;Art3i.Ftj.y=-Art0i.Ftj.y;Art3i.Ftj.z=Art0i.Ftj.z;Art4i.Ftj.x=Art0i.Ftj.x;Art4i.Ftj.y=Art0i.Ftj.y;Art4i.Ftj.z=-Art0i.Ftj.z;Art5i.Ftj.x=Art1i.Ftj.x;Art5i.Ftj.y=Art1i.Ftj.y;Art5i.Ftj.z=-Art1i.Ftj.z;Art6i.Ftj.x=Art2i.Ftj.x;Art6i.Ftj.y=Art2i.Ftj.y;Art6i.Ftj.z=-Art2i.Ftj.z;Art7i.Ftj.x=Art3i.Ftj.x;Art7i.Ftj.y=Art3i.Ftj.y;Art7i.Ftj.z=-Art3i.Ftj.z;Art00.cid=0; Art01.cid=1; Art02.cid=2;Art10.cid=0; Art11.cid=1; Art12.cid=4;Art20.cid=0; Art21.cid=5; Art22.cid=4; Art30.cid=0; Art31.cid=5; Art32.cid=2;Art40.cid=3; Art41.cid=1; Art42.cid=2;Art50.cid=3; Art51.cid=1; Art52.cid=4;Art60.cid=3; Art61.cid=5; Art62.cid=4;Art70.cid=3; Art71.cid=5; Art72.cid=2; for(i=0;i2;i+)Ert0i=E1i; Ert4i=E5i; Ert8i=E9i;for(i=0;i2;i+)for(j=0;j4;j+)Ert1i.Ftj.x=Ert0i.Ftj.x;Ert1i.Ftj.y=-Ert0i.Ftj.y;Ert1i.Ftj.z=Ert0i.Ftj.z;Ert2i.Ftj.x=Ert1i.Ftj.x;Ert2i.Ftj.y=Ert1i.Ftj.y;Ert2i.Ftj.z=-Ert1i.Ftj.z;Ert3i.Ftj.x=Ert0i.Ftj.x;Ert3i.Ftj.y=Ert0i.Ftj.y;Ert3i.Ftj.z=-Ert0i.Ftj.z;Ert5i.Ftj.x=Ert4i.Ftj.x;Ert5i.Ftj.y=-Ert4i.Ftj.y;Ert5i.Ftj.z=Ert4i.Ftj.z;Ert6i.Ftj.x=-Ert5i.Ftj.x;Ert6i.Ftj.y=Ert5i.Ftj.y;Ert6i.Ftj.z=Ert5i.Ftj.z;Ert7i.Ftj.x=-Ert4i.Ftj.x;Ert7i.Ftj.y=Ert4i.Ftj.y;Ert7i.Ftj.z=Ert4i.Ftj.z;Ert9i.Ftj.x=-Ert8i.Ftj.x;Ert9i.Ftj.y=Ert8i.Ftj.y;Ert9i.Ftj.z=Ert8i.Ftj.z;Ert10i.Ftj.x=Ert9i.Ftj.x;Ert10i.Ftj.y=Ert9i.Ftj.y;Ert10i.Ftj.z=-Ert9i.Ftj.z;Ert11i.Ftj.x=Ert8i.Ftj.x;Ert11i.Ftj.y=Ert8i.Ftj.y;Ert11i.Ftj.z=-Ert8i.Ftj.z;Ert00.cid=0; Ert01.cid=1; Ert10.cid=0; Ert11.cid=5;Ert20.cid=3; Ert21.cid=5; Ert30.cid=3; Ert31.cid=1;Ert40.cid=2; Ert41.cid=1; Ert50.cid=2; Ert51.cid=5;Ert60.cid=4; Ert61.cid=5; Ert70.cid=4; Ert71.cid=1;Ert80.cid=0; Ert81.cid=2; Ert90.cid=0; Ert91.cid=4;Ert100.cid=3; Ert101.cid=4; Ert110.cid=3; Ert111.cid=2;for(i=0;i0)for(i=1;it.aval;i+)Artai0.cid=t.Ari-12.cid;Artai2.cid=t.Ari-10.cid;Artai1.cid=t.Ari-11.cid;if(t.aval)Arta00.cid=t.Art.aval-12.cid;Arta02.cid=t.Art.aval-10.cid;Arta01.cid=t.Art.aval-11.cid;if(rcount=2)for(i=1;it.eval;i+)Ertei0.cid=t.Eri-11.cid;Ertei1.cid=t.Eri-10.cid;Erte00.cid=t.Ert.eval-11.cid;Erte01.cid=t.Ert.eval-10.cid;elsefor(i=1;it.eval;i+)Ertei0.cid=t.Eri-10.cid;Ertei1.cid=t.Eri-11.cid;Erte00.cid=t.Ert.eval-10.cid;Erte01.cid=t.Ert.eval-11.cid;for(i=1;it.fval;i+)Frtfi.cid=t.Fri-1.cid;Frtf0.cid=t.Frt.fval-1.cid;elsefor(i=0;it.aval-1;i+)Artai0.cid=t.Ari+12.cid;Artai2.cid=t.Ari+10.cid;Artai1.cid=t.Ari+11.cid;if(t.aval)Artat.aval-10.cid=t.Ar02.cid;Artat.aval-12.cid=t.Ar00.cid;Artat.aval-11.cid=t.Ar01.cid;if(rcount=2)for(i=0;it.eval-1;i+)Ertei0.cid=t.Eri+11.cid;Ertei1.cid=t.Eri+10.cid;Ertet.eval-10.cid=t.Er01.cid;Ertet.eval-11.cid=t.Er00.cid;elsefor(i=0;it.eval-1;i+)Ertei0.cid=t.Eri+10.cid;Ertei1.cid=t.Eri+11.cid;Ertet.eval-10.cid=t.Er00.cid;Ertet.eval-11.cid=t.Er01.cid;for(i=0;i0)for(i=1;it.aval;i+)Artai0.cid=t.Ari-11.cid;Artai1.cid=t.Ari-10.cid;Artai2.cid=t.Ari-12.cid;if(t.aval)Arta00.cid=t.Art.aval-11.cid;Arta01.cid=t.Art.aval-10.cid;Arta02.cid=t.Art.aval-12.cid;for(i=1;it.eval;i+)Ertei0.cid=t.Eri-11.cid;Ertei1.cid=t.Eri-10.cid;Erte00.cid=t.Ert.eval-11.cid;Erte01.cid=t.Ert.eval-10.cid;for(i=1;it.fval;i+)Frtfi.cid=t.Fri-1.cid;Frtf0.cid=t.Frt.fval-1.cid;elsefor(i=0;it.aval-1;i+)Artai0.cid=t.Ari+11.cid;Artai1.cid=t.Ari+10.cid;Artai2.cid=t.Ari+12.cid;if(t.aval)Artat.aval-10.cid=t.Ar01.cid;Artat.aval-11.cid=t.Ar00.cid;Artat.aval-12.cid=t.Ar02.cid;for(i=0;it.eval-1;i+)Ertei0.cid=t.Eri+11.cid;Ertei1.cid=t.Eri+10.cid;Ertet.eval-10.cid=t.Er01.cid;Ertet.eval-11.cid=t.Er00.cid;for(i=0;it.fval-1;i+)Frtfi.cid=t.Fri+1.cid;Frtft.fval-1.cid=t.Fr0.cid;void RotateZ(GMRECT t,int a,int e,int f,int rcount,int sr)int i;if(sr0)for(i=1;i0)Arta01.cid=t.Art.aval-12.cid;Arta02.cid=t.Art.aval-11.cid;Arta00.cid=t.Art.aval-10.cid;if(rcount=2)for(i=1;it.eval;i+)Ertei0.cid=t.Eri-11.cid;Ertei1.cid=t.Eri-10.cid;Erte00.cid=t.Ert.eval-11.cid;Erte01.cid=t.Ert.eval-10.cid;elsefor(i=1;it.eval;i+)Ertei0.cid=t.Eri-10.cid;Ertei1.cid=t.Eri-11.cid;Erte00.cid=t.Ert.eval-10.cid;Erte01.cid=t.Ert.eval-11.cid;for(i=1;it.fval;i+)Frtfi.cid=t.Fri-1.cid;Frtf0.cid=t.Frt.fval-1.cid;elsefor(i=0;i0)Artat.aval-11.cid=t.Ar02.cid;Artat.aval-12.cid=t.Ar01.cid;Artat.aval-10.cid=t.Ar00.cid;if(rcount=2)for(i=0;it.eval-1;i+)Ertei0.cid=t.Eri+11.cid;Ertei1.cid=t.Eri+10.cid;Ertet.eval-10.cid=t.Er01.cid;Ertet.eval-11.cid=t.Er00.cid;elsefor(i=0;it.eval-1;i+)Ertei0.cid=t.Eri+10.cid;Ertei1.cid=t.Eri+11.cid;Ertet.eval-10.cid=t.Er00.cid;Ertet.eval-11.cid=t.Er01.cid;for(i=0;it.fval-1;i+)Frtfi.cid=t.Fri+1.cid;Frtft.fval-1.cid=t.Fr0.cid;GMRECT init_Gmrect(int a,int e,int f,int v)int i,j;GMRECT t;t.aval=v0; t.eval=v1; t.fval=v2;for(i=0;it.aval;i+)for(j=0;j3;j+)t.Arij=Artaij;for(i=0;it.eval;i+)for(j=0;j2;j+)t.Erij=Erteij;for(i=0;it.fval;i+)t.Fri=Frtfi;return t;void MakeGmrectdata()X1=init_Gmrect(X1_a,X1_e,X1_f,V13);X2=init_Gmrect(X2_a,X2_e,X2_f,V2);X3=init_Gmrect(X3_a,X3_e,X3_f,V13);Y1=init_Gmrect(Y1_a,Y1_e,Y1_f,V13);Y2=init_Gmrect(Y2_a,Y2_e,Y2_f,V2);Y3=init_Gmrect(Y3_a,Y3_e,Y3_f,V13);Z1=init_Gmrect(Z1_a,Z1_e,Z1_f,V13);Z2=init_Gmrect(Z2_a,Z2_e,Z2_f,V2);Z3=init_Gmrect(Z3_a,Z3_e,Z3_f,V13);void DrawFace(MRECT ft)int i,dx,dy,dz;glBegin(GL_QUADS);for(i=0;i4;i+) glColor3f(Fcrft.cid.r,Fcrft.cid.g,Fcrft.cid.b);glVertex3f(ft.Fti.x,ft.Fti.y,ft.Fti.z);glEnd();glColor3f(1.0f,1.0f,1.0f);glBegin(GL_LINE_LOOP);for(i=0;i4;i+)dx=dy=dz=1;if(ft.Fti.x0) dx=-dx;if(ft.Fti.y0) dy=-dy;if(ft.Fti.z0) dz=-dz;glVertex3f(ft.Fti.x+dx,ft.Fti.y+dy,ft.Fti.z+dz);glEnd();void DrawRFace(GMRECT t)int i,j;for(i=0;it.aval;i+)for(j=0;j3;j+) DrawFace(t.Arij);for(i=0;it.eval;i+)for(j=0;j2;j+)DrawFace(t.Erij);for(i=0;ihInstance,NULL);void OnGame()if(r5000) break;tr=rand()%4;if(tr=1)R_state=ROTX; R_count=tr;if(tr=2)R_state=ROTY; R_count=tr;if(tr=3)R_state=ROTZ; R_count=tr;RotateRect(R_state,R_count);R_state=0; R_count=0;void Draw()glPushMatrix();glRotatef(30,1.0f,0.0f,0.0f);glRotatef(45,0.0f,1.0f,0.0f);glBegin(GL_LINES);glColor3f(1.0f,0.0f,0.0f);glVertex3f(-400.0,100.0,0.0); glVertex3f(-410.0,90.0,0.0);glVertex3f(-400.0,100.0,0.0); glVertex3f(-390.0,90.0,0.0);glVertex3f(-400.0,100.0,0.0); glVertex3f(-400.0,0.0,0.0);glColor3f(1.0f,0.0f,1.0f);glVertex3f(-400.0,0.0,0.0); glVertex3f(-400.0,0.0,100.0);glVertex3f(-400.0,0.0,100.0); glVertex3f(-390.0,0.0,90.0);glVertex3f(-400.0,0.0,100.0); glVertex3f(-410.0,0.0,90.0);glColor3f(0.0f,1.0f,0.0f);glVertex3f(-400.0,0.0,0.0); glVertex3f(-300.0,0.0,0.0);glVertex3f(-300.0,0.0,0.0); glVertex3f(-310.0,0.0,10.0);glVertex3f(-300.0,0.0,0.0); glVertex3f(-310.0,0.0,-10.0);glEnd();glPopMatrix();void ChangeN(LONG wp,int k)if(wp=k) sr=-1;else sr=1;int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance, LPSTR lpCmdLine,int nShowCmd)MSG msg;WNDCLASS wc;HWND hwnd;wc.style=CS_HREDRAW|CS_VREDRAW|CS_OWNDC; wc.lpfnWndProc=(WNDPROC)WndProc;wc.cbClsExtra=0;wc.cbWndExtra=0;wc.hbrBackground=NULL;wc.hInstance=hInstance;wc.hCursor=LoadCursor(NULL,IDC_ARROW);wc.hIcon=NULL;wc.lpszMenuName =NULL;wc.lpszClassName=lpszAppName;if(RegisterClass(&wc)=0) return FALSE;hwnd=CreateWindow(lpszAppName,WS_OVERLAPPEDWINDOW|WS_CLIPCHILDREN|WS_CLIPSIBLINGS,0,0,w,h,NULL,NULL,hInstance,NULL);if(hwnd=FALSE) return FALSE;ShowWindow(hwnd,nShowCmd);UpdateWindow(hwnd);while(GetMessage(&msg,NULL,0,0)TranslateMessage(&msg);DispatchMessage(&msg);return 0;void SetDCPixelFormat(HDC hdc)int mPixelFormat;static PIXELFORMATDESCRIPTOR pfd=sizeof(PIXELFORMATDESCRIPTOR),1,PFD_DRAW_TO_WINDOW|PFD_SUPPORT_OPENGL|PFD_DOUBLEBUFFER,PFD_TYPE_RGBA,32,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0;mPixelFormat=ChoosePixelFormat(hdc,&pfd);SetPixelFormat(hdc,mPixelFormat,&pfd);void ChangeSize(GLsizei w,GLsizei h)if(h=0) h=1;glViewport(0,0,w,h);glMatrixMode(GL_PROJECTION);glLoadIdentity();glOrtho(-w,w,-h,h,-1000,1000);glMatrixMode(GL_MODELVIEW);glLoadIdentity();void RenderScene()glClearColor(0.0f,0.0f,0.0f,1.0f);glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);glEnable(GL_DEPTH_TEST);glLoadIdentity();Draw();glTranslatef(0,130,0);if(Begin_G=1)BeginGame(); Begin_G=2;if(Begin_G=2&R_state&R_state=ROTL) r+;ShowRotateRect(Y1,Y2,Y3,R_state,R_count,r);if(R_state=0) ShowRect(Y1,Y2,Y3); r=0; glFlush();LRESULT CALLBACK WndProc(HWND hwnd,UINT message, WPARAM wparam,LPARAM lparam)static HGLRC hrc=NULL;static HDC hdc=NULL;switch(message)case WM_CREATE:hdc=GetDC(hwnd);SetDCPixelFormat(hdc);hrc=wglCreateContext(hdc);wglMakeCurrent(hdc,hrc);SetTimer(hwnd,80,1,NULL);init_Rect();MakeGmrectdata();R_state=0; R_count=0; SetButton(X1,30,350,hwnd,1,lparam);SetButton(X1,80,350,hwnd,2,lparam);SetButton(X2,30,380,hwnd,3,lparam);SetButton(X2,80,380,hwnd,4,lparam);SetButton(X3,30,410,hwnd,5,lparam);S

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论