سورس حرکت کشتی از زیر پل با OpenGL به زبان C++
در این بخش سورس حرکت کشتی از زیر پل با OpenGL را برای شما آماده کرده ایم که با استفاده از زبان برنامه نویسی C++ نوشته شده است. با مشاهده سورس کد این پروژه می توانید نحوه ساخت بازی های رایانه ای و چگونگی حرکت دادن اشیاء مختلف در محیط را یاد بگیرید. در ادامه می توانید توضیحات و تصاویر مربوط به این برنامه را مشاهده کنید.
توضیحات پروژه
هنگامی این پروژه اجرا شود، یک محیط گرافیکی شامل پل، ماشین، و یک کشتی رسم می شود. سپس کاربر می تواند با استفاده از گزینه Start Animation برنامه را اجرا کند و با گزینه Stop Animation نیز آن را متوقف نماید. با شروع انیمیشن کشتی و ماشین شروع به حرکت می کنند و زمانی که کشتی به پل برسد ماشین متوقف شده و پل بالا می آید تا کشتی از زیر آن رد شود. بعد از رد شدن کشتی، پل به حالت اول باز می گردد و ماشین از روی آن رد می شود.
در این پروژه OpenGL از توابع زیر استفاده شده است:
- تابع boat: این تابع برای رسم قایق یا کشتی که در دریا حرکت می کند، استفاده می شود.
- تابع keyboard: این تابع به شما اجازه می دهد تا با کلید های کیبورد رنگ کشتی را تغییر دهید.
- تابع bridge: این تابع پل و اشکال موجود بر روی آن را رسم می کند.
- تابع animate: این تابع برای به حرکت در آوردن صفحه استفاده می شود.
- تابع poles: این تابع بازوی که پل را نگه می دارد را رسم می کند.
- تابع car: این تابع برای رسم ماشینی که بر روی پل حرکت می کند،
- تابع myinit: این تابع به منظور آماده سازی OpenGL مقدار دهی اولیه استفاده می شود.
- تابع sea: این تابع برای رسم دریا استفاده می شود.
قسمت های از سورس پروژه:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 | #include <stdio.h> #include <gl/glut.h> ///Declaration of global variables //////// float y = 0, ang = 0, i = 0, k = 0, n = 0; float a = 900, b = 880, c = 900, d = 900, p, q = 0, s; float g = 0; // car translate indicator float m = .80, j = .50, o = .15; ///// sea function to display river //////// void sea() { glColor3f(1.0, 0.0, 0.0); glBegin(GL_POLYGON); glColor3f(0.0, 0.50, 1.0); glVertex2f(0.0, 0.0); glVertex2f(2000.0, 0.0); glVertex2f(2000.0, 1600.0); glVertex2f(0.0, 1600.0); glEnd(); glPushMatrix(); glTranslatef(0, q, 0); glBegin(GL_LINES); glColor3f(1.0, 1.0, 1.0); for (p = 0; p<20000; p = p + 100) for (s = 0; s<20000; s = s + 100) glVertex2f(100.0 + s, 100.0 + p); glVertex2f(200.0 + s, 100.0 + p); glEnd(); glPopMatrix(); } ////// display function ///// void display(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); sea(); bridge(); boat(); car(); poles(); glFlush(); glutSwapBuffers(); } /////// functio to animate bridge stripes /// void animate() { q = q - .5; y = y + 0.2; i += 0.2; if ((i >= 135) && (i <= 439)) { k = k + 0.1; n = n + 0.1; } if (i >= 1200 && !(k <= 0 && n <= 0)) { k = k - 0.1; n = n - 0.1; } if (k <= 0) g -= 0.5; glutPostRedisplay(); } void myinit() { glClearColor(1.0, 1.0, 1.0, 1.0); glColor3f(1.0, 1.0, 1.0); glPointSize(1.0); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D(0.0, 2000.0, 0.0, 1600.0); } /////////////////////////////////// Menu function /////////////////////// void main_menu(int ch) { switch (ch) { case 1:glutIdleFunc(NULL); break; case 2:glutIdleFunc(animate); break; case 3:exit(0); } } |
نکات
- این پروژه در نرم افزار Visual Studio نسخه ۲۰۱۵ تست شده است و به خوبی کار می کند.
- به منظور اجرای پروژه های OpenGL باید آن را بر روی IDE خود نصب کنید.
- در صورت نا مفهوم بودن بخشی از کد، می توانید در قسمت نظرات مطرح کنید تا برای شما توضیح داده شود.
هیچ نظری ثبت نشده است