آموزش برنامه نویــسی

جلسـه اول آموزش ساخت بازی در کنسول #C

جمعه, ۲۱ اسفند ۱۳۹۴، ۰۱:۴۱ ق.ظ
به نـام خدا
 
                                       جلسه اول آموزش برنامــه نویسی #c 
                                       ساخت بازی در Console Application
پیش نیاز هـا :
+ آشنایــی اولیه با محیط NET FRAMEWORK.
+ آشنـایی به اصول پایـه برنامـه نویســی
+ کمــی آشنایــی به #C یا حداقـل به یکـی از زبان های C (نظــیر C++، C ،  Java )
+ کـمی انگـیزه برای یادگیــری ! 



#Simple Text Mode Video Game in Console Application C

همانطـور کـه می دونــید برنامــه نویســی کنسول اَپ هــا بسـیار سخت و زمـان بـر هست و عمومـاً مطالب
 پایه برنـامه نویسـی رو در اون محیط میشه احساس کـرد .
برنامـه نویسی در محیط Dos ماننـد (یا همـون کنسول) بسـیار وسیع تر از ویندوز اَپ هاست . این مطلب درست است که ویندوز اَپ هــا محیطـی کاربـر پسند تر و زیبا تو و مستحکم تری نسبت به کنسول اَپ ها دارند ولی هیچگـاه نمی توان هسته ی Unix یا Linux ـی را در آنجـا پیاده کرد ( اون Desktop یا رابط کاربـری گرافیکی GUI تنهــا پوسته یا Shell سیستم عامل ها هستند ) و عملـا دست برنامه نویس در محیط گـرافیکی بسته است .

+ تمـامی برنامه های Boot و سیستمی با کنسول نوشته می شوند .
+ تمـامـی هسته های لینوکس ، یونیکس و بسیاری از سیستم عامل ها بصورت کنسولـی نوشته شده است.
+ برنـامه نویسی در محیط گرافیکـی آنطور که باید و شایـد مطالب Basic برنامـه نویسی را توجیح نمی کنند .
+ سالهاست هکـر ها در محیط کنسول مشغـول به اکسپلویت نویسـی هستند .
+عملا مطالبـی را که ساده می توان در کنسول بیان کـرد در محیط گرافیکی نمی توان گفت .
و بسیـار نکاتی دیگـر که اهمیت برنامـه نویسی در کنسول را می توان با آنهـا توجیح و نشـان داد . (اطلاعات بیشتر در اینجـا)


حال به شروع درسمـان می پردازیم . کنسول اَپ هـا دارای محیطـی تک کاره و بسیار ساده اَنـد . بطوری که ساخت برنامـه های کاربردی عملا در آن کمی مشکل و گـاهی غیر ممکن است . خوشبختانـه کتابخـانه غـنی #C دارای توابـع و مِتـد های فراوانــی برای نوشتن کد در محیط Console است و همین این زبان ( و زبان خانواده های C و اسمبلـی ) بهترین زبان ها برای کد نویسـی در این محیطـند . به شرخ برخـی از این توابع می پردازیم .


کلاس Console : 

کلاس کنسول شامل توابع و مـتد های مورد نیـاز برای ابزار های خروجـی / ورودی و برنامه نویسـی تحت کنسول است . این کلاس شامل متد ها و Properties ( خصوصیت ها) مختلـف است که کار در این محیط را آسان و خوانا برای برنامه نویس کرده است.

شروع کـار :
1_وارد محیط NET. شـده و New Project را کلیک کنید
(بـرای دیدن عکس هـا در حالت بزرگ روی آنهـا کلیک کنید)


 TextModeGame1


2_در گزیـنه Name ، نام دلخواه و مسیر برنـامه و همینطور نام Souloution را هم در صورت نیاز تغییر بدهید ( در حالت معمولـی نیازی نیست )

TextModeGame2


3_ چند لحظـه صبـر کرده که پروژه ما Create شود . پس از آن ما در مقابل کـد قابل ویرایش و برنامه نویسی کنسول اَپ خود هستم .

TextModeGame3


4_حالا شروع به بررسـی می کنیم . ابتدا عبارت Console را در قسمتی که در عکس مشخص شده تایپ کرده تا تمام متد ها (Methods ) و خصوصیت (Properties) هـای کنسول را ببنیم .

TextModeGame4  


نکته :
هیچگاه در آخر دستورات #C ، علامت ; فراموش نشود!
5_حال به بررسی متد ها و خصوصیت های مورد نیاز برای ساخت برنامه مان میکنیم .
به اولین چیزی که احتیاج داریم متد   ;"" = Console.Title    هست.
ساختـار این دستور اینچنین است     ;"نام برنامـه" = Console.Title
پس از نوشتن این دستور Ctrl+F5 را فشار دهـید تا برنـامه بدون بسته شدن کامپایل(یا اجرا) شود .


TextModeGame5


این دستور یک رشته (string یا مجموعه ای کاراکتر ها ) را گرفته و بالای صفحـه ی کنسول نمایش میدهد . همین دستور کوچک کیفیت برنامـه را بالا برده و به برنامه ظاهری زیبا تر می دهد .


