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

۱۳۹۷-۱۰-۰۱
سورس حرکت ماشین در پارکینگ با OpenGL به زبان C++ در این بخش سورس حرکت ماشین در پارکینگ با OpenGL را برای شما آماده کرده ایم که با استفاده از زبان برنامه نویسی C++ نوشته شده است. سورس کد این پروژه برای یاد گیری چگونگی ساخت بازی های ساده با OpenGL مناسب است و می توانید با مشاهده آن مواردی همچون ...

car parking in opengl using cpp 5124 تصویر

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

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

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

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

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

  • تابع processNormalKeys: برای رسم مدیریت کلید های فشرده شده، استفاده می شود.
  • تابع drawcarr: برای رسم اجزای مختلف همه ماشین های موجود در صفحه استفاده می شود.
  • تابع processMenu1: برای مدیریت گزینه انتخاب شده توسط کاربر استفاده می شود.
  • تابع movecar: برای حرکت دادن ماشین ها در جهت های مختلف استفاده می شود.
  • تابع menu: برای تنظیم منوی کلیک راست استفاده می شود.

car parking in opengl using cpp 5124 1 تصویر

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

#include <stdlib.h>
#include <gl\glut.h>
#include <math.h>
static float angle = 0.0, ratio;
static float x = 0.0f, y = 1.75f, z = 5.0f;
static float lx = 0.10f, ly = 0.10f, lz = -1.0f;
static GLint carr_display_list, house_display_list;
float theta = 0.01, fxincr = 0.1, fzincr = 0, temp, theta1, fx = -10, fz = 80;
int xxxx = 0, yyyy = 0, kk = 0, housevisible = 0, movecarvar = 0;
void changeSize(int w, int h)
{
	// Prevent a divide by zero, when window is too short
	// (you cant make a window of zero width).
	if (h == 0)
		h = 1;
	ratio = 1.0f * w / h;
	// Reset the coordinate system before modifying
	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();
	// Set the viewport to be the entire window
	glViewport(0, 0, w, h);
	// Set the clipping volume
	gluPerspective(45, ratio, 1, 1000);
	glMatrixMode(GL_MODELVIEW);
	glLoadIdentity();
	gluLookAt(x, y, z,
		x + lx, y + ly, z + lz,
		0.0f, 1.0f, 0.0f);
}
GLuint createDL() {
	GLuint carrDL;
	// Create the id for the list
	carrDL = glGenLists(1);
	// start list
	glNewList(carrDL, GL_COMPILE);
	// call the function that contains the rendering commands
	drawcarr();
	// endList
	glEndList();
	return(carrDL);
}
void initScene()
{
	glEnable(GL_DEPTH_TEST);
	carr_display_list = createDL();
	house_display_list = createDL2();//***********
}
void orientMe(float ang)
{
	lx = sin(ang);
	lz = -cos(ang);
	glLoadIdentity();
	gluLookAt(x, y, z,
		x + lx, y + ly, z + lz,
		0.0f, 1.0f, 0.0f);
}
void moveMeFlat(int i)
{
	if (xxxx == 1)
		y = y + i*(lz)*0.1;//*********
	if (yyyy == 1)
	{
		x = x + i*(lz)*.1;
	}
	else
	{
		z = z + i*(lz)*0.5;
		x = x + i*(lx)*0.5;
	}
	glLoadIdentity();
	gluLookAt(x, y, z,
		x + lx, y + ly, z + lz,
		0.0f, 1.0f, 0.0f);
}
void processNormalKeys(unsigned char key, int x, int y)
{
	glLoadIdentity();
	if (key == 'q')
		exit(0);
	if (key == 't')
		gluLookAt(1, 190, 50, 0, 0, -10, 0.0, 1.0, .0);
	if (key == 'a') moveMeFlat(4); xxxx = 1, yyyy = 0;
	if (key == 's') moveMeFlat(-4); xxxx = 1, yyyy = 0;
	if (key == 'w') moveMeFlat(4); yyyy = 1; xxxx = 0;
	if (key == 'd') moveMeFlat(-4); yyyy = 1; xxxx = 0;
}

نکات

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

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