سورس بازی ماشین مسابقه ای با OpenGL به زبان C++

car race game in opengl using cpp 5118 سورس بازی ماشین مسابقه ای با OpenGL به زبان C++

سورس بازی ماشین مسابقه ای با OpenGL به زبان C++

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

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

در این پروژه یک ماشین مسابقه ای در یک مسیر دایره ای در حال حرکت است و درخت هایی که در کنار مسیر مسابقه قرار دارند، با حرکت ماشین به سمت جلو جا به جا می شوند. همچنین کاربر می تواند با استفاده از کلید های مشخص شده دوربین را در زوایای مختلف حرکت دهد.

  • تابع Tree: برای رسم درختان موجود در کناره مسیر مسابقه استفاده می شود.
  • تابع Wheels: برای رسم چرخ های اتومبیل استفاده می شود.
  • تابع Keys: برای مدیریت کلید های زده شده استفاده می شود.
  • تابع Cylinder: برای رسم قسمت هایی از چرخ اتومبیل استفاده می شود.
  • تابع Track: برای رسم مسیر مسابقه استفاده می شود.
  • تابع Alloy: برای رسم کناره های چرخ اتومبیل استفاده می شود.
  • تابع Car: برای رسم ماشین موجود در صفحه استفاده می شود.
  • تابع Actall: برای رسم پره چرخ های ماشین استفاده می شود.
  • تابع Chassis: برای رسم شاسی اتومبیل استفاده می شود.
  • تابع Driver: برای رسم راننده اتومبیل استفاده می شود.

CarRaceGameInOpenGL 5118 1 سورس بازی ماشین مسابقه ای با OpenGL به زبان C++

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

#include<gl\glut.h>
#include<math.h>
#include<stdio.h>
#define c 3.14/180
#define PI  3.14
#define TWO_PI  2.0 * PI
#define RAD_TO_DEG  180.0 / PI
//Coordinates for the chassis of the car
enum
{	// Constants for different views
	HELICOPTER, FRONT, SIDE, BACK
} viewpoint = HELICOPTER;
int MID = 570; //Distance of the car on the track from the centre of the track
int start = 0;
char KEY; //Variable that stores key pressed by user
float angle; //Rotation angle for car
float carx = 0, cary = 570; //Variables that specify position of the car
int rot = 0; //rotation angle for the wheels
//Function to generate a cone
void cone()
{
	float i, x, y, r = 10;
	glColor3f(0.0, 0.7, 0.2);
	glBegin(GL_TRIANGLE_FAN);
	glVertex3f(0, 0, 20);
	for (i = 0; i <= 361; i += 2)
	{
		x = r * cos(i*c);
		y = r * sin(i*c);
		glVertex3f(x, y, 0);
	}
	glEnd();
}
//Fuction to draw the track
void track(float R1, float R2)
{
	float X, Y, Z;
	int  y;
	glBegin(GL_QUAD_STRIP);
	for (y = 0; y <= 361; y += 1)
	{
		X = R1*cos(c*y);
		Y = R1*sin(c*y);
		Z = -1;
		glVertex3f(X, Y, Z);

		X = R2*cos(c*y);
		Y = R2*sin(c*y);
		Z = -1;
		glVertex3f(X, Y, Z);
	}
	glEnd();
}
//Function that generates a cylinder
void cylinder(float r, float l)
{
	float x, y, z; int d;
	glBegin(GL_QUAD_STRIP);
	for (d = 0; d <= 362; d += 1)
	{
		x = r*cos(c*d);
		z = r*sin(c*d);
		y = 0;
		glVertex3f(x, y, z);

		y = l;
		glVertex3f(x, y, z);
	}
	glEnd();
}
//Function that generates tree with cone shaped tree top
void tree(float a, float b)
{	//Tree trunk
	glColor3f(0.9, 0.3, 0);
	glPushMatrix();
	glTranslatef(a, b, -1);
	glRotatef(90, 1, 0, 0);
	cylinder(3, 15);
	glPopMatrix();
	//Cone shaped tree top
	glPushMatrix();
	glTranslatef(a, b, 8);
	cone();
	glPopMatrix();
}
//Functin that generates tree with sphere shaped tree top
void tree2(float a, float b)
{
	//Tree trunk
	glColor3f(1, 0.2, 0);
	glPushMatrix();
	glTranslatef(a, b, -1);
	glRotatef(90, 1, 0, 0);
	cylinder(6, 25);
	glPopMatrix();
	//Sphere shaped tree top
	glColor3f(0, 1, 0.3);
	glPushMatrix();
	glTranslatef(a, b, 45);
	glutSolidSphere(30, 10, 10);
	glPopMatrix();
}
//Main Fuction
void main(int argc, char **argv)
{
	glutInit(&argc, argv);
	glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
	printf("\t\t**********RACING CAR IN A RACE TRACK***********\n");
	printf("\n\tPRESS:\n");
	printf("\n\tG or g:To Start or Continue\n");
	printf("\n\tE or e:To Stop\n");
	printf("\n\tH or h :Helicopter View\n");
	printf("\n\tB or b :Back View\n");
 	printf("\n\tS or s :Side View\n");
	printf("\n\tF or f :Front View\n");
	glutInitWindowPosition(500, 120);
 	glutInitWindowSize(500, 500);
	glutCreateWindow("SourceSara.Com | RACING CAR");
 	glutDisplayFunc(display);
	glutIdleFunc(idle);
 	glutKeyboardFunc(keys);
	glutReshapeFunc(reshape);
	init();
 	glutMainLoop();
}

نکات

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

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

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

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

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

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