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

پیشنهاد برای پروژه با SDL1.2

سلام!

در این مطلب قصد دارم چند پروژه برای انجام دادن پیشنهاد دهم. انجام این پروژه ها برای مسلّط شدن بر SDL1.2 الزامی است. کد این پروژه ها به مرور زمان در وبلاگ قرار خواهد گرفت.

۱. XO

۲. Othello یا Reversi

۳. Four in a row

۴. Pentago

۵. مار و پله

۶. Paint (شامل ابزارهای قلم مو، مستطیل، بیضی، مثلّث و اسپری)

توجه داشته باشید که در همه ی این پروژه ها از کلاس استفاده کنید. استفاده از makefile برای تمامی پروژه ها الزامی است. پروژه ی Paint نیاز به استفاده از ارث بری دارد.

موفق باشید!

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

به دست آوردن رنگ یک نقطه با SDL1.2

سلام!

در این جلسه می خواهیم رنگ یک نقطه از صفحه را به دست بیاوریم.

رنگ پیکسل های یک صفحه به صورت یک آرایه ی دو بعدی ذخیره نمی شود بلکه در یک آرایه ی یک بعدی قرار دارند. بنابراین نقطه ای با مختصات x و y در خانه ای با شماره ی زیر قرار دارد؛

y * screen->w + x

که در این جا screen->w بیان گر طول صفحه است.

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

استفاده از فونت ها و نوشتن روی صفحه با SDL1.2

سلام!

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

اول از همه باید کتاب خانه ی SDL_ttf.h را include کنید. در صورتی که این کتاب خانه را نصب نکرده اید، به این مطلب مراجعه کنید.

#include "SDL/SDL_ttf.h"

بعد از این که این کتاب خانه را include کردید، باید آن را initialize کنید. برای این کار از تابع زیر استفاده کنید؛

int TTF_Init ();

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

بهینه سازی کپی کردن عکس در صفحه در SDL1.2

سلام!

این جلسه می خواهیم عکس مورد نظر خود را سریع تر در صفحه کپی کنیم.

فرض کنید یک پنجره با مشخّصات زیر ساخته اید؛

SDL_Surface *screen = SDL_SetVideoMode( 640, 480, 32, SDL_HWSURFACE );

هر پیکسل از این پنجره حاوی ۳۲ بیت است. ولی تصاویر با فرمت bitmap و بعضی از فرمت های دیگر تنها دارای ۲۴ بیت به ازای هر پیکسل هستند. در صورتی که صفحه ی شما دارای ۳۲ بیت به ازای هر پیکسل (bpp) باشد، هنگام کپی کردن یک عکس bitmap، کتاب خانه ی SDL مجبور می شود که عکس شما را تبدیل کند و همین باعث می شود که برنامه کند شود.

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

به دست آوردن رزولوشن صفحه نمایش با SDL1.2

سلام!

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

برای این کار باید از تابع SDL_GetVideoInfo استفاده کنیم.

const SDL_VideoInfo *SDL_GetVideoInfo();

این تابع برخی از مشخّصات مربوط به توانایی سیستم را در کارهای گرافیکی برمی گرداند. خروجی این تابع یک اشاره گر از نوع SDL_VideoInfo است.

const SDL_VideoInfo *videoInfo = SDL_GetVideoInfo();

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

کشیدن شکل های مختلف در صفحه با SDL_gfx1.2

سلام!

این جلسه قرار است کشیدن چند شکل را روی صفحه یاد بگیریم.

برای این کار به کتاب خانه ی SDL_gfxPrimitives.h احتیاج دارید.

#include "SDL/SDL_gfxPrimitives.h"

این کتاب خانه شامل توابع مختلفی برای کشیدن شکل های مختلف است. این توابع را به همراه راهنمای استفاده از آن ها می توانید در ادامه مشاهده کنید. خروجی تمامی توابع زیر در صورت موفقیت ۰ و در غیر این صورت -۱ خواهد بود.

ورودی آخر تمامی توابع میزان شفافیت رنگ را مشخّص می کند. در صورتی که این مقدار برابر با ۲۵۵ باشد، رنگ کامل است. هر چه این مقدار کم تر باشد، رنگ های زیری بیشتر معلوم می شوند.

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

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

سلام!

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

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