درس 9 : ساخت کلاس object برای تکان دادن اشیا و انجام اعمال دیگر

قبل از شروع درس این را بگویم که تا امروز این پروژه دارای چند فایل است

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 اضافه می کند.

نظرات 1 + ارسال نظر
ساسان یکشنبه 8 مرداد‌ماه سال 1385 ساعت 05:29 ب.ظ http://opengl.blogfa.com

خسته نباشی آقا ایمان. به نظر میرسه قصد داری یه انجین جمع و جور برای بازیت طراحی کنی. برات آرزوی موفقیت دارم.

برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد