Arvanttt

تند و سریع

Arvant

تند و سریع












۹ مطلب با موضوع «بازی سازی :: برنامه نویسی بازی :: ++C» ثبت شده است

خیلی از امکاناتی که معمولاَ برای پلتفرم IOS وجود دارد شاید هنوز از طریق cocosقابل دسترسی نباشد و به همین خاطر گاها نیازمند فراخوانی توابع Objectiv-c در داخل کد اصلی بازی که به زبان ++C است می شویم .

پیاده سازی این امکان به مراتب ساده تر از پیاده سازی توسط جاواست چون سی پلاس پلاس و آبجکتیو سی رابطه خانوادگی خوبی با هم دارند و اصولاَ بهتر با هم کنار خواهند آمد .

مطلب بعدی در ادامه مطالب مربوط به دسترسی به امکانات بومی در cocos2d-x مربوط به فراخوانی توابع ++C  با استفاده از جاواست .

برای این کار دو عمل اصلی انجام میدیم .

ابتدا تابع مورد نظر را به صورت Native در جاوا تعریف می کنیم .

سپس باید بر اساس یک سری قوانین خاص تابع مورد نظر را در ++C پیاده سازی کنیم .

احتمالا وقتی دارید یک بازی را با ابزاری با قابلیت چند سکویی مثل cocso2d-x توسعه می دهید پیش خواهد آمد که نیاز داشته باشید که از امکانات اختصاصی یک پلتفرم استفاده کنید .

به عنوان مثال فراخوانی متد مربوط به ثبت نظر و فراخوانی اکتیویتی بازار نمونه خوبی از این نیاز به حساب میاد یا خیلی مثال های دیگری که خود شما حتما هنگام تکمیل کردن بازی با آنها رو به رو خواهید شد.

خب هر وقت که به همچین نیازی برخوردید نیازی به درماندگی نیست اگر بلد باشید که در داخل کد های بازی که با ++C  نوشته اید توابع جاوا را فراخوانی کنید .

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

شاید یکی از اصلی ترین دغدغه های که در هنگام انتخاب یک پلتفرم با قابلیت چند سکویی وجود دارد امکان بهره گیری از امکانات خاص هر پلتفرم است .به طور مثال وقتی که بازی شما روی پلتفرم های آندروید و یا آی او اس ارائه می شود به احتمال زیاد هر پلتفرم به صورت جداگانه دارای کتابخانه ها و یا امکاناتی هستند که انجین به نوبه خود فاقد آن است .

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

ساختار XML یکی از ساختار های رایج برای ذخیره و  بازیابی اطلاعات نسبتاَ ساده می باشد . در این ساختار فیلد های داده ای با مقدار مورد نظر به صورت متن ذخیره می شوند و این امکان را میدهند که با استفاده از هر ادیتور متنی آنها را ویرایش کرد .از جمله موارد استفاده این ساختار می توان به استفاده در طراحی نرم افزار های طراحی مرحله اشاره کرد و یا حتی ذخیره سازی اطلاعات ساده بازی مانند تعداد امتیاز ، آخرین مرحله که بازیکن با موفقیت پشت سر گذاشته است و تنظیمات مربوط به صدا و .....

Strongly-typed enums

در ++C قدیم اگر یک عضو داده enum با عضو دیگری در یک enum در همان حوزه هم نام باشد شاهد ایجاد خطا در زمان کامپایل برنامه می بودیم .برای حل این مشکل نوع داده جدید تحت عنوان Strongly - typed enums به زبان در استاندارد جدید اضافه شده است.

override

جهت خوانایی برنامه از این پس هنگام تعریف توابع مجازی در کلاس های که از کلاس پایه مشتق شده اند با استفاده از override مشخص می گردانیم که این تابع به صورت مجازی تعریف شده است و در کلاس پایه یک کلاس مشابه تعریف شده است .همچنین به کامپایلر تفهیم می شود که در کلاس پاییه باید همچین تابعی به این صورت تعریف شده باشد و در غیر این صورت با ارور کامپایلر اشتباه را اعلان می کند .

auto

تا قبل از 11++C شما مجبور به مشخص کردن نوع متغیر در حین تعریف متغیر بودید اما در استاندارد جدید این وظیفه را می توان بر عهده کامپایلر گذاشت که نسبت به تعیین نوع متغیر اقدام نماید .این نوع تعریف متغیر از کارایی و دقت نوع کلاسیک آن برخوردار بوده و کد نویسی را نیز اسان تر می کند شاید به نظر استفاده از int به جای atuo در نگاه اول ساده تر باشد اما در هنگام کار با انواع داده مختلفی که در کتابخانه استاندارد وجود دارد و بعضی کاربرد های دیگر استفاده از این شکل تعریف متغیر بسیار کاراست.

خب از آنجایی که نسخه جدید cocos2d-x در حال طی مراحل آلفاست به نظرم پیشاپیش باید با آپدیت کردن دانشی که از ++C داریم به استقبال این تغیرات برویم .از آنجایی که در نسخه جدید تیم توسعه دهنده انجین تاکید بسیار زیادی روی استفاده از سی پلاس پلاس پترن ها به جای ابجکتیو سی دارند پس این نسخه بیشتر خوشایند برنامه نویس های ++C خواهد بود .همچنین استفاده از ویژگیهای جدید 11 ++C به مراتب در گفته های توسعه دهندگان جزو نکات بارز تغیرات آتی خواهد بود .به همین خاطر در نظر دارم برای به استقبال رفتن نسخه جدید یه سری از این تغیرات را در حد وصع  مرور کنیم.