6_حال به بررسی ساختار محیط کنسول می پردازیم . وقتی چیزی در کنسول می نویسم بصورت پیشفرض در خط 0 برنامه و در ستون های مختلفی نوشته میشود . شاید اکنون درک این حرف کمی مشکل باشد اما عکس کامل و گویاست . ( به 2 دستور دیگر نوشته شده توجهی نکنید بعدا توضیح خواهم داد )


TextModeGame6



7_حالا که فهمیدید محیط کنسول چه ساختاری دارد ، میخواهم شمـارا با متد ()Console.SetCursorPosition آشنا می کنم. این دستور به این صورت مورد استفاد قرار می گیرد :


Console.SetCursorPosition(int left,int top);g_  

این متد دو ورودی از نوع int و می پذیرد . با این متد می توان مثل دستگاه مختصات نشانه ای که از صفحه کلید ورودی می گیرد (Cursor) را در نقطه ی دلخواه از صفحه کنسول به جای دیگری منتقل کنید . int Left فاصله از سمت چپ و int top فاصله از بالا را می خواند .
حال 2 متغیر از نوع int  تعریف کرده و در آنها مقدار 10 را میریزیم . به عکس توجـه کنید :

TextModeGame7


8_حالا باید کار با ConsoleKeyInfo را آغاز کنیم . ConsoleKeyInfo یک ساختمان (struct) داده ای است که می توان از آن یک متغیر (Variable) گرفت و از آن در جهت خواندن دکمه های صفحه کلید بهره گرفت .
نحوه تعریف ConsoleKeyInfo اینجنین است : 

;نام متغیر ConsoleKeyInfo

مثال : 

ConsoleKeyInfo Mover;s
لالبا
ل
در اینجا ما یک متغیر از نوع ConsoleKeyInfo به نام Mover تعریف کردیم که می تواند تمامـی کار های مربوط به ورود دکمه های صفحه کلید را انجام دهد .
به عکس توجه کنید :

textModeGame




9_حال باید مقدار Mover از کاربر گرفته شود . متد Console.ReadKey();d این کار را بسادگـی انجام خواهد داد. 
Mover = Console.ReadKey(true);k

به عکس توجه کنید :



TextModeGame9


نکتـه :
بدیهـی است که این عمل توسط برنامه ، تنها یکبار انجام خواهد شد و برنامه پس از گرفتن یک دکمـه ، دیگر ادامه نمی یابـد . برای اینکـه برنامه ادامه بیابد می توان از 3 دستور goto for(;;) ,while استفاده کرد. 
روشن است که نمی توان با goto برنامه را نوشت ، دستور goto دستور انتقال بدون شرط برنامه از خطی به یک Label از پیش درج شده است و برای این برنامه مناسب نیست (همچنین اصول برنامه نویسی ساخت یافته را تقض می کند ) . for بی نهایت نیز شکل نامناسبـی به کد برنامه می دهد . تنها راه حل خوب استفاده از حلقه while است . 

10_ پس عمل خواندن(متد) دکمه از صفحه کلید را را داخل حلقه ای با شرط trueقرار می دهیم . به عکس توجه کنید :





11_اکنون باید منطق برنامه را توضیح دهم . برنامه ما Cursor را با فلش های بالا ، پایین ، چپ و راست حرکت می دهد و این بازی ساده حرکتی بدون هیچ پایانی را میسازد ( این برنامه بعـداً تابعی برای برنامه های بعدی ما میشود ) . حال باید 4 شرط در برنامه ایجاد کنیم . ساختار if - else های تودرتو مطلوب خواهـند بود . همینطور قسمت اصلی کد ما در اینجا نوشته می شود .
به عکس خوب توجه کنید : 


نکات :

ConsoleKey یکی از شمارنده های (enum) کلاس Console است که تمامـی دکمه های کیبورد را در خود دارد 

Mover.Key مقدار گرفته شده را برابر با دکمه کیبوردی که گرفته شده (توسط کاربر قرار می دهد )

12_حال داخل شرط هایمـان دستورات خاص را قرار می دهیم ، به عکس خوب توجه کنید :



تمـامی نکات در عکس واضح است .
تا اینجـا اکنون برنامه قابل کار کردن است و با زدن دکه F5 برنامه را کامپایل و اجرا کنید .
میبینید که وقتی Cursor به ستون 0 یا به خط 0 میرسد ، برنامه Error می دهد . برای انجام نشدن این کار کل برنامه را داخل try برده و 2 بلوک اضافه کنید .(یکی از آخر و یکی از اول) . همینطور در پایان بلوک ها catch را با دو بلوک ، خالـی بگذارید . در اینجا مبحث throw , catch , try کمـی پیجیده است فقط همین را بدانید که این دستورات ، Error ها دور زده و نمی گذارد تا اجرا شوند . انشاالله در مباحث بعدی مفصل به این اعمال می پردازیم .

 


+ فیلـم آموزشـی به زودی 

پایان جلسه اول ، ساخت Mover یک بازی TextMode


موافقین ۰ مخالفین ۰ ۹۴/۱۲/۲۱
NimaNikoee

نظرات  (۱)

 واقعا سایت کاملی دارید

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی