سورس ایستگاه اتوبوس با OpenGL به زبان C++

bus stop in opengl using c 5278 تصویر

سورس ایستگاه اتوبوس با OpenGL به زبان C++

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

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

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

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

  • تابع woman: خانمی که در ایستگاه ایستاده و سوار اتوبوس می شود را ترسیم می کند.
  • تابع text: برای ترسیم متن بر روی صفحه نمایش استفاده می شود.
  • تابع lamppost: برای رسم تیر چراغ برق های موجود در جاده استفاده می شود.
  • تابع man: برای رسم مردی که در ایستگاه اتوبوس ایستاده است، استفاده می شود.
  • تابع polygon: برای ترسیم اشکال چند ضلعی استفاده می شود.
  • تابع colorcube: برای رنگ آمیزی اشکال مختلف استفاده می شود.
  • تابع bus_stop: برای برای توقف اتوبوس مورد استفاده قرار می گیرد.
  • تابع tree12: برای رسم درختان موجود در صفحه استفاده می شود.
  • تابع wheel1: برای رسم چرخ های اتوبوس استفاده می شود.
  • تابع road2: برای ترسیم جاده های موجود در صفحه استفاده می شود.

bus stop in opengl using c 5278 1 تصویر

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

#include <stdlib.h>
#include <gl\glut.h>
#include<string.h>
#include<stdio.h>
int x = -150, o = 0, xd = -150;
int x1 = 0, z = 0;
float a = 0, a1 = 0, moving, angle = 0;
float z5 = 0, u = 0, flag12 = 0, begin;
float k = 0, y2 = 0;
int flag = 0, flag55 = 0, var = 0, flag1 = 0, flag551 = 0, vari = 0, vard = 0, varid = 0, then = 0;
float p = 0.0, q = 0.0;
#define maxx 10
#define maxy 12
#define dx 27.7
#define dy 12
GLfloat xangle = 0.0, yangle = 0.0, zangle = 0.0;   /* axis angles */
GLfloat vertices[][3] = { { 160,390,-70 },{ 425,390,-70 },
{ 425,510,-70 },{ 160,520,-70 },
{ 135,370,70 },{ 400,370,70 },
{ 400,490,70 },{ 135,500,70 },
{ 135,447,70 },{ 400,447,70 },
{ 425,467,-70 },{ 410,520,-70 },
{ 385,500,70 },{ 160,467,-70 },
{ 320,467,-70 },{ 320,520,-70 },
{ 380,520,-70 },{ 380,390,-70 },{ 320,390,-70 } };
GLfloat colors[][3] = { { 1.0,1.0,0.0 },{ 0.0,0.6,0.7 },{ .3,.4,.5 } };
GLfloat verticesd[][3] = { { 160,390 - 175,-70 },{ 425,390 - 175,-70 },
{ 425,510 - 175,-70 },{ 160,520 - 175,-70 },
{ 135,370 - 175,70 },{ 400,370 - 175,70 },
{ 400,490 - 175,70 },{ 135,500 - 175,70 },
{ 135,447 - 175,70 },{ 400,447 - 175,70 },
{ 425,467 - 175,-70 },{ 410,520 - 175,-70 },
{ 385,500 - 175,70 },{ 160,467 - 175,-70 },
{ 320,467 - 175,-70 },{ 320,520 - 175,-70 },
{ 380,520 - 175,-70 },{ 380,390 - 175,-70 },{ 320,390 - 175,-70 } };
GLfloat colorsd[][3] = { { 1.0,1.0,0.0 },{ 0.0,0.6,0.7 },{ .3,.4,.5 } };
//	FUNCTION wheel
void wheel1()
{
	glColor3f(0, 0, 0);
	glPushMatrix();
	glTranslatef(345, 377, -70);
	glutSolidTorus(5, 15, 100, 90);
	glPopMatrix();
	glPushMatrix();
	glTranslatef(190, 377, -70);
	glutSolidTorus(5, 15, 100, 90);//front two wheels tyre
	glPopMatrix();
	glColor3ub(100, 100, 100);
	glPushMatrix();
	glTranslatef(345, 377, -70);
	glutSolidTorus(5, 5, 10, 69);
	glPopMatrix();
	glPushMatrix();
	glTranslatef(190, 377, -70);
	glutSolidTorus(5, 5, 10, 69);
	glPopMatrix();// front two wheels
}
void wheel2()
{
	glColor3f(0, 0, 0);
	glPushMatrix();
	glTranslatef(180, 370, 70);
	glutSolidTorus(5, 15, 100, 90);
	glPopMatrix();
	glPushMatrix();
	glTranslatef(335, 370, 70);
	glutSolidTorus(5, 15, 100, 90);
	glPopMatrix();            //back two wheels tyre
	glColor3ub(100, 100, 100);
	glPushMatrix();
	glTranslatef(335, 370, 70);
	glutSolidTorus(5, 5, 10, 69);
	glPopMatrix();
	glPushMatrix();
	glTranslatef(180, 370, 70);
	glutSolidTorus(5, 5, 10, 69);
	glPopMatrix();      //back two wheels
}
void polygon(int a, int b, int c, int d, int E, int f)
{
	glBegin(GL_POLYGON);
	glColor3fv(colors[E]);
	glVertex3fv(vertices[a]);
	glVertex3fv(vertices[b]);
	glVertex3fv(vertices[c]);
	glVertex3fv(vertices[d]);
	if (f != 0)
	   glVertex3fv(vertices[f]);
	glEnd();
}
void colorcube()
{
	int i;
	wheel1();
	polygon(0, 1, 5, 4, 0, 0);
	polygon(13, 14, 18, 0, 0, 0);
	polygon(15, 16, 17, 18, 2, 0);
	polygon(16, 11, 2, 1, 0, 17);
	polygon(0, 4, 8, 13, 0, 0);
	polygon(1, 10, 9, 5, 0, 0);
	polygon(9, 10, 2, 6, 1, 0);
	polygon(4, 5, 9, 8, 0, 0);
	polygon(8, 9, 6, 12, 1, 7);
	glColor3ub(100, 40, 50);
	for (i = 0; i <= 180; i += 45)
	{
		glBegin(GL_LINES);
		glVertex3f(180 + i, 447, 70);
		glVertex3f(180 + i, 500, 70);
		glEnd();
	}
	polygon(13, 8, 7, 3, 1, 0);
	polygon(3, 15, 14, 13, 1, 0);
	polygon(6, 2, 11, 12, 0, 0);
	polygon(11, 3, 7, 12, 0, 0);
	wheel2();
}
/**************  main  ***********/
int main(int argc, char **argv)
{
	glutInit(&argc, argv);
	glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH);
	glutInitWindowSize(1000, 650);
	glutInitWindowPosition(0, 0);
	glutCreateWindow("SourceSara.Com | Bus Stop");
	glutDisplayFunc(display);
	glutMouseFunc(mouse);
	glutSpecialFunc(SpecialKeyFunc);
	glutReshapeFunc(myreshape);
	glutMainLoop();
	return 1;
}

نکات

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

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

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

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

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

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