کامپایل برنامه های SDL1.2

سلام!

این جلسه می خواهیم طرز کامپایل برنامه هایی را که در آن ها از SDL استفاده شده است آموزش دهیم.

برای کامپایل این برنامه ها باید SDL را به برنامه ی خود لینک کنید. فعلا فرض کنید که یک برنامه ی ساده نوشته اید. کد کامپایل آن چیزی شبیه کد زیر است؛

g++ example.cpp -o example -g -Wall

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

کتاب خانه ی SDL، کتاب خانه ای برای کارهای گرافیکی

سلام!

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

یکی از بهترین گزینه ها، کتاب خانه ی SDL (مخفف Simple DirectMedia Layer) است. این کتاب خانه (و کتاب خانه های دیگری که بر اساس این کتاب خانه به وجود آمده اند) به شما امکان ایجاد یک محیط گرافیکی را می دهند که بسیار سریع است. زیرا به جای این که از cpu استفاده کند، از کارت گرافیک برای اجرا شدن استفاده می کند. ضمنا تغییرات صفحه را نشان می دهد، کلّ صفحه را از اوّل رنگ آمیزی نمی کند.

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

اشاره گر (pointer) - مباحث تکمیلی

سلام!

بعد از مدت زیادی آموختن برنامه نویسی شی گرا، حال بیایید به یکی از مباحث اولیّه ی وبلاگ (یعنی اشاره گر ها) رجوع کرده و آن را کامل کنیم.

همان طور که در آن مطلب متوجه شدید، اگر هنگام تعریف متغیر، قبل از اسم آن یک * اضافه کنیم، آنگاه می توانیم در آن آدرس یک متغیر را ذخیره کنیم. حالا به کد زیر دقت کنید؛

int **a;

حالا در این متغیر آدرس یک *int ذخیره شده است. یعنی اگر در برنامه ی خود بنویسید

cout << *a;

خروجی برنامه یک آدرس خواهد بود. این برنامه را می توانید در این جا مشاهده کنید.

کاربرد اصلی این کار در ایجاد آرایه های چند بعدی است که آن را در ادامه آموزش می دهیم.

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

امکانات جدید توابع مجازی

سلام!

در این جلسه می خواهیم با برخی از قابلیت های مربوط به توابع مجازی آشنا شویم. توجّه داشته باشید که قابلیت هایی که در ادامه می خوانید، در c++11 (و بعدتر) وجود دارند.

قابلیت اوّل:

کلاس های موجود در این کد را در نظر بگیرید. فعلا مشکلی در این کد دیده نمی شود؛ اما اگر تابع مجازی موجود در کلاس وارث را تغییر دهید، این تابع دیگر نسخه ی تغییر داده شده ی تابع موجود در کلاس پایه نخواهد بود.

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

توابع مجازی مجرد (pure virtual functions)

سلام!

در جلسات پیش با توابع مجازی آشنا شدیم. حالا می خواهیم شما را با توابع مجازی مجرد (یا pure) آشنا کنیم.

تابع مجازی مجرد، تابعی مجازی است که بدنه ندارد. برای این که به کامپایلر بگوییم که تابع مجازی مورد نظر، بدنه ندارد، باید به شکل زیر عمل کنیم؛

virtual void f( Arguments ) = 0;

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

تابع مخرب مجازی (virtual destructor)

سلام!

همان طور که می دانید، تابع مخرب یا destructor به طور پیش فرض در همه ی کلاس ها وجود دارد. چگونگی تغییر آن را نیز در این مطلب توضیح دادیم. حالا می خواهیم همین تابع مخرب را به صورت مجازی تعریف کنیم. برای این کار کافی است کلمه ی virtual را به اوّل اسم تابع مخرب اضافه کنیم. به عنوان مثال Prototype تابع مخرب در کلاس Test به صورت زیر خواهد بود؛

virtual ~Test();

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

چندریختی (polymorphism)

سلام!

در جلسه های قبل یک اشاره گر از جنس کلاس پایه ساختیم و در آن آدرس یک کلاس وارث را ذخیره کردیم. سپس متوجّه شدیم که این اشاره گر تنها توانایی دسترسی به توابع و متغّیر های خود را دارد و هیچ دسترسی ای به عضوهای کلاس وارث ندارد (با این که آدرس کلاس وارث در آن ذخیره شده است). در این جلسه می خواهیم کاری کنیم که این اشاره گر بتواند به برخی از عضوهای کلاس وارث نیز دسترسی داشته باشد.

برای این کار باید تابعی مجازی بسازیم. برای ساخت یک تابع مجازی باید کلمه ی virtual را به ابتدای Prototype آن اضافه کنید. مثلا اگر بخواهید تابعی به نام f را به صورت مجازی بسازید باید به صورت زیر عمل کنید؛

virtual void f( Arguments... );

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