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

سورس ایستگاه اتوبوس با 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 <glglut.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 },
{ ۴۲۵,۵۱۰,-۷۰ },{ ۱۶۰,۵۲۰,-۷۰ },
{ ۱۳۵,۳۷۰,۷۰ },{ ۴۰۰,۳۷۰,۷۰ },
{ ۴۰۰,۴۹۰,۷۰ },{ ۱۳۵,۵۰۰,۷۰ },
{ ۱۳۵,۴۴۷,۷۰ },{ ۴۰۰,۴۴۷,۷۰ },
{ ۴۲۵,۴۶۷,-۷۰ },{ ۴۱۰,۵۲۰,-۷۰ },
{ ۳۸۵,۵۰۰,۷۰ },{ ۱۶۰,۴۶۷,-۷۰ },
{ ۳۲۰,۴۶۷,-۷۰ },{ ۳۲۰,۵۲۰,-۷۰ },
{ ۳۸۰,۵۲۰,-۷۰ },{ ۳۸۰,۳۹۰,-۷۰ },{ ۳۲۰,۳۹۰,-۷۰ } };
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 },
{ ۴۲۵,۵۱۰ - ۱۷۵,-۷۰ },{ ۱۶۰,۵۲۰ - ۱۷۵,-۷۰ },
{ ۱۳۵,۳۷۰ - ۱۷۵,۷۰ },{ ۴۰۰,۳۷۰ - ۱۷۵,۷۰ },
{ ۴۰۰,۴۹۰ - ۱۷۵,۷۰ },{ ۱۳۵,۵۰۰ - ۱۷۵,۷۰ },
{ ۱۳۵,۴۴۷ - ۱۷۵,۷۰ },{ ۴۰۰,۴۴۷ - ۱۷۵,۷۰ },
{ ۴۲۵,۴۶۷ - ۱۷۵,-۷۰ },{ ۴۱۰,۵۲۰ - ۱۷۵,-۷۰ },
{ ۳۸۵,۵۰۰ - ۱۷۵,۷۰ },{ ۱۶۰,۴۶۷ - ۱۷۵,-۷۰ },
{ ۳۲۰,۴۶۷ - ۱۷۵,-۷۰ },{ ۳۲۰,۵۲۰ - ۱۷۵,-۷۰ },
{ ۳۸۰,۵۲۰ - ۱۷۵,-۷۰ },{ ۳۸۰,۳۹۰ - ۱۷۵,-۷۰ },{ ۳۲۰,۳۹۰ - ۱۷۵,-۷۰ } };
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++ اولین بار در سورس سرا – آموزش برنامه نویسی. پدیدار شد.


لينک منبع

درباره ی admin

همچنین ببینید

امن کردن اپلیکیشن های ری اکت (React) با Auth0

بستر Auth0 راه کارهای احراز هویت مبتنی بر توکن می باشد. یاد بگیرید چگونه از …

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

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