بعضی اوقات فکر می کنم چرا خدا (خود آ) عشق افرید؟؟؟
بعضی اوقات اینطوری جواب خودم می دم که اگه می خوای تو هر زمینه بهترین باشی باید عاشق اون زمینه باشی ولی این ها جواب های من نیست این ها جواب های غولهایی مثل
استیون جابز که تو ۳۵ سالگی ازدواج می کنند و جزو ۴-۵ تا میلیاردر اول این کره خاکی می شن...
من جواب خودم می خوام ولی پیداش نکردم ...............______________ مرد
با عرض سلام
من کار رو بازی شروع کردم به زودی توضیحاتش می زارم رو وبلاگ باید روش کامل فکر کنم
-----
یک چیز مهم دیگه اینه که اگر بخواهید از OpenGL 2.0 استفاده کنید کلا ورژن های بعد از ۱.۱ شما دیگر نمی توانید از ویژوال استیدیو مایکروسافت به راحتی استفاده کنید زیرا مایکروسافت برای حمایت از DirectX خود دست به خیانتی دیگر زده! و فقط همان نسخه سالهای اولیه بوجود امدن OpenGL را در درون ویژوال استیدیو خود قرار داده پیشنهاد من در این وضعیت استفاده از
++DEVC است که کمپایلر فوق العاده قوی متن باز و مجانی و با حجم بسیار کم است البته این مطلب فقط برای حرفه ای ها ذکر شد! وگرنه فعلا در این بلاگ VC 6 هم واسه خود کد خدایه !
در بلاگ توضیحات خوبی در مورد دانلود و نصب ++DEVC امده است
همچنین در این قسمت از وبلاگ اقا ساسان هم مطالب خوبی در مورد استفاده از OpenGL 2
وجود دارد از اقا ساسان هم متشکریم
-----
در مورد سوال اقای کوچول
البته شما استاد من هستید .
در مورد SDL می تونم بگم چیزایی شبیه SDL و Glut وOpenAL و... در اصل مکملهای OpenGL هستند در OpenGL تابعی برای مدیریت کیبرد موس joystick کار نزاشتند(البته تا اونجا که من می دونم) شما با ترکیب OpenGL و SDL به را حتی می توانید برنامه ای بنویسید که روی هر سیستم عاملی با موس و کیبرد کار کند و نه مثلا فقط ویندوز با استفاده از MFC یا Win32 API
با استفاده از SDL می توانید با کتابخانه الحاقی SDL_Mixer (بعدا توضیح می دهم) Mp3 player بسازید که روی هر سیستم عاملی از Mac OS گرفته تا BSD کمپایل شود یا با OpenAL .
و GLUT هم که مکمل قدرتمندی برای OpenGL است برای ساخت پنجره و منو بدون استفاده از دستورات و کلاس های خواص سیستم عاملی خواص بر روی هر کدام از انها...
در اصل این ها به کمک OpenGL امده اند تا در برابر ... همچون DirectX فاتح از میدان بیرون اید
می توانید Direct3D را با OpenGL
Direct Input را با SDL
DirectSound,DirectMusic را با OpenAL
و ... مکملهای قدرتمند دیگر مقایسه کنید
امیدوارم اطلاعات ناقص من کمکی به خوانندگان وبلاگ کند
من از شما می خواهم که من را در گفتار های اشتباهم راهنمایی کنید از Syntax گرفته تا چیزای سنگین!...(شرمنده همه شما)
یک وبلاگ خوب در زمینه OpenGL که توسط اقا ساسان مدیریت می شود
از این به بعد این وبلاگ به عنوان برادر وبلاگ من معرفی می شود
به امید موفقیت ایران . . .
از اقا ساسان هم متشکریم
می خوام یک بازی استراتژی متن باز بنویسم این وبلاگم راهنمای خوبی واسه توسعه دهنده اش می شه
ولی فعلا به علت فقدان نظرات شما وبلاگ تعطیل ...
درس 8 : مدیریت کردن صفحه کلید
شما قبلا با رویداد SDL_QUIT کار کردید در این درس یاد می گیرید که آیا کلیدی فشرده شده است یا خیر و اگر فشرده شده چه کلیدی فشرده شده است
//Generate the message surfaces
up = TTF_RenderText_Solid( font, "Up was pressed.", textColor );
down = TTF_RenderText_Solid( font, "Down was pressed.", textColor );
left = TTF_RenderText_Solid( font, "Left was pressed", textColor );
right = TTF_RenderText_Solid( font, "Right wa pressed", textColor );
بعد از اماده کردن همه ملزومات ما 4 سطح را تعریف می کنیم که حاوی 4 پیغام ما به کار بر است
البته یادتون باشد یک برنامه نویس حرفه ای باید همیشه چک کند که این UPو DOWN و... اینها همه درست ایجاد شده باشند با یک if و چک کردن NULL نبودن سطوح ولی اینجا من اینکار را نکردم
;)
//If there's an event to handle
if( SDL_PollEvent( &event ) )
{
//If a key was pressed
if( event.type == SDL_KEYDOWN )
{
حال اگر بخواهیم بفهمیم کلیدی فشرده شده است از SDL_KEYDOWN استفاده می کنیم
//Set the proper text
switch( event.key.keysym.sym )
{
case SDLK_UP: message = up; break;
case SDLK_DOWN: message = down; break;
case SDLK_LEFT: message = left; break;
case SDLK_RIGHT: message = right; break;
}
}
//If the user has Xed out the window
else if( event.type == SDL_QUIT )
{
//Quit the program
quit = true;
}
}
حال باید بفهمیم که چه کلیدی فشار داده شده است SDL_PollEvent اطلاعات را از نوع ساختار SDL_KeyboardEvent به نام key درون event قرار می دهیم و درون keyساختار دیگری به نام keysym وجود دارد و درون keysym ساختار دیگری قرار دارد به نام key قرار دارد که در ان یک SDL_Key قرار دارد (فراموش نکنید که event یک union است)
مثال : اگر دکمه بالا را فشار دهیم SDLK_UP را بر می گرداند
//If a message needs to be displayed
if( message != NULL )
{
//Apply the images to the screen
apply_surface( 0, 0, background, screen );
apply_surface( ( SCREEN_WIDTH - message->w ) / 2, ( SCREEN_HEIGHT - message->h ) / 2, message, screen );
//Null the surface pointer
message = NULL;
}
//Update the screen
if( SDL_Flip( screen ) == -1 )
{
return 1;
}
SDL_FillRect( screen, &screen->clip_rect, SDL_MapRGB( screen->format, 0, 0, 0 ) );
سر اخر پیغام را در وسط صفحه ست می کند و جمله اخر برای سیاه کردن صفحه است
بحث تکمیلی :
ساختار SDL_KeyboardEvent مطابق شکل روبرو است
typedef struct{
Uint8 type;
Uint8 state;
SDL_keysym keysym;
} SDL_KeyboardEvent;
type – می تواند SDL_KEYDOWNیا SDL_KEYUP باشد
state- می تواند SDL_PRESSED یا SDL_RELEASED باشد
keysym – ساختار ی که محتوی اطلاعات کلید فشرده شده است
در صورتی که تکرار فعال باشد SDL_KEYDOWN باSDL_PRESSED فرقی ندارد
int SDL_EnableKeyRepeat(int delay, int interval);
در صورت صفر کردن delay غیر فعال می شود
ساختار SDL_kesym :
typedef struct{
Uint8 scancode;
SDLKey sym;
SDLMod mod;
Uint16 unicode;
} SDL_keysym;
sym : کلیدی که فشرده شده است
mod : کلید ALT-Control-shift را چک می کند
typedef enum {
KMOD_NONE = 0x0000,
KMOD_LSHIFT= 0x0001,
KMOD_RSHIFT= 0x0002,
KMOD_LCTRL = 0x0040,
KMOD_RCTRL = 0x0080,
KMOD_LALT = 0x0100,
KMOD_RALT = 0x0200,
KMOD_LMETA = 0x0400,
KMOD_RMETA = 0x0800,
KMOD_NUM = 0x1000,
KMOD_CAPS = 0x2000,
KMOD_MODE = 0x4000,
} SDLMod;