پروژه شبیه سازی شلیک هلیکوپتر با OpenGL به زبان ++C
در این پست برای شما کاربران عزیز سورس پروژه شلیک هلیکوپتر با OpenGL به زبان ++Visual C را آماده کرده ایم که یک پروژه مناسب برای درس گرافیک کامپیوتری و به منظور یادگیری گرافیک با دستورات OpenGL است. در ادامه به نمایش قسمتی کدها و شرح نحوه عملکرد و توابع استفاده شده (display, init) در این پروژه شبیه سازی شلیک هلیکوپتر با OpenGL پرداخته و فیلم و تصویری از آن قرار داده شده است. فیلم اجرایی به صورت آنلاین نیز قابل مشاهده می باشد.
در این پروژه گرافیکی با اپن جی ای یک هلیکوپتر به همراه قطار در حال حرکت بر روی ریل و چند تا خانه با دستورات OpenGL رسم شده است و هلیکپتر نیز در حال حرکت و رفتن به طرف جلو است و قابلیت شلیک سه موشک را دارد.
توضیحات بیشتر، فیلم و تصویری از محیط پروژه شلیک هلیکوپتر با OpenGL به زبان سی پلاس پلاس در ادامه مطلب.
در پروژه گرافیکی شلیک هلیکوپتر از توابع زیر استفاده شده است:
- تابع init: این تابع اندازه فونت و رنگی که هنگام نوشتن متن در صفحه استفاده می شود را تنظیم میکند.
- تابع display: این تابع اشیاء موجود در صفحه رو رسم میکنه مانند خورشید.
پروژه شلیک هلیکوپتر با OpenGL با استفاده از Visual Studio 2010 و نسخه ++VC تست شده و در آخر تصویری از محیط برنامه به همراه فیلم آموزشی در ادامه مطلب قرار داده شده است.
تصویر خروجی:
قسمتی از کدهای پروژه شبیه سازی شلیک هلیکوپتر با OpenGL به زبان سی پلاس پلاس:
جهت دریافت کد کامل این برنامه لطفا از قسمت خرید محصول اقدام کنید
#include "stdafx.h"
#include<glut.h>
GLfloat x1,x2,y1,y2,x3,x4,y3,y4,x5,y5;
void edgedetect(GLfloat x1,GLfloat y1,GLfloat x2,GLfloat y2,int *le,int *re)
{
float mx,x,temp;
int i;
if((y2-y1)<0)
{
temp=x1; x1=x2; x2=temp;
temp=y1; y1=y2; y2=temp;
}
if((y2-y1)!=0)
mx=(x2-x1)/(y2-y1);
else
mx=x2-x1;
x=x1;
for(i=y1;i<y2;i++)
{
if(x<le[i])
le[i]=x;
if(x>re[i])
re[i]=x;
x+=mx;
}
}
void dp(GLint cx,GLint cy)
{
glBegin(GL_POINTS);
glVertex2i(cx,cy);
glEnd();
}
void scanfill(float x1,float y1, float x2, float y2, float x3, float y3,float x4,float y4)
{
int le[1000],re[1000];
int i,y;
for(i=0;i<1000;i++)
{
le[i]=1000;
re[i]=0;
}
edgedetect(x1,y1,x2,y2,le,re);
edgedetect(x2,y2,x3,y3,le,re);
edgedetect(x3,y3,x4,y4,le,re);
edgedetect(x4,y4,x1,y1,le,re);
for(y=0;y<1000;y++)
{
if(le[y]<=re[y])
for(i=le[y]+1;i<re[y];i++)
dp(i,y);
}
}
مشاهده ویدئو در این باره
سلام این پروژرو به زبان دلفی می خوام اگه قابل انجامه لطفا هزینشو هم اعلام کنید متشکر .
بله به زبان دلفی هم میشه انجام داد لطفا توآماده بشه.