program OpenGLApp; uses Windows, Messages, OpenGL, SysUtils, Textures, BMP, Unit1 in 'Unit1.pas' {Form1}, Unit2 in 'Unit2.pas' {Form2}; const WND_TITLE = 'GRAPHIC'; FPS_TIMER = 1; // Timer to calculate FPS FPS_INTERVAL = 500; // Calculate FPS every 1000 ms type TCoord = Record X, Y, Z : glFLoat; end; TFace = Record q, V1, V2, V3, V4 : Integer; U, V : glFloat; TextureIndex : Integer; end; var obj_derakht1:gluint; cube:GLuint ; top:GLuint; mokab:gluint; mokab1:gluint; //********************norpardazi************* LightAmbient: array [0..3] of GLfloat = ( 0.9, 0.9, 0.9, 1.0 ); LightSpecular: array [0..3] of GLfloat = ( 0.9, 0.9, 0.9, 1.0 ); LightDiffuse: array [0..3] of GLfloat = ( 0.9, 0.9, 0.9, 1.0 ); //********************************************* h_Wnd : HWND; // Global window handle h_DC : HDC; // Global device context h_RC : HGLRC; // OpenGL rendering context keys : Array[0..255] of Boolean; // Holds keystrokes FPSCount : Integer = 0; // Counter for FPS ElapsedTime : Integer; //, Elapsed time between frames FrameTime : Integer; //tarife moteghayer baraye load kardane texture tx_jabeh,tx_ker1,tx_saat,tx_kafsoleh,tx_ajir,tx_arm4,tx_metal1,tx_wall,tx_window,tx_dparking1,tx_dparking,tx_dd4,tx_dd3,tx_dd2,tx_dd1,tx_divar3,tx_kafehale3,tx_kbala,tx_shomine,tx_shomine1,tx_divareshomine,tx_saghf1,tx_kafekhab,tx_dkhab,tx_kmpars2,tx_dkesho4, tx_dkesho3,tx_dkabin3,tx_gaz3,tx_kafeash3,tx_open3,tx_kashivahede3,tx_keshojazire,tx_kabinjazire4,tx_kabinjazire5,tx_hod,tx_kabinjazire3,tx_kabinjazire1,tx_kabinjazire2,tx_kabinjazire,tx_labejazire,tx_jazire,tx_dkabinbala,tx_12,tx_lebas,tx_saghfp,tx_kmpars,tx_dferiz,tx_d1keshoyakh,tx_d3,tx_d4,tx_periz, tx_panjere3, tx_kafash1,tx_kafash,tx_rmakro,tx_makro,tx_jelogaz,tx_gaz, tx_drkabin2,tx_ryakh2,tx_drast_yakh2,tx_dchap_yakh2,tx_balakabin,tx_keshokabin,tx_rkabin,tx_kabin2,tx_kabin1,tx_farshe4,tx_nama3,tx_nama2,tx_toalet,tx_nama,tx_d_kabin,tx_soton1,tx_nama1,tx_kashi,tx_kf,tx_panjer5,tx_2,tx_5,tx_11,MyTextureTex,asvalt,tx_marmar,tx_kaphig, tx_panjerh5,tx_ghhveikam,tx_kh2,tx_kh6,tx_aseman,tx_dar,tx_ka2,tx_ka6,tx_serarmik,tx_kafipgh : glUint; tx_chaman,tx_nazanin,tx_zamin2,tx_ka1,divar1,tx_saghf3,win1,choob,tx_emam1,dar1,fram1,p1,p2,p3,p4,p5,p6,p7,p8,p9,tx_emam2,tx_seramik,tx_parcham,tx_qqqq,tx_asvalt1,tx_dara,tx_nkdar,tx_gach,tx_wall4,tx_wall16,tx_pele,tx_nkdar1,tx_3,tx_farshe44,tx_aaaa,tx_zz,tx_nnn,tx_tablo3,tx_tablo4,tx_ka3,tx_ka8,tx_ka7,tx_ka9,tx_magh13,tx_wall11,tx_tx4,tx_kooh,tx_rmobl1,tx_rmobl,tx_mmm,tx_badaneh,tx_koler1,tx_d9,tx_periz4,tx_periz3,tx_farsh2,tx_nim1,tx_aa,tx_ap3,tx_ap6,tx_ap5,tx_ap4,tx_shishei,tx3,tx_aaa,tx5,tx_kafip1,tx_nim1z,tx_kenare,tx_farsh1,tx_das2,tx_das,tx_das1,tx_dar4,tx_dar3,tx_sink,tx_rshir,tx_toshak1,tx_ttakht,tx_stakht,tx_periz2,tx_periz1,tx_miz1,tx_miz,tx_takht4,tx_takht3,tx_takht1,tx_toshak,tx_takht,tx_darteras,tx_darteras1,tx_dar2,tx_dar1,tx_tablo2,tx_komodhal,tx_komodhal1,tx_komodeb12,tx_komodeb1,tx_komodeb,tx_darekomod3,tx_darekomod2,tx_darekomod1,tx_kashi3,tx_abajor1,tx_abajor,tx_radiyat,tx_borj,tx_koler,cheragh1,cheragh2,cheragh3,tree1,divar2: glUint; //*******************aseman pic_baltanederakht,tx_pm1,s1,s2,tx_pm2,tx_pm3 ,tx_pm4,tx_pm5,tx_tvp,tx_tir,tx_tv1,tx_tablo1,pic_tanederakht,tx_asemansia,tx_sardar:GLuint; bm:GLuint; Texture : Array of glUint; //****************** khodam ax,ay,az:glFloat; ip,jp,px1,py1,pz1,px2,py2,pz2,px3,py3,pz3,px4,py4,pz4,px5,py5,pz5,px6,py6,pz6,px7,py7,pz7,px8,py8,pz8,px9,py9,pz9,pz,tempx,tempy,tempz:integer; puz: array [1..3,1..3] of integer ; sza :integer=0; sxa :integer=0; za :integer=0; qq :integer=0; xa :integer=0; zza :integer=0; xxa :integer=0; ya,ww:real;// mn:integer=0; faaa,faa:integer; aaz:integer=20; aazz:integer=20; mnn:integer=0; kk:integer;// skk:integer;// os:integer=90; kkk:integer; ok:real; zwwww, zwww, k1,k2:real; zwww1,www1:real; zwww2,www2:real; aaa:real=0; aaaa:real=0; www,wwww :real; saaa:real=0; // *****************motaghayere vozoh c13:real=1; //*******************motaghayer xxz,xz, did,di:real; a:integer=20; CubeDL : glUint; sa:integer=20; pely,pelx:real; //************** nama w1,w2,w3,vb,cb,ch1:Real; quadratic :GLUquadricObj ; //************************tab************ t1,t2,t3,t4,t5,t6:real; t7:real=0; t11,t12:real; t8:real=270; //************************** as1,as2,as3,as4,as5,as6,as7,as8,as9,as10,as11,as12,as13,as14,as15,as16,as17,as18,as19,as20,as21,as22,as23,as24,as25,as26:real; x124, x123,kx,kz:real; //***************************** fa1,fa2,fa3,fa4,fa5,fa6:real; fa7:integer; //************ // User variables TextureCount : Integer; VertexCount : Integer; FaceCount : Integer; Vertex : Array of TCoord; Face : Array of TFace; X,Y, Z : glFloat; HeadMovement, HeadMovAngle : glFloat; mpos : TPoint; Heading : glFloat; Tilt : glFloat; shapes: GLUquadricObj; MouseSpeed : Integer = 7; MoveSpeed : glFloat = 0.03; {$R *.RES} var rtri: GLfloat; // Angle For The Triangle rquad: GLfloat; m:GLfloat; // Angle For The Quad f_Hdc : LongInt; i:GLfloat=-30.0; j:GLfloat=-9.2; k:GLfloat=-1.0; n:GLfloat=0; const f:Real=0.1875; const u:real=3; procedure glBindTexture(target: GLenum; texture: GLuint); stdcall; external opengl32; procedure mostatil2(z1,z2:real;b7:GLuint); begin glColor3f(1,1,1); glBindTexture(GL_TEXTURE_2D,b7); glBegin(GL_QUADS); glNormal3f( 0.0,-1.0, 0.0); glTexCoord2f(z1, z2); glVertex3f(-1.0, -1.0, -1.0); glTexCoord2f(0.0,z2 ); glVertex3f( 1.0, -1.0, -1.0); glTexCoord2f(0.0, 0.0); glVertex3f( 1.0, -1.0, 1.0); glTexCoord2f(z1, 0.0); glVertex3f(-1.0, -1.0, 1.0); glEnd(); end; //****************mokaab sebodi************** procedure mokaabsebodi(c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16,c17,c18:real;b1,b2,b3,b4,b5,b6:GLuint;t1,t2,z1,z2:real); begin glPushMatrix; glEnable(GL_BLEND); glColor4f(1,1,1,c13); glBindTexture(GL_TEXTURE_2D,b1); glBegin(GL_QUADS); //roubr rou glBindTexture(GL_TEXTURE_2D,b1); glNormal3f( 0.0, 0.0, 1.0); glTexCoord2f(0.0, 0.0); glVertex3f(-1.0, -1.0, 1.0); glTexCoord2f(c1, 0.0); glVertex3f( 1.0, -1.0, 1.0); glTexCoord2f(c1, c2); glVertex3f( t1, 1.0, z1); glTexCoord2f(0.0, c2); glVertex3f(t2, 1.0, z1); glEnd; // Back Face glColor4f(1,1,1,c14); glBindTexture(GL_TEXTURE_2D,b2); glBegin(GL_QUADS); glNormal3f( 0.0, 0.0,-1.0); glTexCoord2f(c3, 0.0); glVertex3f(-1.0, -1.0, -1.0); glTexCoord2f(c3, c4); glVertex3f(t2, 1.0, z2); glTexCoord2f(0.0, c4); glVertex3f( t1, 1.0, z2); glTexCoord2f(0.0, 0.0); glVertex3f( 1.0, -1.0, -1.0); glEnd(); // Top Face glColor4f(1,1,1,c15); glBindTexture(GL_TEXTURE_2D,b3); glBegin(GL_QUADS); glNormal3f( 0.0, 1.0, 0.0); glTexCoord2f(0.0, c6); glVertex3f(t2, 1.0, z2); glTexCoord2f(0.0, 0.0); glVertex3f(t2, 1.0, z1); glTexCoord2f(c5, 0.0); glVertex3f( t1, 1.0, z1); glTexCoord2f(c5, c6); glVertex3f( t1, 1.0, z2); glEnd(); // Bottom Face glColor4f(1,1,1,c16); glBindTexture(GL_TEXTURE_2D,b4); glBegin(GL_QUADS); glNormal3f( 0.0,-1.0, 0.0); glTexCoord2f(c7, c8); glVertex3f(-1.0, -1.0, -1.0); glTexCoord2f(0.0,c8 ); glVertex3f( 1.0, -1.0, -1.0); glTexCoord2f(0.0, 0.0); glVertex3f( 1.0, -1.0, 1.0); glTexCoord2f(c7, 0.0); glVertex3f(-1.0, -1.0, 1.0); glEnd(); //right glColor4f(1,1,1,c17); glBindTexture(GL_TEXTURE_2D,b5); glBegin(GL_QUADS); glNormal3f( 1.0, 0.0, 0.0); glTexCoord2f(c9, 0.0); glVertex3f( 1.0, -1.0, -1); glTexCoord2f(c9, c10); glVertex3f( t1, 1.0, z2); glTexCoord2f(0.0, c10); glVertex3f( t1, 1.0, z1); glTexCoord2f(0.0, 0.0); glVertex3f( 1.0, -1.0, 1); glEnd(); //left glColor4f(1,1,1,c18); glBindTexture(GL_TEXTURE_2D,b6); glBegin(GL_QUADS); glNormal3f(-1.0, 0.0, 0.0); glTexCoord2f(0.0, 0.0); glVertex3f(-1.0, -1.0, -1.0); glTexCoord2f(c11, 0.0); glVertex3f(-1.0, -1.0, 1.0); glTexCoord2f(c11, c12); glVertex3f(t2, 1.0, z1); glTexCoord2f(0.0, c12); glVertex3f(t2, 1.0, z2); glEnd(); glDisable(GL_BLEND); glPopMatrix; END; //*************************** procedure pro_polygon(x1,y1,z1:double;coord:gluint; w,s:integer); begin glBindTexture(GL_TEXTURE_2D, coord); glBegin(GL_POLYGON); glTexCoord2f(w,0 ); glVertex3f( 0, y1, 0.0); glTexCoord2f(0, s); glVertex3f( x1,-y1, z1); glTexCoord2f(w, s); glVertex3f(-x1,-y1, z1); glTexCoord2f(w, 0); glVertex3f( 0.0, y1, 0.0); glTexCoord2f(w, s); glVertex3f( x1,-y1, z1); glTexCoord2f(0, s); glVertex3f( x1,-y1, -z1); glTexCoord2f(w, 0); glVertex3f( 0.0, y1, 0.0); glTexCoord2f(w, s); glVertex3f( x1,-y1, -z1); glTexCoord2f(0, s); glVertex3f(-x1,-y1, -z1); glTexCoord2f(w,0); glVertex3f( 0.0, y1, 0.0); glTexCoord2f(w, s); glVertex3f(-x1,-y1,-z1); glTexCoord2f(0, s); glVertex3f(-x1,-y1, z1); GlEnd(); glBegin(GL_QUADS); // Bottom Face glNormal3f( 0.0,1.0, 0.0); glTexCoord2f(w, s); glVertex3f(-x1, -y1, -z1); glTexCoord2f(0.0, s); glVertex3f( x1, -y1, -z1); glTexCoord2f(0.0, 0.0); glVertex3f( x1, -y1, z1); glTexCoord2f(w, 0.0); glVertex3f(-x1, -y1, z1); glend(); // glBindTexture(GL_TEXTURE_2D, abc); end; //**************************************** procedure mokaab1(c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16,c17,c18:real;b1,b2,b3,b4,b5,b6:GLuint); begin glPushMatrix; glEnable(GL_BLEND); glColor4f(1,1,1,c13); glBindTexture(GL_TEXTURE_2D,b1); glBegin(GL_QUADS); //roubr rou glNormal3f( 0.0, 0.0, 1.0); glTexCoord2f(0.0, 0.0); glVertex3f(-1.0, -1.0, 1.0); glTexCoord2f(c1, 0.0); glVertex3f( 1.0, -1.0, 1.0); glTexCoord2f(c1, c2); glVertex3f( 1.0, 1.0, 1.0); glTexCoord2f(0.0, c2); glVertex3f(-1.0, 1.0, 1.0); glEnd(); // Back Face glColor4f(1,1,1,c14); glBindTexture(GL_TEXTURE_2D,b2); glBegin(GL_QUADS); glNormal3f( 0.0, 0.0,-1.0); glTexCoord2f(c3, 0.0); glVertex3f(-1.0, -1.0, -1.0); glTexCoord2f(c3, c4); glVertex3f(-1.0, 1.0, -1.0); glTexCoord2f(0.0, c4); glVertex3f( 1.0, 1.0, -1.0); glTexCoord2f(0.0, 0.0); glVertex3f( 1.0, -1.0, -1.0); glEnd(); // Top Face glColor4f(1,1,1,c15); glBindTexture(GL_TEXTURE_2D,b3); glBegin(GL_QUADS); glNormal3f( 0.0, 1.0, 0.0); glTexCoord2f(0.0, c6); glVertex3f(-1.0, 1.0, -1.0); glTexCoord2f(0.0, 0.0); glVertex3f(-1.0, 1.0, 1.0); glTexCoord2f(c5, 0.0); glVertex3f( 1.0, 1.0, 1.0); glTexCoord2f(c5, c6); glVertex3f( 1.0, 1.0, -1.0); glEnd(); // Bottom Face glColor4f(1,1,1,c16); glBindTexture(GL_TEXTURE_2D,b4); glBegin(GL_QUADS); glNormal3f( 0.0,-1.0, 0.0); glTexCoord2f(c7, c8); glVertex3f(-1.0, -1.0, -1.0); glTexCoord2f(0.0,c8 ); glVertex3f( 1.0, -1.0, -1.0); glTexCoord2f(0.0, 0.0); glVertex3f( 1.0, -1.0, 1.0); glTexCoord2f(c7, 0.0); glVertex3f(-1.0, -1.0, 1.0); glEnd(); //right glColor4f(1,1,1,c17); glBindTexture(GL_TEXTURE_2D,b5); glBegin(GL_QUADS); glNormal3f( 1.0, 0.0, 0.0); glTexCoord2f(c9, 0.0); glVertex3f( 1.0, -1.0, -1.0); glTexCoord2f(c9, c10); glVertex3f( 1.0, 1.0, -1.0); glTexCoord2f(0.0, c10); glVertex3f( 1.0, 1.0, 1.0); glTexCoord2f(0.0, 0.0); glVertex3f( 1.0, -1.0, 1.0); glEnd(); //left glColor4f(1,1,1,c18); glBindTexture(GL_TEXTURE_2D,b6); glBegin(GL_QUADS); glNormal3f(-1.0, 0.0, 0.0); glTexCoord2f(0.0, 0.0); glVertex3f(-1.0, -1.0, -1.0); glTexCoord2f(c11, 0.0); glVertex3f(-1.0, -1.0, 1.0); glTexCoord2f(c11, c12); glVertex3f(-1.0, 1.0, 1.0); glTexCoord2f(0.0, c12); glVertex3f(-1.0, 1.0, -1.0); glEnd(); glDisable(GL_BLEND); glPopMatrix; END; //*********************************** //*****************otagh2******** procedure soleh2; begin //********************otagh divaraghab glPushMatrix; glTranslatef(-80,-0,-80); glScale(60,45,2); mokaab1(1,1,5,5,5,5,5,5,5,5,5,5,1,1,1,1,1,1,tx_kmpars2,tx_wall4,tx_wall4,tx_wall4,tx_wall4,tx_wall4); glPopMatrix; //********************soleh divarchap glPushMatrix; glTranslatef(-141,-0,-20); glScale(2,45,60); mokaab1(2,2,2,2,2,2,2,2,1,1,2,2,4,4,4,4,1,1,tx_wall4,tx_wall4,tx_wall4,tx_wall4,tx_kmpars2,tx_wall4); glPopMatrix; //********************otagh divarrast glPushMatrix; glTranslatef(-20,-0,-20); glScale(2,45,60); mokaab1(2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,tx_wall4,tx_wall4,tx_wall4,tx_wall4,tx_wall4,tx_kmpars2); glPopMatrix; glPushMatrix; glTranslatef(-80,45,-20); glScale(60,2.2,60); mokaab1(5,5,5,5,5,5,1,1,5,5,4,4,1,1,1,1,1,1,tx_wall4,tx_wall4,tx_wall4,tx_kmpars2,tx_wall4,tx_wall4); glPopMatrix; end; procedure saghf; begin //********************saghf glPushMatrix; glTranslatef(-80,20,0); glScale(490,0.2,440); mokaab1(30,30,30,30,30,30,30,3,3,3,3,3,1,1,1,1,1,1,tx_aseman,tx_aseman,tx_aseman,tx_aseman,tx_aseman,tx_aseman); mokaab1(1,1,5,5,5,5,5,5,5,5,1,1,1,1,1,1,1,1,tx_aseman,tx_aseman,tx_aseman,tx_aseman,tx_aseman,tx_aseman); glPopMatrix; end; //********************dalan vorodi procedure dalan_vorodi; begin //********************otagh divaraghab glPushMatrix; glTranslatef(-80,-0,-80); glScale(60,20,2); mokaab1(1,1,5,5,5,5,5,5,5,5,5,5,1,1,1,1,1,1,tx_kmpars2,tx_wall4,tx_wall4,tx_wall4,tx_wall4,tx_wall4); glPopMatrix; //********************otagh divarrast { glPushMatrix; glTranslatef(-20,-0,-20); glScale(2,20,60); mokaab1(2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,tx_wall4,tx_wall4,tx_wall4,tx_wall4,tx_wall4,tx_kmpars2); glPopMatrix; glPushMatrix; glTranslatef(-80,45,-20); glScale(60,2.2,100); mokaab1(5,5,5,5,5,5,1,1,5,5,4,4,1,1,1,1,1,1,tx_wall4,tx_wall4,tx_wall4,tx_kmpars2,tx_wall4,tx_wall4); glPopMatrix; } //********************otagh kaf glPushMatrix; glTranslatef(-80,-20.3,-20); glScale(60,0.5,100); mokaab1(1,1,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,tx_seramik,tx_seramik,tx_seramik,tx_seramik,tx_seramik,tx_seramik); glPopMatrix; //********************soleh vorodi glPushMatrix; glTranslatef(-98,-0,40); glScale(45,45,1); mokaab1(2,2,2,2,4,4,4,4,4,4,4,4,1,1,1,1,1,1,tx_wall4,tx_kmpars2,tx_wall4,tx_wall4,tx_wall4,tx_wall4); glPopMatrix; end; //***************** procedure otagh; begin //********************otagh divaraghab glPushMatrix; glTranslatef(-80,-1,-80); glScale(60,45,2); mokaab1(4,4,5,5,5,5,5,5,5,5,5,5,1,1,1,1,1,1,tx_wall,tx_nama2,tx_nama2,tx_nama2,tx_nama2,tx_nama2); glPopMatrix; //********************otagh divarchap glPushMatrix; glTranslatef(-141,-1,-20); glScale(1,45,60); mokaab1(2,2,2,2,2,2,2,2,2,2,2,2,4,4,4,4,1,1,tx_nama2,tx_nama2,tx_nama2,tx_nama2,tx_wall,tx_nama2); glPopMatrix; //********************otagh divarrast glPushMatrix; glTranslatef(-20,-1,-20); glScale(2,45,60); mokaab1(2,2,2,2,2,2,2,2,2,2,4,4,1,1,1,1,4,4,tx_nama2,tx_nama2,tx_nama2,tx_nama2,tx_nama2,tx_wall); glPopMatrix; //********************soleh saghf congereh jelo { glPushMatrix; glTranslatef(-119,49,36); glScale(4,6,4); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,tx_nama2,tx_nama2,tx_nama2,tx_nama2,tx_nama2,tx_nama2); glPopMatrix; glPushMatrix; glTranslatef(-119,49,36); glScale(4,6,4); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,tx_nama2,tx_nama2,tx_nama2,tx_nama2,tx_nama2,tx_nama2); glPopMatrix; glPushMatrix; glTranslatef(-119,49,36); glScale(4,6,4); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,tx_nama2,tx_nama2,tx_nama2,tx_nama2,tx_nama2,tx_nama2); glPopMatrix; glPushMatrix; glTranslatef(-119,49,36); glScale(4,6,4); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,tx_nama2,tx_nama2,tx_nama2,tx_nama2,tx_nama2,tx_nama2); glPopMatrix; glPushMatrix; glTranslatef(-119,49,36); glScale(4,6,4); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,tx_nama2,tx_nama2,tx_nama2,tx_nama2,tx_nama2,tx_nama2); glPopMatrix; glPushMatrix; glTranslatef(-119,49,36); glScale(4,6,4); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,tx_nama2,tx_nama2,tx_nama2,tx_nama2,tx_nama2,tx_nama2); glPopMatrix; //********************soleh saghf congereh aghab glPushMatrix; glTranslatef(-119,49,-72); glScale(4,6,4); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,tx_nama2,tx_nama2,tx_nama2,tx_nama2,tx_nama2,tx_nama2); glPopMatrix; glPushMatrix; glTranslatef(-199,49,-72); glScale(4,6,4); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,tx_nama2,tx_nama2,tx_nama2,tx_nama2,tx_nama2,tx_nama2); glPopMatrix; glPushMatrix; glTranslatef(-119,49,-72); glScale(4,6,4); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,tx_nama2,tx_nama2,tx_nama2,tx_nama2,tx_nama2,tx_nama2); glPopMatrix; glPushMatrix; glTranslatef(-119,49,-72); glScale(4,6,4); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,tx_nama2,tx_nama2,tx_nama2,tx_nama2,tx_nama2,tx_nama2); glPopMatrix; glPushMatrix; glTranslatef(-119,49,-72); glScale(4,6,4); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,tx_nama2,tx_nama2,tx_nama2,tx_nama2,tx_nama2,tx_nama2); glPopMatrix; glPushMatrix; glTranslatef(-119,49,-72); glScale(4,6,4); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,tx_nama2,tx_nama2,tx_nama2,tx_nama2,tx_nama2,tx_nama2); glPopMatrix; //********************soleh saghf congereh rast glPushMatrix; glTranslatef(-19,49,36); glScale(4,6,4); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,tx_nama2,tx_nama2,tx_nama2,tx_nama2,tx_nama2,tx_nama2); glPopMatrix; glPushMatrix; glTranslatef(-19,49,36); glScale(4,6,4); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,tx_nama2,tx_nama2,tx_nama2,tx_nama2,tx_nama2,tx_nama2); glPopMatrix; glPushMatrix; glTranslatef(-19,49,-36); glScale(4,6,4); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,tx_nama2,tx_nama2,tx_nama2,tx_nama2,tx_nama2,tx_nama2); glPopMatrix; glPushMatrix; glTranslatef(-19,49,-36); glScale(4,6,4); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,tx_nama2,tx_nama2,tx_nama2,tx_nama2,tx_nama2,tx_nama2); glPopMatrix; glPushMatrix; glTranslatef(-19,49,-36); glScale(4,6,4); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,tx_nama2,tx_nama2,tx_nama2,tx_nama2,tx_nama2,tx_nama2); glPopMatrix; glPushMatrix; glTranslatef(-19,49,-36); glScale(4,6,4); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,tx_nama2,tx_nama2,tx_nama2,tx_nama2,tx_nama2,tx_nama2); glPopMatrix; } //********************soleh kaf { glPushMatrix; glTranslatef(-80,-20.3,-20); glScale(60,1,60); mokaab1(1,1,4,4,4,4,4,4,1,1,1,1,1,1,1,1,1,1,tx_kafsoleh,tx_kafsoleh,tx_kafsoleh,tx_kafsoleh,tx_kafsoleh,tx_kafsoleh); glPopMatrix; //********************soleh vorodi glPushMatrix; glTranslatef(-98,-0,40); glScale(45,45,1); mokaab1(2,2,4,4,4,4,4,4,4,4,4,4,1,1,1,1,1,1,tx_nama2,tx_wall,tx_nama2,tx_nama2,tx_nama2,tx_nama2); glPopMatrix;} end; //**************************** aseman abi procedure aseman(); begin glPushMatrix; glTranslatef(-60,100,100); glBindTexture(GL_TEXTURE_2d ,bm); glRotated(90+(ww/13),1,0,0); gluSphere(shapes,5,30,30); gluSphere(shapes,600,5000,5000); ww:=ww+1; glPopMatrix; end; //-------------------- //----------------------------- procedure jabeh; begin CubeDL :=glGenLists(1); glNewList(CubeDL, GL_COMPILE); glBindTexture(GL_TEXTURE_2D,tx_jabeh); // Bind the Texture to the object glBegin(GL_QUADS); // Front Face glTexCoord2f(0.0, 0.0); glVertex3f(-1.0, -1.0, 1.0); glTexCoord2f(1.0, 0.0); glVertex3f( 1.0, -1.0, 1.0); glTexCoord2f(1.0, 1.0); glVertex3f( 1.0, 1.0, 1.0); glTexCoord2f(0.0, 1.0); glVertex3f(-1.0, 1.0, 1.0); // Back Face glTexCoord2f(1.0, 0.0); glVertex3f(-1.0, -1.0, -1.0); glTexCoord2f(1.0, 1.0); glVertex3f(-1.0, 1.0, -1.0); glTexCoord2f(0.0, 1.0); glVertex3f( 1.0, 1.0, -1.0); glTexCoord2f(0.0, 0.0); glVertex3f( 1.0, -1.0, -1.0); // Top Face glTexCoord2f(0.0, 1.0); glVertex3f(-1.0, 1.0, -1.0); glTexCoord2f(0.0, 0.0); glVertex3f(-1.0, 1.0, 1.0); glTexCoord2f(1.0, 0.0); glVertex3f( 1.0, 1.0, 1.0); glTexCoord2f(1.0, 1.0); glVertex3f( 1.0, 1.0, -1.0); // Bottom Face glTexCoord2f(1.0, 1.0); glVertex3f(-1.0, -1.0, -1.0); glTexCoord2f(0.0, 1.0); glVertex3f( 1.0, -1.0, -1.0); glTexCoord2f(0.0, 0.0); glVertex3f( 1.0, -1.0, 1.0); glTexCoord2f(1.0, 0.0); glVertex3f(-1.0, -1.0, 1.0); // Right face glTexCoord2f(1.0, 0.0); glVertex3f( 1.0, -1.0, -1.0); glTexCoord2f(1.0, 1.0); glVertex3f( 1.0, 1.0, -1.0); glTexCoord2f(0.0, 1.0); glVertex3f( 1.0, 1.0, 1.0); glTexCoord2f(0.0, 0.0); glVertex3f( 1.0, -1.0, 1.0); // Left Face glTexCoord2f(0.0, 0.0); glVertex3f(-1.0, -1.0, -1.0); glTexCoord2f(1.0, 0.0); glVertex3f(-1.0, -1.0, 1.0); glTexCoord2f(1.0, 1.0); glVertex3f(-1.0, 1.0, 1.0); glTexCoord2f(0.0, 1.0); glVertex3f(-1.0, 1.0, -1.0); glEnd(); glEndList(); end; { //************takht //********************khabgah procedure khabgah; begin //********************** soleh glPushMatrix; glTranslatef(70,0,-210); glScalef (1.3,1.3,1.3); glRotated(90,0,-1,0); otagh() ; glPopMatrix; end; } procedure derakht; begin //////////////////////// tane glNewList(obj_derakht1,GL_COMPILE); glPushMatrix; glTranslatef(10,10,100); glScalef(0.5,0.5,0.50); glRotatef(-90,1,0,0); glBindTexture(GL_TEXTURE_2D,pic_tanederakht); gluCylinder(quadratic,0.2,0.2,2,32,32); glPopMatrix; /////////////////////////////makhrote balae glPushMatrix; glTranslatef(10,10+1.12,100); glScalef(0.1,0.5,0.50); glRotatef(-90,1,0,0); glBindTexture(GL_TEXTURE_2D,pic_baltanederakht); gluCylinder(quadratic,0.2,0.3,0.5,32,32); glPopMatrix; //////////////////// koreh zirin glPushMatrix; glTranslatef(10,10+1.5,100); glRotatef(-90,1,0,0); glBindTexture(GL_TEXTURE_2D,pic_baltanederakht); gluSphere(quadratic,0.62,32,32); glPopMatrix; //////////////////////makhrot vasat glPushMatrix; glTranslatef(10,10+1.9,100); glRotatef(-90,1,0,0); glBindTexture(GL_TEXTURE_2D,pic_baltanederakht); gluCylinder(quadratic,0.50,0,0.8,32,32); glPopMatrix; glEndList(); end; //////////////derakht //*****************zagheh******** procedure zagheh; begin //********************soleh divaraghab glPushMatrix; glTranslatef(-80,-0,-80); glScale(60,45,2); mokaab1(1,1,5,5,5,5,5,5,5,5,5,5,1,1,1,1,1,1,tx_kmpars2,tx_wall4,tx_wall4,tx_wall4,tx_wall4,tx_wall4); glPopMatrix; //********************soleh divarchap glPushMatrix; glTranslatef(-141,-0,-20); glScale(2,45,60); mokaab1(2,2,2,2,2,2,2,2,1,1,2,2,4,4,4,4,1,1,tx_wall4,tx_wall4,tx_wall4,tx_wall4,tx_kmpars2,tx_wall4); glPopMatrix; //********************soleh divarrast glPushMatrix; glTranslatef(-20,-0,-20); glScale(2,25,60); mokaab1(2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,tx_wall4,tx_wall4,tx_wall4,tx_wall4,tx_wall4,tx_kmpars2); glPopMatrix; glPushMatrix; glTranslatef(-80,25,-20); glScale(60,2.2,60); mokaab1(5,5,5,5,5,5,1,1,5,5,4,4,1,1,1,1,1,1,tx_wall4,tx_wall4,tx_wall4,tx_kmpars2,tx_wall4,tx_wall4); glPopMatrix; end; ////********************** //*****************zagheh******** procedure zagheh2; begin //********************soleh divaraghab glPushMatrix; glTranslatef(-50,-0,-80); glScale(60,45,2); mokaab1(1,1,5,5,5,5,5,5,5,5,5,5,1,1,1,1,1,1,tx_kmpars2,tx_wall4,tx_wall4,tx_wall4,tx_wall4,tx_wall4); glPopMatrix; //********************soleh divarchap glPushMatrix; glTranslatef(-111,-0,-20); glScale(2,45,60); mokaab1(2,2,2,2,2,2,2,2,1,1,2,2,4,4,4,4,1,1,tx_wall4,tx_wall4,tx_wall4,tx_wall4,tx_kmpars2,tx_wall4); glPopMatrix; //********************soleh divarrast glPushMatrix; glTranslatef(10,-0,-20); glScale(2,25,60); mokaab1(2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,tx_wall4,tx_wall4,tx_wall4,tx_wall4,tx_wall4,tx_kmpars2); glPopMatrix; glPushMatrix; glTranslatef(-50,25,-20); glScale(60,2.2,60); mokaab1(5,5,5,5,5,5,1,1,5,5,4,4,1,1,1,1,1,1,tx_wall4,tx_wall4,tx_wall4,tx_kmpars2,tx_wall4,tx_wall4); glPopMatrix; end; //********************soleh saghf congereh chap { glPushMatrix; glTranslatef(-139,49,36); glScale(4,6,4); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,tx_wall4,tx_wall4,tx_wall4,tx_wall4,tx_wall4,tx_wall4); glPopMatrix; glPushMatrix; glTranslatef(-139,49,36); glScale(4,6,4); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,tx_wall4,tx_wall4,tx_wall4,tx_wall4,tx_wall4,tx_wall4); glPopMatrix; glPushMatrix; glTranslatef(-139,49,-36); glScale(4,6,4); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,tx_wall4,tx_wall4,tx_wall4,tx_wall4,tx_wall4,tx_wall4); glPopMatrix; glPushMatrix; glTranslatef(-139,49,-36); glScale(4,6,4); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,tx_wall4,tx_wall4,tx_wall4,tx_wall4,tx_wall4,tx_wall4); glPopMatrix; glPushMatrix; glTranslatef(-139,49,-36); glScale(4,6,4); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,tx_wall4,tx_wall4,tx_wall4,tx_wall4,tx_wall4,tx_wall4); glPopMatrix; glPushMatrix; glTranslatef(-139,49,-36); glScale(4,6,4); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,tx_wall4,tx_wall4,tx_wall4,tx_wall4,tx_wall4,tx_wall4); glPopMatrix; //********************soleh saghf congereh jelo glPushMatrix; glTranslatef(-119,49,36); glScale(4,6,4); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,tx_wall4,tx_wall4,tx_wall4,tx_wall4,tx_wall4,tx_wall4); glPopMatrix; glPushMatrix; glTranslatef(-99,49,36); glScale(4,6,4); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,tx_wall4,tx_wall4,tx_wall4,tx_wall4,tx_wall4,tx_wall4); glPopMatrix; glPushMatrix; glTranslatef(-79,49,36); glScale(4,6,4); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,tx_wall4,tx_wall4,tx_wall4,tx_wall4,tx_wall4,tx_wall4); glPopMatrix; glPushMatrix; glTranslatef(-59,49,36); glScale(4,6,4); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,tx_wall4,tx_wall4,tx_wall4,tx_wall4,tx_wall4,tx_wall4); glPopMatrix; glPushMatrix; glTranslatef(-39,49,36); glScale(4,6,4); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,tx_wall4,tx_wall4,tx_wall4,tx_wall4,tx_wall4,tx_wall4); glPopMatrix; glPushMatrix; glTranslatef(-19,49,36); glScale(4,6,4); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,tx_wall4,tx_wall4,tx_wall4,tx_wall4,tx_wall4,tx_wall4); glPopMatrix; //********************soleh saghf congereh aghab glPushMatrix; glTranslatef(-119,49,-36); glScale(4,6,4); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,tx_wall4,tx_wall4,tx_wall4,tx_wall4,tx_wall4,tx_wall4); glPopMatrix; glPushMatrix; glTranslatef(-99,49,-36); glScale(4,6,4); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,tx_wall4,tx_wall4,tx_wall4,tx_wall4,tx_wall4,tx_wall4); glPopMatrix; glPushMatrix; glTranslatef(-79,49,-36); glScale(4,6,4); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,tx_wall4,tx_wall4,tx_wall4,tx_wall4,tx_wall4,tx_wall4); glPopMatrix; glPushMatrix; glTranslatef(-59,49,-36); glScale(4,6,4); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,tx_wall4,tx_wall4,tx_wall4,tx_wall4,tx_wall4,tx_wall4); glPopMatrix; glPushMatrix; glTranslatef(-39,49,-36); glScale(4,6,4); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,tx_wall4,tx_wall4,tx_wall4,tx_wall4,tx_wall4,tx_wall4); glPopMatrix; glPushMatrix; glTranslatef(-19,49,-36); glScale(4,6,4); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,tx_wall4,tx_wall4,tx_wall4,tx_wall4,tx_wall4,tx_wall4); glPopMatrix; //********************soleh saghf congereh rast glPushMatrix; glTranslatef(-19,49,36); glScale(4,6,4); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,tx_wall4,tx_wall4,tx_wall4,tx_wall4,tx_wall4,tx_wall4); glPopMatrix; glPushMatrix; glTranslatef(-19,49,36); glScale(4,6,4); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,tx_wall4,tx_wall4,tx_wall4,tx_wall4,tx_wall4,tx_wall4); glPopMatrix; glPushMatrix; glTranslatef(-19,49,-36); glScale(4,6,4); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,tx_wall4,tx_wall4,tx_wall4,tx_wall4,tx_wall4,tx_wall4); glPopMatrix; glPushMatrix; glTranslatef(-19,49,-36); glScale(4,6,4); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,tx_wall4,tx_wall4,tx_wall4,tx_wall4,tx_wall4,tx_wall4); glPopMatrix; glPushMatrix; glTranslatef(-19,49,-36); glScale(4,6,4); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,tx_wall4,tx_wall4,tx_wall4,tx_wall4,tx_wall4,tx_wall4); glPopMatrix; glPushMatrix; glTranslatef(-19,49,-36); glScale(4,6,4); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,tx_wall4,tx_wall4,tx_wall4,tx_wall4,tx_wall4,tx_wall4); glPopMatrix; } //********************soleh kaf { glPushMatrix; glTranslatef(-80,-20.3,-20); glScale(60,0.5,60); mokaab1(1,1,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,tx_seramik,tx_seramik,tx_seramik,tx_seramik,tx_seramik,tx_seramik); glPopMatrix; end; } //************** procedure pele; begin end ; //puzz3el procedure puzzel(); begin { //*****************aks frame glPushMatrix; glTranslatef(238,0,121); glScale(20,20,0.1); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,fram1,tx_dar,tx_dar,tx_dar,tx_dar,tx_dar); glPopMatrix; //*****************aks pazzel glPushMatrix; glTranslatef(229,10,122); glScale(5,5,0.2); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,p1,tx_dar,tx_dar,tx_dar,tx_dar,tx_dar); glPopMatrix; //*****************aks2 pazzel glPushMatrix; glTranslatef(239,10,122); glScale(5,5,0.2); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,p2,tx_dar,tx_dar,tx_dar,tx_dar,tx_dar); glPopMatrix; //*****************aks3 pazzel glPushMatrix; glTranslatef(249,10,122); glScale(5,5,0.2); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,p3,tx_dar,tx_dar,tx_dar,tx_dar,tx_dar); glPopMatrix; //*****************aks4 pazzel glPushMatrix; glTranslatef(229,0,122); glScale(5,5,0.2); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,p4,tx_dar,tx_dar,tx_dar,tx_dar,tx_dar); glPopMatrix; //*****************aks5 pazzel glPushMatrix; glTranslatef(239,0,122); glScale(5,5,0.2); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,p5,tx_dar,tx_dar,tx_dar,tx_dar,tx_dar); glPopMatrix; //*****************aks6 pazzel glPushMatrix; glTranslatef(249,0,122); glScale(5,5,0.2); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,p6,tx_dar,tx_dar,tx_dar,tx_dar,tx_dar); glPopMatrix; //*****************aks7 pazzel glPushMatrix; glTranslatef(229,-10,122); glScale(5,5,0.2); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,p7,tx_dar,tx_dar,tx_dar,tx_dar,tx_dar); glPopMatrix; //*****************aks8 pazzel glPushMatrix; glTranslatef(239,-10,122); glScale(5,5,0.2); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,p8,tx_dar,tx_dar,tx_dar,tx_dar,tx_dar); glPopMatrix; //*****************aks9 pazzel glPushMatrix; glTranslatef(249,-10,122); glScale(5,5,0.2); // mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,p9,tx_dar,tx_dar,tx_dar,tx_dar,tx_dar); glPopMatrix; //******************** } puz[3,3]:=0; // pz1,pz2,pz3,pz4,pz5,pz6,pz7,pz8,pz9:=122; //*****************aks frame glPushMatrix; glTranslatef(238,0,121); glScale(20,20,0.1); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,fram1,tx_dar,tx_dar,tx_dar,tx_dar,tx_dar); glPopMatrix; //*****************aks pazzel glPushMatrix; glTranslatef(px1,py1,pz); glScale(5,5,0.2); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,p1,tx_dar,tx_dar,tx_dar,tx_dar,tx_dar); glPopMatrix; //*****************aks2 pazzel glPushMatrix; glTranslatef(px2,py2,pz); glScale(5,5,0.2); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,p2,tx_dar,tx_dar,tx_dar,tx_dar,tx_dar); glPopMatrix; //*****************aks3 pazzel glPushMatrix; glTranslatef(px3,py3,pz); glScale(5,5,0.2); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,p3,tx_dar,tx_dar,tx_dar,tx_dar,tx_dar); glPopMatrix; //*****************aks4 pazzel glPushMatrix; glTranslatef(px4,py4,pz); glScale(5,5,0.2); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,p4,tx_dar,tx_dar,tx_dar,tx_dar,tx_dar); glPopMatrix; //*****************aks5 pazzel glPushMatrix; glTranslatef(px5,py5,pz); glScale(5,5,0.2); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,p5,tx_dar,tx_dar,tx_dar,tx_dar,tx_dar); glPopMatrix; //*****************aks6 pazzel glPushMatrix; glTranslatef(px6,py6,pz); glScale(5,5,0.2); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,p6,tx_dar,tx_dar,tx_dar,tx_dar,tx_dar); glPopMatrix; //*****************aks7 pazzel glPushMatrix; glTranslatef(px7,py7,pz); glScale(5,5,0.2); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,p7,tx_dar,tx_dar,tx_dar,tx_dar,tx_dar); glPopMatrix; //*****************aks8 pazzel glPushMatrix; glTranslatef(px8,py8,pz); glScale(5,5,0.2); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,p8,tx_dar,tx_dar,tx_dar,tx_dar,tx_dar); glPopMatrix; //*****************aks9 pazzel glPushMatrix; glTranslatef(px9,py8,pz); glScale(5,5,0.2); // mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,p9,tx_dar,tx_dar,tx_dar,tx_dar,tx_dar); glPopMatrix; //******************** END; //******************************* end puzzel //************************************************************************************ //************************************************************************************ {-------------------------------------------------------------------------------------} { Function to draw the actual scene } {--------------------------------------------------------------------------------------} procedure glDraw(); var I : Integer; //t, s:Integer; //q,e,g,h,l,p,x1,x2,x3,x4,y1,y2,y3,y4,Z1,Z2:real; //**************meshma //otobos xx,mk,pp:real; s,n:Integer ; begin xx:=250; mk:=270; s:=250; n:=250; pp:=10; glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); // Clear The Screen And The Depth Buffer glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); glLoadIdentity(); // Reset The View shapes:=gluNewQuadric(); glRotate(Tilt, 1, 0, 0); glRotate(Heading, 0, 1, 0); glTranslatef(X+pelx+100,HeadMovement-w1-did+di-pely+x123+x124, z-w2+x123-x124-500); //zamin glPushMatrix; glTranslatef(-100,-22,400); glScale(590,0.2,600); mokaab1(30,30,30,30,30,30,30,3,3,3,3,3,1,1,1,1,1,1,tx_asvalt1,tx_asvalt1,tx_asvalt1,tx_asvalt1,tx_asvalt1,tx_asvalt1); mokaab1(1,1,5,5,5,5,5,5,5,5,1,1,1,1,1,1,1,1,tx_zamin2,tx_zamin2,tx_zamin2,tx_zamin2,tx_zamin2,tx_zamin2); glPopMatrix; //jadeh vasat { glPushMatrix; glTranslatef(20,-21.5,0); glScale(25,0.2,440); mokaab1(1,1,1,1,1,30,1,30,1,30,1,1,1,1,1,1,1,1,asvalt,asvalt,asvalt,asvalt,asvalt,asvalt); glPopMatrix; } //saghf { glPushMatrix; glTranslatef(-50,60,0); glScale(1900,0.2,440); mokaab1(30,30,30,30,30,30,30,3,3,3,3,3,1,1,1,1,1,1,tx_aseman,tx_aseman,tx_aseman,tx_aseman,tx_aseman,tx_aseman); mokaab1(1,1,5,5,5,5,5,5,5,5,1,1,1,1,1,1,1,1,tx_zamin2,tx_zamin2,tx_zamin2,tx_zamin2,tx_zamin2,tx_zamin2); glPopMatrix; } //// agent glPushMatrix; glTranslatef(ax,ay,az); glScale(15,15,0.2); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,p6,tx_dar,tx_dar,tx_dar,tx_dar,tx_dar); glPopMatrix; //*****************dar glPushMatrix; glTranslatef(-0,-1.9,326); glScale(12,18,0.1); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,dar1,dar1,dar1,dar1,dar1,dar1); glPopMatrix; //*****************win glPushMatrix; glTranslatef(30,5.9,326); glScale(10,8,0.1); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,win1,win1,win1,win1,win1,win1); glPopMatrix; //***************** cheragh1 glPushMatrix; glTranslatef(100,-2,326); glScale(5,18,0); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,cheragh1,win1,win1,win1,win1,win1); glPopMatrix; //***************** cheragh2 glPushMatrix; glTranslatef(150,-2,326); glScale(5,18,0); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,cheragh2,win1,win1,win1,win1,win1); glPopMatrix; //drakht i:=-750; repeat glPushMatrix; glTranslatef(-405,-120,i); glScale(10,10,10); derakht ; glPopMatrix; i:=i-30; until (i<-1200) ; //drakht aghab { i:=300; repeat glPushMatrix; glTranslatef(30,0,-300); glScale(10,10,10); derakht ; glPopMatrix; i:=i-30; until (i<-500) ; } ///////////// derakht jadeh i:=-200; repeat glPushMatrix; glTranslatef(200,-120,i); glScale(10,10,10); derakht ; glPopMatrix; i:=i-70; until (i<-2000) ; i:=300; repeat glPushMatrix; glTranslatef(i,-120,-1300); glScale(10,10,10); derakht ; glPopMatrix; i:=i-70; until (i<-300) ; //***************** tree1 glPushMatrix; glTranslatef(-100,-2,326); glScale(15,18,0); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,tree1,win1,win1,win1,win1,win1); glPopMatrix; //***************** tree1 glPushMatrix; glTranslatef(-140,-2,326); glScale(15,18,0); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,tree1,win1,win1,win1,win1,win1); glPopMatrix; //*-********************** //divar 000 glPushMatrix; glTranslatef(320,0,325); glScale(20,20,1); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar1,divar1,divar1,divar1,divar1,divar1); glPopMatrix; //divar 00 glPushMatrix; glTranslatef(280,0,325); glScale(20,20,1); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar1,divar1,divar1,divar1,divar1,divar1); glPopMatrix; //divar 0 glPushMatrix; glTranslatef(240,0,325); glScale(20,20,1); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar1,divar1,divar1,divar1,divar1,divar1); glPopMatrix; //divar 1 glPushMatrix; glTranslatef(200,0,325); glScale(20,20,1); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar1,divar1,divar1,divar1,divar1,divar1); glPopMatrix; //divar 1 glPushMatrix; glTranslatef(160,0,325); glScale(20,20,1); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar1,divar1,divar1,divar1,divar1,divar1); glPopMatrix; //divar 1 glPushMatrix; glTranslatef(120,0,325); glScale(20,20,1); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar1,divar1,divar1,divar1,divar1,divar1); glPopMatrix; //divar 1 glPushMatrix; glTranslatef(80,0,325); glScale(20,20,1); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar1,divar1,divar1,divar1,divar1,divar1); glPopMatrix; //divar 1 glPushMatrix; glTranslatef(40,0,325); glScale(20,20,1); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar1,divar1,divar1,divar1,divar1,divar1); glPopMatrix; //divar 1 glPushMatrix; glTranslatef(0,0,325); glScale(20,20,1); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar1,divar1,divar1,divar1,divar1,divar1); glPopMatrix; glPushMatrix; glTranslatef(0,0,325); glScale(20,20,6); derakht ; glPopMatrix; //tablo balaye dar glPushMatrix; glTranslatef(-50,15,325.5); glScale(30,6,1); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,10.01,10.01,10.01,10.01,10.01,10.01,tx_qqqq,tx_dar,tx_dar,tx_dar,tx_dar,tx_miz1); glPopMatrix; mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,tx_miz1,tx_miz1,tx_miz1,tx_miz1,tx_miz1,tx_miz1); glPopMatrix; //************************ divare samte chap 00 glPushMatrix; glTranslatef(-110,-0,325); glScale(30,20,1); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar1,divar1,divar1,divar1,divar1,divar1); glPopMatrix; //****************divare samte chap 0 glPushMatrix; glTranslatef(-150,-0,325); glScale(20,20,1); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar1,divar1,divar1,divar1,divar1,divar1); glPopMatrix; //divare samte chape 1 glPushMatrix; glTranslatef(-180,-0,325); glScale(20,20,1); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar1,divar1,divar1,divar1,divar1,divar1); glPopMatrix; //divare samte chape 2 glPushMatrix; glTranslatef(-215,-0,325); glScale(20,20,1); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar1,divar1,divar1,divar1,divar1,divar1); glPopMatrix; //divare samte chape 3 glPushMatrix; glTranslatef(-255,-0,325); glScale(20,20,1); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar1,divar1,divar1,divar1,divar1,divar1); glPopMatrix; //divare samte chape 4 glPushMatrix; glTranslatef(-295,-0,325); glScale(20,20,1); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar1,divar1,divar1,divar1,divar1,divar1); glPopMatrix; //&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&divare samte chape ?&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& //divare samte chape 1 glPushMatrix; glTranslatef(-315,-0,305); glScale(1,20,20); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar1,divar1,divar1,divar1,divar1,divar1); glPopMatrix; //divare samte chape 2 glPushMatrix; glTranslatef(-315,-0,265); glScale(1,20,20); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar1,divar1,divar1,divar1,divar1,divar1); glPopMatrix; //divare samte chape 3 glPushMatrix; glTranslatef(-315,-0,245); glScale(1,20,20); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar1,divar1,divar1,divar1,divar1,divar1); glPopMatrix; //divare samte chape 4 glPushMatrix; glTranslatef(-315,-0,225); glScale(1,20,20); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar1,divar1,divar1,divar1,divar1,divar1); glPopMatrix; //divare samte chape 5 glPushMatrix; glTranslatef(-315,-0,185); glScale(1,20,20); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar1,divar1,divar1,divar1,divar1,divar1); glPopMatrix; //divare samte chape 6 glPushMatrix; glTranslatef(-315,-0,145); glScale(1,20,20); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar1,divar1,divar1,divar1,divar1,divar1); glPopMatrix; //divare samte chape 6 glPushMatrix; glTranslatef(-315,-0,105); glScale(1,20,20); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar1,divar1,divar1,divar1,divar1,divar1); glPopMatrix; //divare samte chape 7 glPushMatrix; glTranslatef(-315,-0,65); glScale(1,20,20); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar1,divar1,divar1,divar1,divar1,divar1); glPopMatrix; //divare samte chape 8 glPushMatrix; glTranslatef(-315,-0,25); glScale(1,20,20); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar1,divar1,divar1,divar1,divar1,divar1); glPopMatrix; { //divare samte chape 9 glPushMatrix; glTranslatef(-315,-0,-15); glScale(1,20,20); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar1,divar1,divar1,divar1,divar1,divar1); glPopMatrix; //divare samte chape 10 glPushMatrix; glTranslatef(-315,-0,-55); glScale(1,20,20); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar1,divar1,divar1,divar1,divar1,divar1); glPopMatrix; //divare samte chape 11 glPushMatrix; glTranslatef(-315,-0,-95); glScale(1,20,20); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar1,divar1,divar1,divar1,divar1,divar1); glPopMatrix; //divare samte chape 12 glPushMatrix; glTranslatef(-315,-0,-135); glScale(1,20,20); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar1,divar1,divar1,divar1,divar1,divar1); glPopMatrix; //divare samte chape 13 glPushMatrix; glTranslatef(-315,-0,-175); glScale(1,20,20); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar1,divar1,divar1,divar1,divar1,divar1); glPopMatrix; //divare samte chape 14 glPushMatrix; glTranslatef(-315,-0,-215); glScale(1,20,20); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar1,divar1,divar1,divar1,divar1,divar1); glPopMatrix; //divare samte chape 15 glPushMatrix; glTranslatef(-315,-0,-255); glScale(1,20,20); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar1,divar1,divar1,divar1,divar1,divar1); glPopMatrix; //divare samte chape 16 glPushMatrix; glTranslatef(-315,-0,-300); glScale(1,20,25); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar1,divar1,divar1,divar1,divar1,divar1); glPopMatrix; } //&&&&&&&&&&&&&&&&&divare samte raste &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&77 //divare samte raste 1 glPushMatrix; glTranslatef(340,-0,305); glScale(1,20,20); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar1,divar1,divar1,divar1,divar1,divar1); glPopMatrix; //divare samte raste 2 glPushMatrix; glTranslatef(340,-0,265); glScale(1,20,20); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar1,divar1,divar1,divar1,divar1,divar1); glPopMatrix; //divare samte raste 3 glPushMatrix; glTranslatef(340,-0,245); glScale(1,20,20); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar1,divar1,divar1,divar1,divar1,divar1); glPopMatrix; //divare samte raste 4 glPushMatrix; glTranslatef(340,-0,225); glScale(1,20,20); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar1,divar1,divar1,divar1,divar1,divar1); glPopMatrix; //divare samte raste 5 glPushMatrix; glTranslatef(340,-0,185); glScale(1,20,20); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar1,divar1,divar1,divar1,divar1,divar1); glPopMatrix; //divare samte raste 6 glPushMatrix; glTranslatef(340,-0,145); glScale(1,20,20); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar1,divar1,divar1,divar1,divar1,divar1); glPopMatrix; //divare samte raste 6 glPushMatrix; glTranslatef(340,-0,105); glScale(1,20,20); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar1,divar1,divar1,divar1,divar1,divar1); glPopMatrix; //divare samte raste 7 glPushMatrix; glTranslatef(340,-0,65); glScale(1,20,20); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar1,divar1,divar1,divar1,divar1,divar1); glPopMatrix; //divare samte raste 8 glPushMatrix; glTranslatef(340,-0,25); glScale(1,20,20); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar1,divar1,divar1,divar1,divar1,divar1); glPopMatrix; { //divare samte raste 9 glPushMatrix; glTranslatef(340,-0,-15); glScale(1,20,20); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar1,divar1,divar1,divar1,divar1,divar1); glPopMatrix; //divare samte raste 10 glPushMatrix; glTranslatef(340,-0,-55); glScale(1,20,20); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar1,divar1,divar1,divar1,divar1,divar1); glPopMatrix; //divare samte raste 11 glPushMatrix; glTranslatef(340,-0,-95); glScale(1,20,20); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar1,divar1,divar1,divar1,divar1,divar1); glPopMatrix; //divare samte raste 12 glPushMatrix; glTranslatef(340,-0,-135); glScale(1,20,20); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar1,divar1,divar1,divar1,divar1,divar1); glPopMatrix; //divare samte raste 13 glPushMatrix; glTranslatef(340,-0,-175); glScale(1,20,20); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar1,divar1,divar1,divar1,divar1,divar1); glPopMatrix; //divare samte raste 14 glPushMatrix; glTranslatef(340,-0,-215); glScale(1,20,20); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar1,divar1,divar1,divar1,divar1,divar1); glPopMatrix; //divare samte raste 15 glPushMatrix; glTranslatef(340,-0,-255); glScale(1,20,20); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar1,divar1,divar1,divar1,divar1,divar1); glPopMatrix; //divare samte raste 16 glPushMatrix; glTranslatef(340,-0,-300); glScale(1,20,25); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar1,divar1,divar1,divar1,divar1,divar1); glPopMatrix; //divare samte raste 17 glPushMatrix; glTranslatef(340,-0,-350); glScale(1,20,25); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar1,divar1,divar1,divar1,divar1,divar1); glPopMatrix; } //&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& divare aghabe &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& //divar aghab 000 glPushMatrix; glTranslatef(320,0,25); glScale(20,20,1); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar1,divar1,divar1,divar1,divar1,divar1); glPopMatrix; //divar aghab 00 glPushMatrix; glTranslatef(280,0,25); glScale(20,20,1); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar1,divar1,divar1,divar1,divar1,divar1); glPopMatrix; //divar aghab 0 glPushMatrix; glTranslatef(240,0,25); glScale(20,20,1); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar1,divar1,divar1,divar1,divar1,divar1); glPopMatrix; //divar aghab 1 glPushMatrix; glTranslatef(200,0,25); glScale(20,20,1); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar1,divar1,divar1,divar1,divar1,divar1); glPopMatrix; //divar aghab 1 glPushMatrix; glTranslatef(160,0,25); glScale(20,20,1); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar1,divar1,divar1,divar1,divar1,divar1); glPopMatrix; //divar aghab 1 glPushMatrix; glTranslatef(120,0,25); glScale(20,20,1); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar1,divar1,divar1,divar1,divar1,divar1); glPopMatrix; //divar aghab 1 glPushMatrix; glTranslatef(80,0,25); glScale(20,20,1); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar1,divar1,divar1,divar1,divar1,divar1); glPopMatrix; //divar aghab 1 glPushMatrix; glTranslatef(40,0,25); glScale(20,20,1); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar1,divar1,divar1,divar1,divar1,divar1); glPopMatrix; //divar aghab 1 glPushMatrix; glTranslatef(0,0,25); glScale(20,20,1); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar1,divar1,divar1,divar1,divar1,divar1); glPopMatrix; //divar aghab glPushMatrix; glTranslatef(-40,0,25); glScale(20,20,1); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar1,divar1,divar1,divar1,divar1,divar1); glPopMatrix; //divar aghab glPushMatrix; glTranslatef(-80,0,25); glScale(20,20,1); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar1,divar1,divar1,divar1,divar1,divar1); glPopMatrix; //divar aghab glPushMatrix; glTranslatef(-120,0,25); glScale(20,20,1); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar1,divar1,divar1,divar1,divar1,divar1); glPopMatrix; //divar aghab glPushMatrix; glTranslatef(-160,0,25); glScale(20,20,1); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar1,divar1,divar1,divar1,divar1,divar1); glPopMatrix; //divar aghab glPushMatrix; glTranslatef(-200,0,25); glScale(20,20,1); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar1,divar1,divar1,divar1,divar1,divar1); glPopMatrix; //divar aghab glPushMatrix; glTranslatef(-240,0,25); glScale(20,20,1); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar1,divar1,divar1,divar1,divar1,divar1); glPopMatrix; //if Keys[VK_NUMPAD0] then // begin puzzel(); // end; //**************************** aseman(); // ******************* محيط ميز **************** //ديوار اول سمت راست 1 glPushMatrix; glTranslatef(0,0,280); glScale(20,20,1); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar2,divar2,divar2,divar2,divar2,divar2); glPopMatrix; //ديوار اول سمت راست 2 glPushMatrix; glTranslatef(40,0,280); glScale(20,20,1); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar2,divar2,divar2,divar2,divar2,divar2); glPopMatrix; //ديوار اول سمت راست 3 glPushMatrix; glTranslatef(80,0,280); glScale(20,20,1); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar2,divar2,divar2,divar2,divar2,divar2); glPopMatrix; //ديوار اول سمت راست 4 glPushMatrix; glTranslatef(160,0,280); glScale(20,20,1); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar2,divar2,divar2,divar2,divar2,divar2); glPopMatrix; //divar raset aghab 1 glPushMatrix; glTranslatef(100,0,260); glScale(1,20,20); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar2,divar2,divar2,divar2,divar2,divar2); glPopMatrix; //divar raset aghab 2 glPushMatrix; glTranslatef(140,0,260); glScale(1,20,20); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar2,divar2,divar2,divar2,divar2,divar2); glPopMatrix; //divar raset aghab 2-1 glPushMatrix; glTranslatef(160,0,200); glScale(20,20,1); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar2,divar2,divar2,divar2,divar2,divar2); glPopMatrix; //divar raset aghab 2-2 glPushMatrix; glTranslatef(200,0,200); glScale(20,20,1); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar2,divar2,divar2,divar2,divar2,divar2); glPopMatrix; //divar raset aghab 2-3 glPushMatrix; glTranslatef(240,0,200); glScale(20,20,1); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar2,divar2,divar2,divar2,divar2,divar2); glPopMatrix; //divar raset aghab 2-4 glPushMatrix; glTranslatef(300,0,200); glScale(20,20,1); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar2,divar2,divar2,divar2,divar2,divar2); glPopMatrix; //divar raset aghab 2-4 glPushMatrix; glTranslatef(330,0,200); glScale(10,20,1); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar2,divar2,divar2,divar2,divar2,divar2); glPopMatrix; //divar raset aghab 2-1-1 glPushMatrix; glTranslatef(269,0,241); glScale(20,20,1); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar2,divar2,divar2,divar2,divar2,divar2); glPopMatrix; //divar raset aghab 2-1-2 glPushMatrix; glTranslatef(290,0,260); glScale(1,20,20); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar2,divar2,divar2,divar2,divar2,divar2); glPopMatrix; //divar raset aghab 3 glPushMatrix; glTranslatef(100,0,220); glScale(1,20,20); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar2,divar2,divar2,divar2,divar2,divar2); glPopMatrix; //divar raset aghab 4 glPushMatrix; glTranslatef(140,0,220); glScale(1,20,20); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar2,divar2,divar2,divar2,divar2,divar2); glPopMatrix; //divar raset aghab 4-1 glPushMatrix; glTranslatef(80,0,200); glScale(20,20,1); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar2,divar2,divar2,divar2,divar2,divar2); glPopMatrix; //divar raset 4-1 glPushMatrix; glTranslatef(230,0,280); glScale(20,20,1); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar2,divar2,divar2,divar2,divar2,divar2); glPopMatrix; //divar raset 4-2 glPushMatrix; glTranslatef(250,0,302); glScale(1,20,22); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar2,divar2,divar2,divar2,divar2,divar2); glPopMatrix; //divar raset 4-3 glPushMatrix; glTranslatef(250,0,262); glScale(1,20,20); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar2,divar2,divar2,divar2,divar2,divar2); glPopMatrix; //divar radif 1 chap 1 glPushMatrix; glTranslatef(-110,0,280); glScale(20,20,1); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar2,divar2,divar2,divar2,divar2,divar2); glPopMatrix; //divar radif 1 chap 2 glPushMatrix; glTranslatef(-150,0,280); glScale(20,20,1); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar2,divar2,divar2,divar2,divar2,divar2); glPopMatrix; //divar radif 1 chap 3 glPushMatrix; glTranslatef(-190,0,280); glScale(20,20,1); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar2,divar2,divar2,divar2,divar2,divar2); glPopMatrix; //divar radif 1 chap 4 glPushMatrix; glTranslatef(-250,0,280); glScale(20,20,1); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar2,divar2,divar2,divar2,divar2,divar2); glPopMatrix; //divar vasat 1 glPushMatrix; glTranslatef(-91,0,261); glScale(1,20,20); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar2,divar2,divar2,divar2,divar2,divar2); glPopMatrix; //divar vasat 2 glPushMatrix; glTranslatef(-91,0,221); glScale(1,20,20); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar2,divar2,divar2,divar2,divar2,divar2); glPopMatrix; //divar vasat 1 glPushMatrix; glTranslatef(-21,0,261); glScale(1,20,20); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar2,divar2,divar2,divar2,divar2,divar2); glPopMatrix; //divar vasat 2 glPushMatrix; glTranslatef(-21,0,221); glScale(1,20,20); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar2,divar2,divar2,divar2,divar2,divar2); glPopMatrix; //divar vasat 3 glPushMatrix; glTranslatef(15,0,221); glScale(1,20,20); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar2,divar2,divar2,divar2,divar2,divar2); glPopMatrix; //divar vasat 4 glPushMatrix; glTranslatef(35,0,240); glScale(20,20,1); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar2,divar2,divar2,divar2,divar2,divar2); glPopMatrix; //divar vasat 4 -2 glPushMatrix; glTranslatef(35,0,80); glScale(20,20,1); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar2,divar2,divar2,divar2,divar2,divar2); glPopMatrix; //divar vasat 4 -3 glPushMatrix; glTranslatef(75,0,80); glScale(20,20,1); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar2,divar2,divar2,divar2,divar2,divar2); glPopMatrix; //divar vasat 4 -4 glPushMatrix; glTranslatef(115,0,80); glScale(20,20,1); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar2,divar2,divar2,divar2,divar2,divar2); glPopMatrix; //divar vasat 4 -5 glPushMatrix; glTranslatef(155,0,80); glScale(20,20,1); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar2,divar2,divar2,divar2,divar2,divar2); glPopMatrix; //divar vasat 4 -5 - 1 glPushMatrix; glTranslatef(160,0,120); glScale(20,20,1); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar2,divar2,divar2,divar2,divar2,divar2); glPopMatrix; //divar vasat 4 -5 - 2 glPushMatrix; glTranslatef(200,0,120); glScale(20,20,1); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar2,divar2,divar2,divar2,divar2,divar2); glPopMatrix; //divar vasat 4 -5 - 3 divar puzzel glPushMatrix; glTranslatef(240,0,120); glScale(20,20,1); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar2,divar2,divar2,divar2,divar2,divar2); glPopMatrix; //divar vasat 4 -6 glPushMatrix; glTranslatef(80,0,120); glScale(20,20,1); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar2,divar2,divar2,divar2,divar2,divar2); glPopMatrix; //divar vasat 5 glPushMatrix; glTranslatef(15,0,181); glScale(1,20,20); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar2,divar2,divar2,divar2,divar2,divar2); glPopMatrix; //divar vasat 6 glPushMatrix; glTranslatef(-21,0,181); glScale(1,20,20); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar2,divar2,divar2,divar2,divar2,divar2); glPopMatrix; //divar vasat 7 glPushMatrix; glTranslatef(59,0,181); glScale(1,20,20); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar2,divar2,divar2,divar2,divar2,divar2); glPopMatrix; //divar vasat 8 glPushMatrix; glTranslatef(15,0,141); glScale(1,20,20); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar2,divar2,divar2,divar2,divar2,divar2); glPopMatrix; //divar vasat 9 glPushMatrix; glTranslatef(-21,0,141); glScale(1,20,20); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar2,divar2,divar2,divar2,divar2,divar2); glPopMatrix; //divar vasat 10 glPushMatrix; glTranslatef(59,0,141); glScale(1,20,20); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar2,divar2,divar2,divar2,divar2,divar2); glPopMatrix; //divar vasat 10-2 glPushMatrix; glTranslatef(99,0,141); glScale(1,20,20); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar2,divar2,divar2,divar2,divar2,divar2); glPopMatrix; //divar vasat 10-3 glPushMatrix; glTranslatef(139,0,101); glScale(1,20,20); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar2,divar2,divar2,divar2,divar2,divar2); glPopMatrix; //divar vasat 10-4 glPushMatrix; glTranslatef(140,0,181); glScale(1,20,20); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar2,divar2,divar2,divar2,divar2,divar2); glPopMatrix; //divar vasat 10-5 glPushMatrix; glTranslatef(260,0,181); glScale(1,20,20); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar2,divar2,divar2,divar2,divar2,divar2); glPopMatrix; //divar vasat 10-6 glPushMatrix; glTranslatef(260,0,141); glScale(1,20,20); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar2,divar2,divar2,divar2,divar2,divar2); glPopMatrix; //divar vasat 10-7 glPushMatrix; glTranslatef(215,0,141); glScale(1,20,20); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar2,divar2,divar2,divar2,divar2,divar2); glPopMatrix; //divar vasat 11 glPushMatrix; glTranslatef(15,0,101); glScale(1,20,20); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,divar2,divar2,divar2,divar2,divar2,divar2); glPopMatrix; // ******************* پايان محيط ميز **************** //(((((((((((((((((((((((dokme ha)))))))))))))))))))))))))))))))))))))))))))) if Keys[51] then begin if(did<25)then did:=did+1; end; //***********************balatar************** if Keys[52] then begin if(did<30)then begin did:=did+1; end else if(did<50)then begin did:=did+1; end; end; //***********************tabaghe3************** if Keys[53] then begin if(did<60)then begin did:=did+1; end else if(did<80)then begin did:=did+1; end else if(did<60)then begin did:=did+1; end; end; //***********************tabaghe4************** if Keys[54] then begin if(did<140)then begin did:=did+1; end else if(did<160)then begin did:=did+1; end else if(did<180)then begin did:=did+1; end else if(did<200)then begin did:=did+1; end; end; //***********************************0 if Keys[55] then begin if(did>0)then begin did:=did-1; end ; end; //*********************************1 if Keys[56] then begin if(did>20)then begin did:=did-1; end else if(did>40)then begin did:=did-1; end; end; //**********************************2 if Keys[57] then begin if(did>40)then begin did:=did-1; end else if(did>60)then begin did:=did-1; end ; end; //************************3 if Keys[58] then begin if(did>60)then begin did:=did-1; end; end; //************************************** //*********** asemane sia if Keys[71] then begin bm:=tx_asemansia; end; //************** aseman abi if Keys[72] then begin bm:= tx_aseman; end; //***************paein if Keys[67] then begin x123:=x123-0.4 end; //***************bala if Keys[88] then begin x123:=x123+0.4 end; //***************bala if Keys[90] then begin x124:=x124+0.4 end; //***************bala if Keys[86] then begin x124:=x124-0.4 end; // glPushMatrix; // glTranslatef(2.76,-1,-49); //********************key_pazzel {4} { if Keys[59] then begin s1:=rotate(180); end; } //****************** glPushMatrix; glTranslatef(0,-80.6,200); glScale(320,-40,20); mostatil2(1,20,asvalt); glPopMatrix; SwapBuffers(f_Hdc); //asvalt glPushMatrix; glTranslatef(0,-80.6,200); glScale(320,-40,20); mostatil2(1,20,asvalt); glPopMatrix; SwapBuffers(f_Hdc); end; {------------------------------------------------------------------} { Initialise OpenGL } {------------------------------------------------------------------} procedure glInit(); begin //******************norpardazi*********** glEnable(GL_LIGHTING); glLightfv(GL_LIGHT1, GL_SPECULAR, @LightSpecular); glLightfv(GL_LIGHT1, GL_DIFFUSE, @LightDiffuse); glLightfv(GL_LIGHT1, GL_AMBIENT, @LightAmbient); glEnable(GL_LIGHT1); glEnable(GL_COLOR_MATERIAL); //********************************** glClearColor(0.0, 0.0, 0.0, 0.5); // Black Background glBlendFunc(GL_SRC_ALPHA,GL_ONE); glShadeModel(GL_SMOOTH); // Enables Smooth Color Shading glClearDepth(1.0); // Depth Buffer Setup glEnable(GL_DEPTH_TEST); // Enable Depth Buffer glDepthFunc(GL_LESS); // The Type Of Depth Test To Do glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); //Realy Nice perspective calculations quadratic := gluNewQuadric(); //================================ glEnable(GL_TEXTURE_2D); // Enable Texture Mapping LoadTexture('images5.bmp',tx_5); LoadTexture('divar2.bmp',divar2); LoadTexture('tree1.bmp',tree1); LoadTexture('cheragh1.bmp',cheragh1); LoadTexture('cheragh2.bmp',cheragh2); LoadTexture('cheragh3.bmp',cheragh3); LoadTexture('images5.bmp',tx_wall11); LoadTexture('images5.bmp',tx_ka1); LoadTexture('images5.bmp',tx_kooh); LoadTexture('images5.bmp',tx_ker1); LoadTexture('images5.bmp',tx_wall16); LoadTexture('images5.bmp',tx_wall4); LoadTexture('derakht1.bmp',pic_tanederakht); LoadTexture('kaj.bmp',pic_baltanederakht); LoadTexture('images5.bmp',tx_kaphig); LoadTexture('images5.bmp',tx_chaman); LoadTexture('divsr-sangi.bmp',divar1); LoadTexture('dar1.bmp',dar1); LoadTexture('win1.bmp',win1); LoadTexture('fram1.bmp',fram1); LoadTexture('p1.bmp',p1); LoadTexture('p2.bmp',p2); LoadTexture('p3.bmp',p3); LoadTexture('p4.bmp',p4); LoadTexture('p5.bmp',p5); LoadTexture('p6.bmp',p6); LoadTexture('p7.bmp',p7); LoadTexture('p8.bmp',p8); LoadTexture('p9.bmp',p9); LoadTexture('images5.bmp',tx_saghf3); LoadTexture('images5.bmp',tx_seramik); LoadTexture('images5.bmp',tx_sardar); LoadTexture('images5.bmp',tx_tir); LoadTexture('images5.bmp',tx_metal1); // LoadTexture('arm4.bmp',tx_arm4); LoadTexture('images5.bmp',tx_window); LoadTexture('images5.bmp',tx_kafsoleh); //LoadTexture('ttakht.bmp',tx_ttakht); //LoadTexture('abajor1.bmp',tx_abajor); LoadTexture('images5.bmp',tx_wall); LoadTexture('jabeh.bmp',tx_jabeh); //LoadTexture('payeh.bmp',tx_divareshomine); //LoadTexture('parcham.bmp',tx_parcham); LoadTexture('images5.bmp',tx_borj); LoadTexture('asvalt.bmp',asvalt); LoadTexture('images5.bmp',tx_2 ); LoadTexture('images5.bmp',tx_nim1z ); LoadTexture('images5.bmp',tx_kf ); LoadTexture('images5.bmp',tx_nama3 ); LoadTexture('images5.bmp',tx_dar ); loadTexture('images5.bmp',tx_ghhveikam); loadTexture('zamin.bmp',tx_zamin2); // loadTexture('baladar.bmp',tx_panjerh5); //LoadTexture('asem3.bmp',tx_asemansia); LoadTexture('sky1.bmp',tx_aseman); LoadTexture('images5.bmp',tx_kf); LoadTexture('images5.bmp',tx_ap3); LoadTexture('images5.bmp',tx_pm1); LoadTexture('images5.bmp',tx_pm2); LoadTexture('images5.bmp',tx_pm3); //LoadTexture('shishei.bmp',tx_shishei); LoadTexture('choob.bmp',choob); LoadTexture('images5.bmp',tx5); LoadTexture('images5.bmp',tx_nama); LoadTexture('images5.bmp',tx_kafipgh); LoadTexture('images5.bmp',tx_nama2); LoadTexture('images5.bmp',tx_tvp); LoadTexture('images5.bmp',tx_tv1); LoadTexture('images5.bmp',tx_d3); LoadTexture('images5.bmp',tx3); LoadTexture('images5.bmp',tx_nim1); LoadTexture('images5.bmp',tx_d4); LoadTexture('images5.bmp',tx_kmpars); LoadTexture('images5.bmp',tx_jazire); LoadTexture('images5.bmp',tx_rshir); LoadTexture('images5.bmp',tx_kafip1); LoadTexture('images5.bmp',tx_kmpars2); LoadTexture('images5.bmp',tx_12); LoadTexture('images5.bmp',tx_pm4); LoadTexture('images5.bmp',tx_kbala); //LoadTexture('miz.bmp',tx_miz); //LoadTexture('miz1.bmp',tx_miz1); LoadTexture('images5.bmp',tx_dar3); //LoadTexture('dar4.bmp',tx_dar4); LoadTexture('images5.bmp',tx_das); LoadTexture('images5.bmp',tx_d9); //LoadTexture('mmm.bmp',tx_mmm); // LoadTexture('kmpars.bmp',tx_gach); //LoadTexture('pele.bmp',tx_pele); //LoadTexture('nnn.bmp',tx_nnn); //LoadTexture('zz.bmp',tx_zz); LoadTexture('images5.bmp',tx_aaaa); //LoadTexture('dara.bmp',tx_dara); //LoadTexture('3.bmp',tx_3); //LoadTexture('nkdar.bmp',tx_nkdar); //LoadTexture('nkdar1.bmp',tx_nkdar1); LoadTexture('zamin.bmp',tx_asvalt1); LoadTexture('qqqq.bmp',tx_qqqq); LoadTexture('images5.bmp',tx_badaneh); Heading :=360; X :=-90; Z :=50; //***adam { Player.LoadPlayer('model\sarge\', 'default'); LoadRailgun;} end; {------------------------------------------------------------------} { Handle window resize } {------------------------------------------------------------------} procedure glResizeWnd(Width, Height : Integer); begin if (Height = 0) then // prevent divide by zero exception Height := 1; glViewport(0, 0, Width, Height); // Set the viewport for the OpenGL window glMatrixMode(GL_PROJECTION); // Change Matrix Mode to Projection glLoadIdentity(); // Reset View gluPerspective(50.0, Width/Height, 0.1, 1000); // Do the perspective calculations. Last value = max clipping depth glMatrixMode(GL_MODELVIEW); // Return to the modelview matrix glLoadIdentity(); // Reset View end; {------------------------------------------------------------------} { Processes all the keystrokes } {------------------------------------------------------------------} procedure ProcessKeys; begin if Keys[VK_Up] then begin X := X - sin(Heading*pi/180)*FrameTime/60; // FrameTime/600=movement speed Z := Z + cos(Heading*pi/180)*FrameTime/60; // FrameTime/600=movement speed HeadMovAngle :=HeadMovAngle + 5; HeadMovement :=0.025*sin(HeadMovAngle*pi/180); kz:=kz+1; az:=az-0.75; //az:=HeadMovement*(-1); end; // حرکت پازل if Keys[VK_NUMPAD8] then begin if (py6<=-10) then exit else begin py6:=py6-10; glPushMatrix; glTranslatef(px6,py6,pz); glScale(5,5,0.2); mokaab1(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,p6,tx_dar,tx_dar,tx_dar,tx_dar,tx_dar); glPopMatrix; end; end; if Keys[VK_DOWN] then begin X := X + sin(Heading*pi/180)*FrameTime/60; Z := Z - cos(Heading*pi/180)*FrameTime/60; HeadMovAngle :=HeadMovAngle - 5; HeadMovement :=0.025*sin(HeadMovAngle*pi/180); kz:=kz-1; az:=az+0.75; //az:=HeadMovement*(-1); end; if Keys[VK_LEFT] then begin X := X + sin((Heading+90)*pi/180)*FrameTime/90; // FrameTime/900=movement speed Z := Z - cos((Heading+90)*pi/180)*FrameTime/90; // straffing = 50% slower kx:=kx+1; ax:=ax-0.75; end; if Keys[VK_RIGHT] then begin X := X - sin((Heading+90)*pi/180)*FrameTime/90; Z := Z + cos((Heading+90)*pi/180)*FrameTime/90; kx:=kx-1; ax:=ax+0.75; end; end; {------------------------------------------------------------------} { Determines the application’s response to the messages received } {------------------------------------------------------------------} function WndProc(hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall; begin case (Msg) of WM_CREATE: begin // Insert stuff you want executed when the program starts end; WM_CLOSE: begin PostQuitMessage(0); Result := 0 end; WM_KEYDOWN: // Set the pressed key (wparam) to equal true so we can check if its pressed begin keys[wParam] := True; Result := 0; end; WM_KEYUP: // Set the released key (wparam) to equal false so we can check if its pressed begin keys[wParam] := False; Result := 0; end; WM_SIZE: // Resize the window with the new width and height begin glResizeWnd(LOWORD(lParam),HIWORD(lParam)); Result := 0; end; WM_TIMER : // Add code here for all timers to be used. begin if wParam = FPS_TIMER then begin FPSCount :=Round(FPSCount * 1000/FPS_INTERVAL); // calculate to get per Second incase intercal is less or greater than 1 second SetWindowText(h_Wnd, PChar(WND_TITLE + ' [' + intToStr(FPSCount) + ' FPS]')); FPSCount := 0; Result := 0; end; end; else Result := DefWindowProc(hWnd, Msg, wParam, lParam); // Default result if nothing happens end; end; {---------------------------------------------------------------------} { Properly destroys the window created at startup (no memory leaks) } {---------------------------------------------------------------------} procedure glKillWnd(Fullscreen : Boolean); begin if Fullscreen then // Change back to non fullscreen begin ChangeDisplaySettings(devmode(nil^), 0); ShowCursor(True); end; // Makes current rendering context not current, and releases the device // context that is used by the rendering context. if (not wglMakeCurrent(h_DC, 0)) then MessageBox(0, 'Release of DC and RC failed!', 'Error', MB_OK or MB_ICONERROR); // Attempts to delete the rendering context if (not wglDeleteContext(h_RC)) then begin MessageBox(0, 'Release of rendering context failed!', 'Error', MB_OK or MB_ICONERROR); h_RC := 0; end; // Attemps to release the device context if ((h_DC > 0) and (ReleaseDC(h_Wnd, h_DC) = 0)) then begin MessageBox(0, 'Release of device context failed!', 'Error', MB_OK or MB_ICONERROR); h_DC := 0; end; // Attempts to destroy the window if ((h_Wnd <> 0) and (not DestroyWindow(h_Wnd))) then begin MessageBox(0, 'Unable to destroy window!', 'Error', MB_OK or MB_ICONERROR); h_Wnd := 0; end; // Attempts to unregister the window class if (not UnRegisterClass('OpenGL', hInstance)) then begin MessageBox(0, 'Unable to unregister window class!', 'Error', MB_OK or MB_ICONERROR); hInstance := 0; end; end; {--------------------------------------------------------------------} { Creates the window and attaches a OpenGL rendering context to it } {--------------------------------------------------------------------} function glCreateWnd(Width, Height : Integer; Fullscreen : Boolean; PixelDepth : Integer) : Boolean; var wndClass : TWndClass; // Window class dwStyle : DWORD; // Window styles dwExStyle : DWORD; // Extended window styles dmScreenSettings : DEVMODE; // Screen settings (fullscreen, etc...) PixelFormat : GLuint; // Settings for the OpenGL rendering h_Instance : HINST; // Current instance pfd : TPIXELFORMATDESCRIPTOR; // Settings for the OpenGL window begin h_Instance := GetModuleHandle(nil); //Grab An Instance For Our Window ZeroMemory(@wndClass, SizeOf(wndClass)); // Clear the window class structure with wndClass do // Set up the window class begin style := CS_HREDRAW or // Redraws entire window if length changes CS_VREDRAW or // Redraws entire window if height changes CS_OWNDC; // Unique device context for the window lpfnWndProc := @WndProc; // Set the window procedure to our func WndProc hInstance := h_Instance; hCursor := LoadCursor(0, IDC_ARROW); lpszClassName := 'OpenGL'; end; if (RegisterClass(wndClass) = 0) then // Attemp to register the window class begin MessageBox(0, 'Failed to register the window class!', 'Error', MB_OK or MB_ICONERROR); Result := False; Exit end; // Change to fullscreen if so desired if Fullscreen then begin ZeroMemory(@dmScreenSettings, SizeOf(dmScreenSettings)); with dmScreenSettings do begin // Set parameters for the screen setting dmSize := SizeOf(dmScreenSettings); dmPelsWidth := Width; // Window width dmPelsHeight := Height; // Window height dmBitsPerPel := PixelDepth; // Window color depth dmFields := DM_PELSWIDTH or DM_PELSHEIGHT or DM_BITSPERPEL; end; // Try to change screen mode to fullscreen if (ChangeDisplaySettings(dmScreenSettings, CDS_FULLSCREEN) = DISP_CHANGE_FAILED) then begin MessageBox(0, 'Unable to switch to fullscreen!', 'Error', MB_OK or MB_ICONERROR); Fullscreen := False; end; end; // If we are still in fullscreen then if (Fullscreen) then begin dwStyle := WS_POPUP or // Creates a popup window WS_CLIPCHILDREN // Doesn't draw within child windows or WS_CLIPSIBLINGS; // Doesn't draw within sibling windows dwExStyle := WS_EX_APPWINDOW; // Top level window ShowCursor(False); // Turn of the cursor (gets in the way) end else begin dwStyle := WS_OVERLAPPEDWINDOW or // Creates an overlapping window WS_CLIPCHILDREN or // Doesn't draw within child windows WS_CLIPSIBLINGS; // Doesn't draw within sibling windows dwExStyle := WS_EX_APPWINDOW or // Top level window WS_EX_WINDOWEDGE; // Border with a raised edge ShowCursor(False); // Turn of the cursor (gets in the way) end; // Attempt to create the actual window h_Wnd := CreateWindowEx(dwExStyle, // Extended window styles 'OpenGL', // Class name WND_TITLE, // Window title (caption) dwStyle, // Window styles 0, 0, // Window position Width, Height, // Size of window 0, // No parent window 0, // No menu h_Instance, // Instance nil); // Pass nothing to WM_CREATE if h_Wnd = 0 then begin glKillWnd(Fullscreen); // Undo all the settings we've changed MessageBox(0, 'Unable to create window!', 'Error', MB_OK or MB_ICONERROR); Result := False; Exit; end; // Try to get a device context h_DC := GetDC(h_Wnd); if (h_DC = 0) then begin glKillWnd(Fullscreen); MessageBox(0, 'Unable to get a device context!', 'Error', MB_OK or MB_ICONERROR); Result := False; Exit; end; // Settings for the OpenGL window with pfd do begin nSize := SizeOf(TPIXELFORMATDESCRIPTOR); // Size Of This Pixel Format Descriptor nVersion := 1; // The version of this data structure dwFlags := PFD_DRAW_TO_WINDOW // Buffer supports drawing to window or PFD_SUPPORT_OPENGL // Buffer supports OpenGL drawing or PFD_DOUBLEBUFFER; // Supports double buffering iPixelType := PFD_TYPE_RGBA; // RGBA color format cColorBits := PixelDepth; // OpenGL color depth cRedBits := 0; // Number of red bitplanes cRedShift := 0; // Shift count for red bitplanes cGreenBits := 0; // Number of green bitplanes cGreenShift := 0; // Shift count for green bitplanes cBlueBits := 0; // Number of blue bitplanes cBlueShift := 0; // Shift count for blue bitplanes cAlphaBits := 0; // Not supported cAlphaShift := 0; // Not supported cAccumBits := 0; // No accumulation buffer cAccumRedBits := 0; // Number of red bits in a-buffer cAccumGreenBits := 0; // Number of green bits in a-buffer cAccumBlueBits := 0; // Number of blue bits in a-buffer cAccumAlphaBits := 0; // Number of alpha bits in a-buffer cDepthBits := 16; // Specifies the depth of the depth buffer cStencilBits := 0; // Turn off stencil buffer cAuxBuffers := 0; // Not supported iLayerType := PFD_MAIN_PLANE; // Ignored bReserved := 0; // Number of overlay and underlay planes dwLayerMask := 0; // Ignored dwVisibleMask := 0; // Transparent color of underlay plane dwDamageMask := 0; // Ignored end; // Attempts to find the pixel format supported by a device context that is the best match to a given pixel format specification. PixelFormat := ChoosePixelFormat(h_DC, @pfd); if (PixelFormat = 0) then begin glKillWnd(Fullscreen); MessageBox(0, 'Unable to find a suitable pixel format', 'Error', MB_OK or MB_ICONERROR); Result := False; Exit; end; // Sets the specified device context's pixel format to the format specified by the PixelFormat. if (not SetPixelFormat(h_DC, PixelFormat, @pfd)) then begin glKillWnd(Fullscreen); MessageBox(0, 'Unable to set the pixel format', 'Error', MB_OK or MB_ICONERROR); Result := False; Exit; end; // Create a OpenGL rendering context h_RC := wglCreateContext(h_DC); if (h_RC = 0) then begin glKillWnd(Fullscreen); MessageBox(0, 'Unable to create an OpenGL rendering context', 'Error', MB_OK or MB_ICONERROR); Result := False; Exit; end; // Makes the specified OpenGL rendering context the calling thread's current rendering context if (not wglMakeCurrent(h_DC, h_RC)) then begin glKillWnd(Fullscreen); MessageBox(0, 'Unable to activate OpenGL rendering context', 'Error', MB_OK or MB_ICONERROR); Result := False; Exit; end; // Initializes the timer used to calculate the FPS SetTimer(h_Wnd, FPS_TIMER, FPS_INTERVAL, nil); // Settings to ensure that the window is the topmost window ShowWindow(h_Wnd, SW_SHOW); SetForegroundWindow(h_Wnd); SetFocus(h_Wnd); // Ensure the OpenGL window is resized properly glResizeWnd(Width, Height); glInit(); Result := True; end; {--------------------------------------------------------------------} { Main message loop for the application } {--------------------------------------------------------------------} function WinMain(hInstance : HINST; hPrevInstance : HINST; lpCmdLine : PChar; nCmdShow : Integer) : Integer; stdcall; var msg : TMsg; finished : Boolean; DemoStart, LastTime : DWord; begin finished := False; // Perform application initialization: if not glCreateWnd(800, 600, FALSE, 32) then begin Result := 0; Exit; end; DemoStart := GetTickCount(); // Get Time when demo started SetCursorPos(400,300); // Main message loop: while not finished do begin if (PeekMessage(msg, 0, 0, 0, PM_REMOVE)) then // Check if there is a message for this window begin if (msg.message = WM_QUIT) then // If WM_QUIT message received then we are done finished := True else begin // Else translate and dispatch the message to this window TranslateMessage(msg); DispatchMessage(msg); end; end else begin Inc(FPSCount); // Increment FPS Counter FrameTime := GetTickCount() - ElapsedTime - DemoStart; LastTime :=ElapsedTime; ElapsedTime :=GetTickCount() - DemoStart; // Calculate Elapsed Time ElapsedTime :=(LastTime + ElapsedTime) DIV 2; // Average it out for smoother movement // use mouse coordinates to calculate heading and tilt and reset mouse. if GetForegroundWindow = h_Wnd then begin GetCursorPos(mpos); SetCursorPos(400,300); Heading := Heading + (mpos.x - 400)/100 * MouseSpeed; Tilt := Tilt - (300 - mpos.y)/100 * MouseSpeed; if Tilt > 60 then Tilt :=60; if Tilt < -60 then Tilt :=-60; end; glDraw(); // Draw the scene SwapBuffers(h_DC); // Display the scene if (keys[VK_ESCAPE]) then // If user pressed ESC then set finised TRUE finished := True else ProcessKeys; // Check for any other key Pressed end; end; glKillWnd(FALSE); Result := msg.wParam; end; begin px1:=229; px4:=229; px7:=229; px2:=239; px5:=239; px8:=239; px3:=249; px6:=249; px9:=249; py1:=10; py2:=10; py3:=10; py4:=0; py5:=0; py6:=0; py7:=-10;py8:=-10;py9:=-10; pz:=122; ax:=-20; ay:=-10; az:=380; for ip:=1 to 3 do for jp:=1 to 3 do puz[ip,jp]:= 1; puz[ip,jp]:= 0; WinMain( hInstance, hPrevInst, CmdLine, CmdShow ); end.