سورس پرتاب موشک با OpenGL به زبان C++

rocket launching in opengl using cpp 5178 تصویر

سورس پرتاب موشک با OpenGL به زبان C++

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

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

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

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

  • تابع display1: برای نمایش اشکال مختلف موجود در صفحه استفاده می شود.
  • تابع semicircle: برای رسم دایره های موجود در صفحه استفاده می شود.
  • تابع static_rocket: برای رسم قسمت های مختلف موشک استفاده می شود.
  • تابع stars: برای رسم ستاره های موجود در آسمان استفاده می شود.
  • تابع rocket_in_motion: برای شبیه سازی حرکت موشک استفاده می شود.
  • تابع myinit: برای آماده سازی قسمت های مختلف برنامه استفاده می شود.
  • تابع mars: برای رسم ماه در آسمان استفاده می شود.

rocket launching in opengl using cpp 5178 1 تصویر

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

#include <stdlib.h>
#include <gl\glut.h>
#include <stdio.h>
#include <math.h>
#include <string.h>
const float DEG2RAD = 3.14159 / 180;
void display1();
void stars();
int p;
void stars1();
void static_rocket();
void rocket_to_cam_pos();
void rocket_in_motion();
void mars(float radius);
float i, j, count = 0, count1 = 0, count3 = 0, flag = 0, flag1 = 0, t = 0, f = 0, flag3 = 0;
void semicircle(float radius, float u, float v)
{
	glColor3f(1.0, 1.0, 1.0);
	glBegin(GL_POLYGON);
	for (int i = 135; i <= 315; i++)
	{
		float degInRad = i*DEG2RAD;
		glVertex2f(u + cos(degInRad)*radius, v + (sin(degInRad))*radius);//100,100 specifies centre of the circle
	}
	glEnd();
}
void display1()
{
	for (j = 0; j <= 10000000; j++);
	count1++;
	if (count1 == 250)
		flag = 1;
	if (flag == 0)
		static_rocket();
	else if ((count1 == 151) | (count1 == 152))
		rocket_to_cam_pos();
	else
		rocket_in_motion();
}
void stars()
{
	glColor3f(1.0, 1.0, 1.0);
	glPointSize(0.37);
	glBegin(GL_POINTS);
	glVertex2i(10, 20);
	glVertex2i(20, 100);
	glVertex2i(30, 10);
	glVertex2i(15, 150);
	glVertex2i(17, 80);
	glVertex2i(200, 200);
	glVertex2i(55, 33);
	glVertex2i(400, 300);
	glVertex2i(330, 110);
	glVertex2i(125, 63);
	glVertex2i(63, 125);
	glVertex2i(20, 10);
	glVertex2i(110, 330);
	glVertex2i(440, 430);
	glVertex2i(32, 65);
	glVertex2i(110, 440);
	glVertex2i(210, 230);
	glVertex2i(390, 490);
	glVertex2i(12, 90);
	glVertex2i(400, 322);
	glVertex2i(420, 366);
	glVertex2i(455, 400);
	glVertex2i(20, 20);
	glVertex2i(111, 120);
	glVertex2i(401, 200);
	glVertex2i(230, 30);
	glVertex2i(220, 20);
	glVertex2i(122, 378);
	glVertex2i(133, 340);
	glVertex2i(345, 420);
	glVertex2i(130, 360);
	glVertex2i(333, 120);
	glVertex2i(250, 22);
	glVertex2i(242, 11);
	glVertex2i(280, 332);
	glVertex2i(233, 40);
	glVertex2i(210, 418);
	glVertex2i(256, 12);
	glVertex2i(288, 232);
	glVertex2i(247, 36);
	glVertex2i(229, 342);
	glVertex2i(257, 47);
	glVertex2i(290, 63);
	glVertex2i(232, 72);
	glVertex2i(243, 143);
	glVertex2i(100, 200);
	glVertex2i(90, 250);
	glVertex2i(80, 225);
	glVertex2i(50, 333);
	glVertex2i(60, 350);
	glVertex2i(243, 143);
	glVertex2i(243, 143);
	glEnd();
}
void mars(float radius)
{
	glBegin(GL_POLYGON);
	for (int i = 0; i <= 359; i++)
	{
		float degInRad = i*DEG2RAD;
		glVertex2f(300 + f + cos(degInRad)*radius, 500 - t + (sin(degInRad))
			*radius);//100,100 specifies centre of the circle
	}
	glEnd();
	t = t + 0.1;
	f = f + 0.1;
}
void myinit()
{
	//int i;
	glClearColor(0.196078, 0.6, 0.8, 1.0);
	glPointSize(1.0);
	gluOrtho2D(0.0, 499.0, 0.0, 499.0);
}
int main(int argc, char*argv[])
{
	glutInit(&argc, argv);
	glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
	glutInitWindowSize(500, 500);
	glutCreateWindow("SourceSara.Com | Rocket Launching in OpenGL");
	glutIdleFunc(display1);
	glutDisplayFunc(display1);
	myinit();
	glutMainLoop();
	return 0;
}

نکات

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

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

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

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

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

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