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

draw game controller in opengl using cpp 5067 سورس رسم دسته بازی با OpenGL به زبان C++

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

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

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

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

  • تابع OpenGlInitializer: برای آماده سازی OpenGL و مقدار دهی اولیه استفاده می شود.
  • تابع Display: برای نمایش دسته رسم شده استفاده می شود.
  • تابع Resize: برای کنترل اندازه صفحه استفاده می شود.
  • تابع DrawCircle: برای رسم دایره تو خالی استفاده می شود.
  • تابع DrawColoredCircle: برای رسم دایره تو پر استفاده می شود.
  • تابع DrawPolygon: برای رسم چند ضلعی استفاده می شود.
  • تابع DrawGameController: به منظور رسم دسته بازی با استفاده از توابع دیگر استفاده می شود.
  • تابع DrawOutline: برای رسم بدنه دسته استفاده می شود.
  • تابع DrawArrows: برای رسم فلش های دسته استفاده می شود.
  • تابع DrawCenterButtons: برای رسم دکمه های وسط دسته استفاده می شود.
  • تابع DrawPrimaryButtons: برای رسم چهار دکمه اصلی استفاده می شود.

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

#include <iostream>
#include <cmath>
#include <Gl\GLUT.h>
using namespace std;
#define BACKGROUND 0.0, 0.0, 0.0
#define FOREGROUND 1.0, 1.0, 1.0
#define GRAY 0.3, 0.3, 0.3
#define ORANGE 1.0, 0.6, 0.2
#define GREEN 0.5, 1.0, 0.2
#define BLUE 0.1, 0.4, 0.9
#define RED 0.9, 0.1, 0.0
#define WIN_WIDTH 500
#define WIN_HEIGHT 500
#define WIN_POS_X 300
#define WIN_POS_Y 50
#define PI 3.14
void OpenGlInitializer();
void Display();
void Resize(int, int);
void DrawCircle(GLfloat x, GLfloat y, GLfloat radius);
void DrawColoredCircle(GLfloat x, GLfloat y, GLfloat radius);
void DrawPolygon(GLfloat x, GLfloat y, GLfloat radius);
void DrawGameController();
void DrawOutline();
void DrawArrows();
void DrawArrowsOutline();
void DrawButtons();
void DrawLR();
void DrawCenterButtons();
void DrawPrimaryButtons();
void DrawPrimaryButtonsOutline();
void DrawButtonsCircle();
void DrawButtonsContent();
void DrawCenterCircles();
int main(int argc, char ** argv)
{
	glutInit(&argc, argv);
	OpenGlInitializer();
	glutMainLoop();
	return 0;
}
void OpenGlInitializer()
{
	glutInitWindowSize(WIN_WIDTH, WIN_HEIGHT);
	glutInitWindowPosition(WIN_POS_X, WIN_POS_Y);
	glutCreateWindow("SourceSara.Com | Game Controller");
	glClearColor(BACKGROUND, 1.0);
	glutDisplayFunc(Display);
	glutReshapeFunc(Resize);
}
void Display()
{
	glClear(GL_COLOR_BUFFER_BIT);
	DrawGameController();
	glFlush();
}
void DrawCircle(GLfloat x, GLfloat y, GLfloat radius)
{
	unsigned int edges = 30;
	glLineWidth(0.5f);
	glBegin(GL_LINE_LOOP);
	{
		for (unsigned int i = 0; i <= edges; i++) {
			int pos_x = (radius * cos((2 * PI * i) / edges)) + x;
			int pos_y = (radius * sin((2 * PI * i) / edges)) + y;
			glVertex2f(pos_x, pos_y);
		}
	}
	glEnd();
}
void DrawCenterCircles()
{
	glColor3f(FOREGROUND);
	DrawCircle(250, 260, 12);	
	glColor3f(ORANGE);
	DrawColoredCircle(250, 265, 10);
	glColor3f(FOREGROUND);
	DrawPolygon(180, 220, 30);
	DrawPolygon(180, 220, 26);
	glColor3f(GREEN);
	DrawColoredCircle(185, 215, 10);
	glColor3f(FOREGROUND);
	DrawPolygon(310, 220, 30);
	DrawPolygon(310, 220, 26);
	glColor3f(GREEN);
	DrawColoredCircle(300, 225, 10);
	glColor3f(FOREGROUND);
}

نکات

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

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

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

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

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

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