سورس شبیه سازی برخورد هواپیما با ساختمان در OpenGL به زبان C++

plane crash in opengl using cpp 5180 تصویر

سورس شبیه سازی برخورد هواپیما با ساختمان در OpenGL به زبان C++

در این بخش سورس شبیه سازی برخورد هواپیما با یک ساختمان چند طبقه را در کتابخانه OpenGL برای شما آماده کرده ایم که با استفاده از زبان برنامه نویسی C++ نوشته شده است. سورس کد این پروژه برای یاد گیری چگونگی ساخت بازی های ساده مناسب است و می توانید با مشاهده آن مواردی همچون رسم اشکال مختلف، حرکت دادن شیء ها را بیاموزید. در ادامه می توانید توضیحات و تصاویر مربوط به این برنامه را مشاهده کنید.

توضیحات پروژه

در این پروژه OpenGL، چگونگی برخورد هواپیما با یک ساختمان شبیه سازی شده است. بعد از اجرا شدن برنامه، یک هواپیما از فرودگاه بلند می شود و به سمت راست حرکت می کند. سپس با یک ساختمان چند طبقه ای که جلوی آن قرار دارد برخورد می کند و این موضوع باعث یک انفجار می شود.

در زیر برخی از توابع استفاده شده در این پروژه را مشاهده می کنید:

  • تابع update: برای حرکت دادن هواپیما استفاده می شود.
  • تابع blast: برای شبیه سازی انفجار هواپیما در هنگام برخورد با ساختمان استفاده می شود.
  • تابع build_outline: برای رسم محدوده ساختمان استفاده می شود.
  • تابع display: برای نمایش شیء های مختلف استفاده می شود.
  • تابع myinit: برای آماده سازی برنامه استفاده می شود.
  • تابع building: برای ترسیم ساختمان چند طبقه استفاده می شود.
  • تابع road: برای ترسیم باند فرودگاه موجود در صفحه استفاده می شود.

plane crash in opengl using cpp 5180 تصویر

قسمت های از سورس پروژه:

#include <stdio.h>
#include <gl\glut.h>
GLfloat a = 0, b = 0, c = 0, d = 0, e = 0;
void building();
void building1();
void outline();
void blast();
void road();
void display2();
void display3();
void build_outline();
void update(int value)
{
	a += 20.0;	//Plane position takeoff on x axis
	b -= 10.0;	//Road Strip backward movement
	c += 15;	//take off at certain angle on y axis
	if (b <= -78.0)// moving of run way
	b = 0.0;
	glutPostRedisplay();
	glutTimerFunc(150, update, 0);//delay
}
void display(void)
{
	glClear(GL_COLOR_BUFFER_BIT);
	road();
	glPushMatrix();
	glTranslated(a, c, 0.0);
	glColor3f(1.0, 1.0, 1.0);
	glBegin(GL_POLYGON);//rectangular body
	glVertex2f(0.0, 30.0);
	glVertex2f(0.0, 55.0);
	glVertex2f(135.0, 55.0);
	glVertex2f(135.0, 30.0);
	glEnd();
	glPopMatrix();
	glPushMatrix();
	glTranslated(a, c, 0.0);
	glColor3f(1.0, 1.0, 1.0);
	glBegin(GL_POLYGON);//upper triangle construction plane
	glVertex2f(135.0, 55.0);
	glVertex2f(150.0, 50.0);
	glVertex2f(155.0, 45.0);
	glVertex2f(160.0, 40.0);
	glVertex2f(135.0, 40.0);
	glEnd();
	glPopMatrix();
	glPushMatrix();
	glTranslated(a, c, 0.0);
	glColor3f(0.0, 0.0, 0.0);
	glBegin(GL_LINE_LOOP);//outline of upper triangle plane
	glVertex2f(135.0, 55.0);
	glVertex2f(150.0, 50.0);
	glVertex2f(155.0, 45.0);
	glVertex2f(160.0, 40.0);
	glVertex2f(135.0, 40.0);
	glEnd();
	glPopMatrix();

	glPushMatrix();
	glTranslated(a, c, 0.0);
	glColor3f(1.0, 0.0, 0.0);
	glBegin(GL_POLYGON);//lower triangle
	glVertex2f(135.0, 40.0);
	glVertex2f(160.0, 40.0);
	glVertex2f(160.0, 37.0);
	glVertex2f(145.0, 30.0);
	glVertex2f(135.0, 30.0);
	glEnd();
	glPopMatrix();
	glPushMatrix();
	glTranslated(a, c, 0.0);
	glColor3f(1.0, 0.0, 0.0);
	glBegin(GL_POLYGON);//back wing
	glVertex2f(0.0, 55.0);
	glVertex2f(0.0, 80.0);
	glVertex2f(10.0, 80.0);
	glVertex2f(40.0, 55.0);
	glEnd();
	glPopMatrix();
	glPushMatrix();
	glTranslated(a, c, 0.0);
	glColor3f(1.0, 0.0, 0.0);
	glBegin(GL_POLYGON);//left side wing
	glVertex2f(65.0, 55.0);
	glVertex2f(50.0, 70.0);
	glVertex2f(75.0, 70.0);
	glVertex2f(90.0, 55.0);
	glEnd();
	glPopMatrix();
	glPushMatrix();
	glTranslated(a, c, 0.0);
	glColor3f(1.0, 0.0, 0.0);
	glBegin(GL_POLYGON);//rightside wing
	glVertex2f(70.0, 40.0);
	glVertex2f(100.0, 40.0);
	glVertex2f(80.0, 15.0);
	glVertex2f(50.0, 15.0);
	glEnd();
	glPopMatrix();
	if (c>360)    //timer to jump to next display
	{
		display2();
		d += 20;//plane takeoff on x in 2nd display
	}
	if (a>500.0)//window position during take off
	{
		a = 0.0;
		b = 0.0;
	}
	if (c>750)//timer to jump to 3rd display
	{
		display3();
		e += 20;//plane takeoff on x in 3rd display
		if (e>250)//timer to call blast function
		{
			blast();
			e = 250;
		}
	}
	glFlush();
	glutSwapBuffers();
}
int main(int argc, char* argv[])
{
	glutInit(&argc, argv);
	glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
	glutInitWindowSize(500.0, 500.0);
	glutInitWindowPosition(0, 0);
	glutCreateWindow("SourceSara.Com | Airplane Crash");
	glutDisplayFunc(display);
	myinit();
	glutTimerFunc(100, update, 0);
	glutMainLoop();
	return 0;
}

نکات

  • این پروژه در نرم افزار ویژوال استودیو نسخه ۲۰۱۵ تست شده است و به خوبی کار می کند.
  • به منظور اجرای پروژه های OpenGL باید آن را بر روی IDE خود نصب کنید (آموزش نصب OpenGL).
  • در صورت نا مفهوم بودن بخشی از کد، می توانید در قسمت نظرات مطرح کنید تا برای شما توضیح داده شود.

نوشته سورس شبیه سازی برخورد هواپیما با ساختمان در OpenGL به زبان C++ اولین بار در سورس سرا - آموزش برنامه نویسی. پدیدار شد.

درباره نویسنده: administrator

ممکن است دوست داشته باشید

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *