سورس بازی ماشین مسابقه ای با OpenGL به زبان C++
در این بخش سورس بازی ماشین مسابقه ای با OpenGL را برای شما آماده کرده ایم که با استفاده از زبان برنامه نویسی C++ نوشته شده است. شما با مشاهده این سورس کد می توانید مواردی همچون نحوه رسم اشکال مختلف با استفاده از خطوط، حرکت دادن شیء های موجود، تعریف منوی برای کلیک راست در OpenGL را یاد بگیرد. در ادامه می توانید توضیحات و تصاویر مربوط به این برنامه را مشاهده کنید.
توضیحات پروژه
در این پروژه یک ماشین مسابقه ای در یک مسیر دایره ای در حال حرکت است و درخت هایی که در کنار مسیر مسابقه قرار دارند، با حرکت ماشین به سمت جلو جا به جا می شوند. همچنین کاربر می تواند با استفاده از کلید های مشخص شده دوربین را در زوایای مختلف حرکت دهد.
- تابع Tree: برای رسم درختان موجود در کناره مسیر مسابقه استفاده می شود.
- تابع Wheels: برای رسم چرخ های اتومبیل استفاده می شود.
- تابع Keys: برای مدیریت کلید های زده شده استفاده می شود.
- تابع Cylinder: برای رسم قسمت هایی از چرخ اتومبیل استفاده می شود.
- تابع Track: برای رسم مسیر مسابقه استفاده می شود.
- تابع Alloy: برای رسم کناره های چرخ اتومبیل استفاده می شود.
- تابع Car: برای رسم ماشین موجود در صفحه استفاده می شود.
- تابع Actall: برای رسم پره چرخ های ماشین استفاده می شود.
- تابع Chassis: برای رسم شاسی اتومبیل استفاده می شود.
- تابع Driver: برای رسم راننده اتومبیل استفاده می شود.
قسمت های سورس پروژه:
#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++ اولین بار در سورس سرا - آموزش برنامه نویسی. پدیدار شد.