قبل از شروع درس این را بگویم که تا امروز این پروژه دارای چند فایل است
1. main.cpp
2. object.h
3. functions .h
4. definations.h
5. timer.h
البته تا الان شما هیچ کدام از این فایل هارا ندیدید ! اگر کمی صبر کنید توضیحات همه این ها را می اورم.
1.این که main برنامه هست و فعلا کار خاصی انجام نمی دهد
2.این هم در این درس توضیح می دهم
3.این یکی شامل توابع عمومی هست که در برنامه استفاده می شود
4.شامل تعریف متغییر ها و ثابت های کلی است
5.در درس بعد توضیح می دهم
خوب حالا وقت توضیح کلاس object رسیده شکل اولیه این کلاس به شکل زیر است
class object
{
private:
int x;//mokhtasaate X
int y;//mokhtasaate Y
int xVel;//sorat object dar raastaaie x
int yVel;//sorat object dar raastaaie y
SDL_Surface *pic;//axe object
public:
//taabe saazandeh
object(int p1,int p2,SDL_Surface *p3,int p4,int p5);
//Move Object baa greftane parameter
//RIGHT LEFT UP DOWN in harkathaaraa
//anjaam midahad
void moveO(const int);
//Object raa be screen michasbaanad
void show();
//be noghte baa X,Y delkhaah miravad
void moveToPoint(int,int);
};
xوy مختصات مبدا شی هست xVelوyVel هم همان velocity یا سرعت شی در راستاهای xوy است pic هم یک سطح است که عکس شی را در ان قرار می دهیم به ساختار SDL_Surface در درس های قبل نگاهی بیاندازید
کار moveO و moveToPoint هم تکان دادن شی است
object::object(int p1,int p2,SDL_Surface *p3,int p4,int p5)
{
xVel = p1;
yVel= p2;
pic = p3;
x = p4;
y = p5;
}
تابع سازنده با گرفتن 5 پارامتر متغییر ها را تنظیم می کند.
void object::moveO(const int p1)
{
switch(p1)
{
case LEFT :
if(x>xBoundLeft) // check mikonad ke az chap mahdoodeh khaarej nashavad
x-=xVel;
break;
case RIGHT :
if(x+pic->w<xBoundRight)// check mikonad baraie raast
x+=xVel;
break;
case UP :
if(y>yBoundUp) // vaase baalaa
y-=yVel;
break;
case DOWN :
if(y+pic->h<yBoundDown) // vaase paain
y+=yVel;
break;
}
}
خوب یکسری از این ها در Definations.h تعریف شده اند با فرستادن پارامتر مناسب شی را حرکت می دهد و متغییر های Bound هم محدوده حرکت اشیا را تعیین می کنند
void object::show()
{
apply_surface(x,y,pic,screen,NULL);
}
تابع show هم کار چسباندن به screen را انجام می دهد
void object::moveToPoint(int p1,int p2)
{
if((x != p1)||(y !=p2))
{
if(x<p1)
x += xVel;
else
x -= xVel;
if(y<p2)
y += yVel;
else
y -= yVel;
}
}
تابع moveToPoint هم که فعلا BUG دارد با گرفتن نقطه تا وقت برابری X,Y شی با آن نقطه یکی یکی به x,y اضافه می کند.
خسته نباشی آقا ایمان. به نظر میرسه قصد داری یه انجین جمع و جور برای بازیت طراحی کنی. برات آرزوی موفقیت دارم.