۱۲ مطلب در ارديبهشت ۱۳۹۴ ثبت شده است

پاسخ تمرین سری قبل

سلام!

پاسخ تمرین سری قبل را می توانید در کد زیر مشاهده کنید؛

۰ نظر موافقین ۰ مخالفین ۰
روزبه صیادی

Handle کردن event های مربوط به ماوس با SDL1.2

سلام!

جلسه ی پیش با event مربوط به بسته شدن پنجره آشنا شدیم. این جلسه می خواهیم با event های مربوط به ماوس آشنا شویم.

اوّلین event ای که می خواهیم با آن آشنا شویم، event مربوط به فشردن یکی از دکمه های ماوس است. اگر event.type برابر با SDL_MOUSEBUTTONDOWN باشد، یعنی یکی از دکمه های ماوس فشرده شده است. برای این که بفهمید کدام یکی از دکمه ها فشرده شده است، از مقدار موجود در event.button.button استفاده کنید. مثل برنامه ی زیر؛

if ( event.type == SDL_MOUSEBUTTONDOWN ){
    if ( event.button.button == SDL_BUTTON_LEFT )
        cout << "Left Button is Down" << endl;
    if ( event.button.button == SDL_BUTTON_RIGHT )
        cout << "Right Button is Down" << endl;
    if ( event.button.button == SDL_BUTTON_MIDDLE )
        cout << "Middle button is Down" << endl;
}

۱ نظر موافقین ۱ مخالفین ۰
روزبه صیادی

بستن پنجره ی SDL1.2 به درخواست کاربر

سلام!

جلسه ی پیش با event ها در SDL1.2 آشنا شدید. در این جلسه می خواهیم با کمک همین event ها، ببینیم که آیا کاربر دکمه ی بسته شدن پنجره را زده است یا نه.

هر event ای درون خود یک type دارد.

event.type

در این جا نوع event اتفاق افتاده مشخّص می شود. مثلا اگر کاربر اقدام به بستن پنجره کرده باشد، type این event برابر با SDL_QUIT خواهد بود.

if ( event.type == SDL_QUIT )
    closeProgram();

۲ نظر موافقین ۰ مخالفین ۰
روزبه صیادی

Handle کردن event ها در SDL1.2

سلام!

موضوع این مطلب، event های SDL است. برای شناختن event ها به تعریف دقیقی نیاز ندارید. برای شناختن مفهوم آن کافی است که بدانید که حرکت ماوس، فشردن یک دکمه از keyboard و یا رهاسازی آن همگی نوعی event هستند.

SDL تمامی event هایی را که برای پنجره اش اتّفاق می افتد، در یک صف ذخیره می کند (به طوری که اوّلین event صف، event ای است که زودتر از همه اتفاق افتاده است.).

SDL نوع جدیدی از متغیّر را تعریف کرده است که می توان در آن یک event را ذخیره کرد.

SDL_Event event;
۰ نظر موافقین ۰ مخالفین ۰
روزبه صیادی

به دست آوردن زمان با SDL1.2

سلام!

این جلسه می خواهیم با دستور های موجود در SDL1.2 یک Timer بنویسیم. اوّل از همه با تابع زیر آشنا شوید؛

Uint32 SDL_GetTicks();

این تابع مقدار زمانی را که از Initialize کردن SDL می گذرد را در قالب میلی ثانیه برمی گرداند. پس دقت داشته باشید که اگر خروجی این تابع مقداری منفی یا نامربوط بود، حتما SDL را Initialize نکرده اید.

خب، حالا می خواهیم Timer را پیاده سازی کنیم.

۰ نظر موافقین ۰ مخالفین ۰
روزبه صیادی

Load کردن فرمت های دیگر عکس با SDL1.2

سلام!

در جلسات پیش با طرز load کردن یک عکس BMP بر روی یک *SDL_Surface آشنا شدید. این جلسه می خواهیم طرز load کردن بیشتر فرمت های عکس آشنا شویم.

برای این کار ابتدا باید SDL_image.h را include کنید؛

#include "SDL/SDL_image.h"
۰ نظر موافقین ۰ مخالفین ۰
روزبه صیادی

اوّلین برنامه با SDL1.2 - قسمت سوم

سلام!

این مطلب،‌ آخرین مطلب این سری آموزش ها خواهد بود؛ از جلسه ی بعد وارد مبحث جدیدی از SDL می شویم.

در مطلب های پیش، با چگونگی ساخت پنجره با SDL و هم چنین کپی کردن یک عکس روی صفحه آشنا شدیم. در این مطلب می خواهیم روش درست اتمام برنامه های SDL را آموزش دهیم.

تا این جا این کد را نوشته ایم.

بعد از این که کارتان با SDL تمام شد، اوّلین کاری که باید انجام دهید، Free کردن *SDL_Surface هایتان است.

۲ نظر موافقین ۰ مخالفین ۰
روزبه صیادی