صفر تا صد ساخت بازی با سی شارپ 2#
دارالترجمه رسمی
دارالترجمه رسمی پارسیس شامل خدمات ترجمه رسمی و تخصصی در بیش از 60 زبان زنده دنیا
دارالترجمه رسمی پارسیس شامل خدمات ترجمه رسمی و تخصصی در بیش از 60 زبان زنده دنیا
افزونه های سئو وردپرس
بهترین افزونه های سئو وردپرس به صورت کاملا فارسی
بهترین افزونه های سئو وردپرس به صورت کاملا فارسی
افزونه فرم ساز آسان
فرم ساز آسان اولین فرم ساز کاملا فارسی وردپرس
فرم ساز آسان اولین فرم ساز کاملا فارسی وردپرس
خرید ورق گالوانیزه رنگی
خرید انواع ورق گالوانیزه رنگی با بهترین قیمت
خرید انواع ورق گالوانیزه رنگی با بهترین قیمت
کارگاه رویه کوبی در تهران
بهترین کارگاه رویه کوبی و تعمیر مبل راحتی و استیل در تهران با قیمت و کیفیت عالی
خودتان را اینجا معرفی کنید
بهترین کارگاه رویه کوبی و تعمیر مبل راحتی و استیل در تهران با قیمت و کیفیت عالی
در جلسه قبلی برنامه Visual studio 2015 را نصب کردیم و یک پروژه جدید ساختیم و به اختصار در مورد محیط VS 2015 صحبت کردیم . در این جلسه کمی بیشتر با این محیط کار می کنیم و کد نویسی می کنیم و با مفاهیم اولیه مثل متغییر ها و انواع داده ، متدها و رخدادها آشنا می شویم .
متغییرها
متغییر به چیزی گفته می شود که قابل تغییر باشد. یک متغییر ممکن است در طول برنامه چندیدن بار تغییر کند. زندگی انسان را در نظر بگیرید ، نام انسان در سراسر زندگی او ثابت است ولی سن چیزی است که در هر برهه از زندگی انسان تغییر می کند پس متغییر است . در برنامه های کامپیوتری نیز گاهی نیاز داریم تا تغییراتی در مقدار یک عدد یا محتوای یک نوشته ایجاد کنیم. به این منظور از متغییر ها کمک می گیریم. در سی شاپ متغییر ها انواع مختلفی دارند که بسته به کاری که قرار است انجام شود ، نوع این متغییرها مشخص می شود ، بعنوان مثال برای کار با اعداد باید متغییر را از نوع داده عددی تعریف کنیم و برای کار با حروف ، کلمات و یا جملات باید متغییر را از نوع داده رشته ای تعریف کنیم . زمانی که یک متغییر تعریف می کنیم ، در واقع یک بخشی از رم به آن اختصاص داده می شود و بسته به نوع داده ای متغییر ، حجم فضای اشغالی در رم متفاوت خواهد بود. متغییر ها باید اسم داشته باشند و این اسامی نباید تکراری انتخاب شوند . در سرتاسر برنامه ما از طریق همین اسامی با متغییر ها کار می کنیم. نام گذاری متغییرها قواعدی دارد که باید رعایت شوند ، در غیر این صورت برنامه دچار خطا می شود. در زیر قواعد نام گذاری متغییر ها و همچنین انواع داده آورده شده اند.قواعد نام گذاری متغییرها
1 – اسم یک متغییر نباید با عدد شروع شود مثل 5X اما می تواند با عدد تمام شود یعنی X5.2- نباید از کلماتی که قبلا توسط سی شارپ استفاده شده اند استفاده کنید . به این کلمات ، کلمات رزرو شده یا کلمات کلیدی گفته می شود . مثل int,string,float,double (کلماتی که به رنگ آبی نوشته می شوند)
3- در نام گذاری متغییر ها امکان استفاده از کارکترهای *،+،-،/،... وجود ندارد مثلا : +total* ، result نام گذاری به این شکل اشتباه است .
4- در نام متغییر نباید از فاصله استفاده کرد مثلا : d total این نام نیز اشتباه است.
5- تنها کارکتری که مجاز به استفاده ازآن در نام گذاری متغییرها هستید کارکتر (underline (_)) است مثلا : X_name , total_result اینگونه نام گذاری بلامانع است.
نوع های داده ای (Data type)
int (برای تعریف اعداد صحیح استفاده می شود. مانند : 28)string (برای تعریف رشته ها استفاده می شود. مانند : MajidOnline)
char (برای تعریف یک حرف تنها یا همان واژه نه یک کلمه یا جمله استفاده می شود. مانند : a,c,x)
float (برای تعریف اعداد اعشاری با دقت 7 رقم استفاده می شود )
double (برای تعریف اعداد اعشار با دقت اعشار 16 رقم استفاده می شود)
boolean این نوع از داده فقط دو حالت دارد: True به معنی درست و False به معنی غلط .
*نکته : برای دیدن تمام نوع های داده ای و حافظه مورد نیازشان و همینطور بازه عددی شان می توانید به اینجا سر بزنید.
نحوه تعریف متغییر
برای تعریف متغییر باید بصورت زیر عمل کنید :مقدار = نام متغییر نوع داده ;
int x = 5 ;
string name = “ali” ;
متد یا همان تابع
فرض کنید که می خواهید یک برنامه ای بنویسید که در برنامه شما یک سلسله کار مشخص قرار است در جاهای مختلف برنامه چندین بار اجرا شود. بعنوان مثال با گذشت هر چند خط از برنامه یک پیغام چاپ شود و شماره خط آن قسمت را نمایش دهد . آیا این سلسله کد را هر جا از برنامه که می خواهید پیغام نمایش دهده شود کپی می کنید؟ در این صورت که حجم کد بسیار زیاد می شود، ضمنا اگر قرار در آینده تصمیم به تغییر پیغام گرفته شود ، در این صورت باید بگردید و هر جا که از این قطعه کد استفاده شده است پیدا کنید و آن را تغییر بدهید . حالا فرض کنید این برنامه دارای 10000 خط کد باشد و این پیغام در 500 قسمت مختلف کپی شده باشد. براحتی متوجه می شوید که این کار بسیار دشوار است . پس راه حل چیست ؟ راه حل استفاده از متد (تابع) است. توابع همان مفهوم ریاضی خود را دارند. توابع می توانند دارای هیچ یا چند ورودی باشند و همچنین می توانند دارای هیچ یا چند خروجی باشند. به زبان ساده تر ، اینطور می شود بیان کرد که ما به متد تعدادی ورودی می دهیم و متد به ما تعدادی خروجی می دهد. در واقع متدها زیر برنامه هایی هستند که خارج از بدنه اصلی برنامه تعریف می شوند و می توانند در بدنه اصلی برنامه یا دیگر متدها چندیدن بار فراخوانی شوند . استفاده از متد باعث کاهش حجم کد شده و همچنین از تکرار کد جلوگیری می کند و منجر به شکل گرفتن نظم کلی در برنامه می شود . این نظم کمک بزرگی به مدیریت برنامه می کند.نحوه تعریف متد (تابع) :
(ورودی ها) نام تابع نوع خروجی
{
قطعه کدی که باید اجرا شود
}
نوع خروجی تابع چیست ؟ هر تابع مسئول انجام عملیاتی است و ممکن است که از این عملیات نتیجه ای حاصل شود. بعنوان مثال : یک تابع را در نظر بگیرید که عملیات جمع دو عدد را انجام می دهد. اعداد صحیح a , b گرفته و با هم جمع می کند و حاصل جمع را بر می گرداند. پس خروجی تابع باید از نوع اعداد صحیح (int) باشد.
قطعه کدی که باید اجرا شود
}
int sum(int a, int b)
{
int result = a + b;//جواب عملیات جمع را در متغییر نتیجه قرار می دهد
return result;
}
*نکته : در عملیات انتساب(مساوی) ابتدا سمت راست مساوی اجرا می شود سپس در سمت چپ مساوی کپی می شود.{
int result = a + b;//جواب عملیات جمع را در متغییر نتیجه قرار می دهد
return result;
}
*نکته : کلمه return یک کلمه کلیدی است. در توابع برای خارج کردن نتیجه از این کلمه کلیدی استفاده می کنیم.
قواعد نوشتاری
هر زبانی قواعد نوشتاری خود را دارد ، زبانهای برنامه نویسی هم از این قاعده مستثنا نیستند و شما باید از قوانین نگارشی آن زبان برنامه نویسی پیروی کنید. در غیر این صورت برنامه شما دچار خطای نوشتاری خواهد شد و اجرا نخواهد شد.1 - هر خط از کد باید به علامت (;) "سمی کامن" تمام شود.
2 - هر بلاک از برنامه باید با علامت { شروع و با علامت } تمام شود.
3 - برای نوشتن توضیحات یک خطی از علامت // استفاده می شود و برای نوشتن توضیحات چند خطی ابتدا باید توضیحات را با /* شروع کرد و در پایان توضیحات */ قرار داد. هر چند خط که بین این دو علامت قرار داشته باشد توضیح به حساب می آید و بخشی از برنامه محسوب نمی شود در نتیجه کامپایلر از آن قسمت می گذرد . در سی شارپ توضیحات به رنگ سبز نوشته می شوند.
امتحان کنید 1 :
برنامه Visual studio را اجرا کنید . پروژه قبلی که ساختید را باز کنید یا می توانید یک پروژه جدید بسازید . چون قبلا یک فرم داشتیم فعلا فرم جدیدی نمی سازیم و با همان فرم قبلی کار می کنیم. اگر ابزاری را از جعبه ابزار به فرم اضافه کردید آن را پاک کنید . حالا یک صفحه تمیز و آماده برای کار داریم ، ولی این فقط ظاهر برنامه است و هیچ کاری برای ما انجام نمی دهد ، درست مثل یک ماشین است که بدنه دارد ولی از موتور و دیگر تجهیزات داخلش خبری نیست . خب مسلما این ماشین قادر به حرکت نخواهد بود . پس حالا چطور باید موتور محرک برنامه را اضافه کنیم. برای اینکار روی Form1 کلیک راست کنید، گزینه View code را انتخاب کنید یا می توانید کلید F7 را بزنید. یک صفحه مثل تصویر زیر باز می شود.این صفحه در واقع زیر کاپوت Form1 است یعنی موتور برنامه قرار می گیرد و تمام کدهایی که برای اجرای برنامه لازم هستند در این قسمت نوشته می شوند.
همانطور که می بینید چند خط کد توسط ویژوال استودیو نوشته شده است ، ما با آنها کاری نداریم .تنها کمی توضیحات در مورد این کدها کافیست تا متوجه عملکرد آنها بشوید.
در ابتدا چند خط با کلمه using (به معنی استفاده کردن) شروع شده اند. با استفاده کلمه کلیدی using از کدهای که قبلا نوشته شده اند استفاده می کنیم.این کار باعث ساده تر شدن کار ما می شود و دیگر لازم نیست همه چیز را از اول برنامه نویسی کنیم . کنترل هایی که روی فرم قرار دادیم هم قبلا برنامه نویسی شده بودند و ما فقط ازآنها استفاده کردیم ، تنها با اضافه کردن این خط using System.Windows.Froms ما توانستیم از کنترلهای درون جعبه ابزار استفاده کنیم.
فعلا از خطوط 10 و 12 عبور می کنیم و بعدا در موردشان صحبت خواهیم کرد . اما این را بخاطر داشته باشید که تمام برنامه های که ما خواهیم ساخت این خطوط را خواهند داشت و اما خط 14 چیست؟ هر برنامه دارای یک تابع آغازین است که برنامه از آن تابع شروع می شود . این تابع در تمام فرمهای که درست می کنیم وجود دارد و هم نام با فرم است.
خب حالا که تا حدودی با قسمت کد برنماه آشنا شدید ، بهتر است به کار اصلی برگردیم و با چند تا از کنترلهای داخل Toolbox آشنا بشویم.به قسمت طراحی فرم یک برگردید و از توی جعبه ابزار قسمت Common Controls را باز کنید ، کنترل Label را بگیرید و بکشید و روی Form1 رها کنید. روی آن کلیک کنید تا انتخاب شود ، حالا روی تب Properties که در سمت راست صفحه است کلیک کنید سپس دکمه پین بالای پنجره Properties را بزنید تا در جای خودش قفل شود .حالا صفحه شما باید به صورت زیر باشد :
هر کنترل ویندوزی که ما ازش استفاده می کنیم تعدادی ویژگی دارد، مثل : نام ، متنی که باید نمایش داده شود ، طول و عرض ، محل قرار گرفتن کنترل در صفحه و ... که به هر کدام از این ویژگی ها Property گفته می شود. پنجره Properties تعدادی از این ویژگی ها را که در محیط طراحی قابل تغییر هستند را برای ما نمایش می دهد ، بعدا بیشتر در مورد Property ها صحبت می کنیم.
اکنون یک کنترل از نوع Label روی صفحه داریم .کار کنترل Label همانطور که از اسم آن مشخص است ، برای نمایش متن کنار یک کنترل دیگر استفاده می شود . روی label1 کلیک کنید ویژگی Text را پیدا کنید می بینید که عبارت Label1 برای این متغییر ثبت شده است یعنی دقیقا عبارتی که روی فرم دیده می شود . این ویژگی را به This is a test تغییر دهید . یک کنترل Button به فرم اضافه کنید . ویژگی Text کنترل را به Click me! تغییر دهید. ویژگی Name دکمه را به btn_ChangeText تغییر دهید ( btn مخفف Button است. در این دوره از این سبک نام گذاری استفاده می کنیم مانند : lbl بجای Label ). روی دکمه ای که اضافه کردید دوبار کلیک کنید، با اینکار وارد قسمت کد می شوید ، مشاهده می کنید که چند خط کد دیگر به کدهای قبلی اضافه شده است .(کد زیر)
private void btn_ChangeText_Click(object sender, EventArgs e) { }
حالا اگر بخواهید برای رخداد دابل کلیک label1 برنامه بنویسید کافیست تا label1 را انتخاب کنید و از قسمت رخداد ها ، رخداد DoubleClick را پیدا کنید و روی آن دوبار کلیک کنید.می بینید که یک رخداد برای label1 اضافه شد و اگر از این به بعد در زمان اجرای برنامه بر روی label1 دابل کلیک شود قطعه کد داخل این متد اجرا خواهد شد. پس مفهوم رخداد یا همون Event را متوجه شدید . به قسمت کد برگردید و درون رخداد مربوط به کلیک دکمه Click me! این کدها رو اضافه کنین.
private void btn_ChangeText_Click(object sender, EventArgs e) { label1.Text = "Button change text is clicked”; }
*نکته : برای دسترسی به یک ویژگی از یک کنترل در محیط کد اول اسم اون کنترل را می نویسیم بعد یک (.) می گذاریم و بعد اسم اون ویژگی را می نویسیم . البته به محض اینکه (.) را بزنید خود ویژوال استودیو تمام ویژگی ها را بصورت یک لیست مرتب شده نمایش می دهد . اگر این منو نمایش داده نشد یعنی اشتباه تایپ کرده اید و یا اگر پنجره را بستید کلید Ctrl+space را بزنید دوباره نمایش داده می شود.
داخل رخداد دابل کلیک label1 کد زیر را قرار بدید.
private void label1_DoubleClick(object sender, EventArgs e) { string t = "label1 is double-clicked”; label1.Text = t; }
برنامه را اجرا کنید و روی دکمه کلیک کنید می بینید که متن label1 تغییر می کند . این بار روی label1 دوبار کلیک کنید مشاهده می کنید که متن label1 به جمله ای که در رخداد دابل کلیک label1 نوشته بودید تغییر می کند.
چگونه کار می کند :
در قسمت رخداد کلیک btn_ChangeText ویژگی Text از label1 را مقدار دهی کردید و چون ویژگی Text از نوع داده ای string است از علامت گیومه برای متن استفاده کردید و در قسمت رخداد دابل کلیک label1 یک متغییر از نوع داده ای string (رشته ای) تعریف کردید و متن مورد نظر را داخل آن قرار دادید و بعد اون متغییر را مساوی با ویژگی متن label1 قرار دادید . به این وسیله نحوه تعریف متغییر رشته ای را با هم دیدیم.دوباره به قسمت طراحی بگردید و روی فرم کلیک کنید و به قسمت رخدادها تو پنجره Properties بروید و روی رخداد load دوبار کلیک کنید تا این رخداد ساخته شود. در داخل این رخداد کد زیر را وارد کنید و برنامه را مجدا اجرا کنید.
private void Form1_Load(object sender, EventArgs e) { int a = 5; int b = 7; int c; c = a + b; MessageBox.Show(c.ToString()); }
فکر می کنم برای این جلسه کافی باشد . امیدوارم که خسته نشده باشید . پیشنهاد می کنم اون دسته از دوستانی که تازه کار هستند حتما تمام کد ها را خودشون بزنند تا بهتر متوجه بشوند . اما برای تمرین بیشتر می توانید گشت و گذاری در رخداد های مختلف کنترل ها داشته باشید و ببینید هر کدوم چه زمانی رخ می دهند.
نظرات و سوالات کاربران
لطفا این توضیحاتتون تداوم داشته باشه
من سال سوم کامپیوترم
با سی شارپ کاملا آشنام
در مسابقه ساخت بازی های رایانه ای با سی شارپ شرکت کردم،الانم دنبال آموزش های بیشتر و ایده های خاصم...
مرسی که به فکر پیشرفت کشورین و وقتتون رو صرف آموزش میکنید.