کـــاش منبعو ذکر میکردی
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
کـــاش منبعو ذکر میکردی
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
یعنی اول سوال نمی کنن فقط می خواد یه چیزی گفته باشن .
مرد حساب منبع کیلو چنده ؟؟؟ تنها کمکی که من دارم از اون سایتی که دادی می گیرم اینه که بر اساس سرفصل هایی که گفته دارم جلو می رم
یعنی واقعا .......
قسمت 10 :
محتوا : تمرین 2
در این بخش فرا خواهیم گرفت که چگونه می توانیم تکسچر اطلس ها را در سکانس رسم کرده و از آن ها استفاده کنیم .
شروع :
ابتدا پروژه جدیدی را ایجاد کنید .
ما در این مثال می خواهیم ساختار کار با تکسچر ها را یا به عبارتی می توان گفت ساختار Texture Navigator را از ابتدا پیاده سازی کنیم .
برای این کار ما باید کلاس مربوط به انجام این کار را در پروژه خودمان به وجود بیاوریم .
برای انجام این کار در محیط ویژوال استدیو سمت چپ که مکان Sulotion شما قرار دارد بر روی فایل پروژه خود راست کلیک کرده و از قسمت Add گزینه Class را انتخاب کرده نام کلاس را برابر با AnimatedSprite قرار داده و گزینه Add را زده تا کلاس ایجاد شود.
از انجایی که کلاس فوق یک کلاس خالی است و فعلا هیچ دسترسی به منابع MonoGame ندارد باید هدر های ان را اضافه کنیم .
برای انجام این کار دو هدر زیر را اضافه کنید :
کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اکنون باید چند متغییر به کلاس برنامه خود اضافه کنیم
متغییر فوق وظیفه نگه داری تکسچر ما را به عهده دارد .کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
این دو متغییر جهت نگه داری مقادیر سطر و ستون محل واقع شدن هر تکسچر به کار می رودکد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اولین متغییر جهت مشخص کردن فریمی که در حال حاظر در آن قرار داریمکد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
و دومین متغییر نیز برای نگه داری تعداد فریم های نهایی می باشد
به دلیل اینکه ما میخواهیم از این کلاس به صورت یک نمونه در کلاس اصلی خودمان استفاده کنیم پس باید متد مولد فرم را نیز به ان اضافه کنیم تا بتوانیم از کلاس های دیگر به این کلاس دسترسی داشته باشیم . توجه داشته باشید که نوع متد را Public تعریف کرده تا دسترسی بدون مشکل باشد
کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
توجه داشته باشید که متد مولد این کلاس باید سه مقدار :
تکسچر
سطر
و ستون را در خود داشته باشد برای همین آن ها را به مقادیر متد اضافه می کنیم
کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
و در ادامه شروع می کنیم به مقادیر دادن
سپس مقدار اولیه فریم جاری را برابر با 0 قرار دادهکد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
همچنین برای به دست اوردن مقدار نهایی یعنی مقدار کل نیز باید سطر را ضرب در ستون کنیمکد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اکنون کار متد مول تمام شده و باید متد دیگری را ایجاد کنیمکد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
در اینجا متد Update() را برای این کلاس ایجاد کنید .
توجه کنید که دسترسی را برابر با Public قرار داده تا بتوان هنگام استفاد از مقادیر آن به مشکلی بر نخورد .
در اینجا وظیفه این متد این است که فریم جاری ما را به فریم بعدی ببرد برای همین باید مقدار شمارنده متغییر فریم جاری را در این متد +1 کنیمکد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
همچنین شریط نیز تعیین کنیم که هنگامی که فریم جاری برابر با تعداد کل فریم های موجود شد و اسپرایت انیمیشنی یک بار خوانده شد مقدار فریم جاری دوباره برابر با 0 شود
کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
با پایان یافتن کار این متد باید مهم ترین متد این کلاس را به وجود بیاورید . این متد در واقع وظیفه مدیریت فرایند کشیده شدن تکسچر و اجرای ان را بر عهده می گیرد .
هدف در این متد این است که ما بتوانیم تصاویر مربوطه را در یک قالب مشخص نمایش دهیم .
جهت انجام ان باید مجموعه کارهای فوق را انجام دهیم .
همانطور که بیان شد هدف نمایش یک تصویر از مجموعه اطلس و سپس اجرای تصاویر دیگر مجموعه به دنبال آن است تا بتوان نمایشی از یک مجموعه انیمیشنی در تصویر فوق داشت. از انجایی که ما در کار با این فریم ورک فاقد هرگونه ادیتور جهت دسترسی به هر سطر و یا ستون هستیم باید خودمان این دسترسی را ایجاد کنیم .
جهت انجام این کار باید کمی بازی و ریاضی ساده ای انجام دهیم .
همانطور که تصویر فوق را مشاهده کرده اید مدل اطلس ما یک تصویر با اندازه 256 در 256 می باشد.
چون در این حالت هر کدام از اسپرایت های مجموعه اطلس تشکیل یک مربع را می دهند برای دسترسی به آن ها ما هم باید مجموعه اسپرایت اطلس خودمان را به مربع های کوچک تقسیم کنیم به این صورت که برای به دست اوردن عرض باید عرض تصویر موجود را در تعداد ستون تقسیم کنیم
همانطور که در تصویر هم می توان مشاهده کرد عرض تصویر ما 256 بوده و ستون 4 با تقسیم این دو بر هم مقدار عرض تصویر که برابر با 64 است به دست خواهد امد.
برای به دست اوردن طول تصویر نیز همین مراحل را تکرار می کنیم با این تفاوت که اینبار طول تصویر را تقسیم بر تعداد سطر می کنیم .
که اینبار هم می توانید مشاهده کنید عدد فوق برابر با 64 خواهد بود . اگر تصویر را هم با دقت مشاهده کنید می توانید متوجه شوید که این مختصات در برگیرنده یکی از آن اسپرایت ها می باشد با این کار ما توانستیم طول و عرض موقعیت هر کدام از اسپرایت ها را به دست بیاوریم .
همانطور که گفته شد در این حالت و در این کلاس ما ساختار به اصطلاح sprite reader را به وجود میاوریم بنابراین باید علاوه بر به دست اودن مقادیر طول و عرض باید مقادیر مربوط به سطر و ستون فریم جاری را نیز به دست بیاوریم .
ابتدا برای به دست اوردن سطر ما باید فریم جاری را تقسیم بر تعداد کل ستون کنیم
و برای به دست اوردن ستون ما باید همان فریم جاری را اینبار تقسیم باقیمانده بر تعداد کل ستون ها بکنیم .
با استفاده از این راه مقدار سطر و ستون در ناحیه مورد نظر به دست می اید .
در مرحله بعد ما دو مستعطیل نیاز داریم . که اولی برای قرار گرفتن کل تکسچر اطلس بر روی آن و دومی جهت اعمال محاسبات بر روی ان است .
و در انتها اعمال تابع Draw در این متد و نسبت دادن مقادیر فوق به آن
کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
* در صورت نامفهموم بودن کد نگران باشید در بخش های اینده مثال های متعددی از این توع را بررسی خواهیم کرد .
قسمت 10 :
بخش اخر
استفاده از متد :
در دو دقسمت قبل با مفهمون تکسچر اطلس اشنا شده و توانستیم ساختار اجرایی آن را به وجود بیاوریم . در اینجا می خواهیم آن را استفاده کنیم .
جهت انجام این کار ابتدا تکسچر اطلس مورد نظر خود را در متد LoadContent بارگزاری می کنیم .
کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
سپس یک متغییر از نوع کلاسی که در بخش قبل ساخته ایم ایجاد می کنیم
و ان را نمونه سازی می کنیمکد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
مقدار Texture بیان گر متغییر تکسچری است که ما در متد LoadContent ان را بارگزاری کرده ایمکد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
و دو مقدار 4 نیز نمایش دهنده سطر و ستون تکسچر اطلس ما می باشد .
اگر فراموش نکرده باشید ما در متد Update در کلاس قبلی خود ساختار اجرای فریم های اسپرایت اطلس خود را ایجاد کرده بودیم
با اشاره به همان متد می توانیم فریم های اسپرایت اطلس خودمان را اجرا کنیم .
برای اجرا کد فوق را در متد Update کلاس اصلی بازی خود قرار دهیدکد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
و در انتها با استفاده از دستور Draw تکسچر را رسم می کنیم .
کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
خروجی :
پایان قسمت 10
عنوان : چرخش
یه مثال جالب توی سایت منبعی که دارم برای اموزش ازش استفاده می کنم دیدم که بهتر دونستم بیام اینجا بگم
خب هدف اینه که توی این جا یه تصویر رو بگیریم و بچرخونیم دور خودش
لینک دانلود :
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
خب کنتنت رو وارد نرم افزار می کنیم طبق روشی که توی قسمت های قبلی یاد گرفتیم
یک متغییر از نوع texture2d ایجاد کرده تا تکسچرمون رو بتونیم در اون قرار داده و استفاده کنیم
کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
خب تکسچر رو مقدار دهی می کنیم و خورشید رو وارد می کنیم
کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
برای شروع اولین کاری که می کنیم اینه که تکسچر رو روی صفحه رسم کنیم .
اولین کار اینه که مثل قبل تکسچر رو رسم کنیم
کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
خب اینجا از یه مستطیل استفاده کردیم تا بتونیم هم موقعیت و هم اندازه رو هم با هم داشته باشیم
یک بار اجرا کنید تا بتونید اولین خروجی رو ببینیم :
خب در اینجا باید یه مقدار رو تعریف کنیم تا با به روز رسانی مقدار داخلی خودش مقادیر مورد استفاده ما رو بهمون بده
برای همین یه متغییر float توی تابع update تعریف میک نیم تا به روز بشه
float Angle +=0.01f
خب الان این توی هر تیک مقدارش اضافه میشه
در ادامه توی متغییر Draw باید یک سری مقادیر رو اضافه کنیم
اول مقدار Location مربوط به تصویر شما
یه متغییر از نوع برداری دو بعدی
در مرحله دوم باید متغییری رو تعریف کنیم که مکان فعلی رو توی خودش نگه میدارهکد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
سپس و در ادامه باید متغییر مربوط به بک گراندی که تصویر روش قرار می گیره رو تعریف کنیمکد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
خب حالا Draw رو اینجوری باید تغییر بدیم
مقادیر :
به ترتیب
-- نام تصویر
--- Location (مختصاتی که قرار توی صفحه قرار بگیره)
--- همون بگ گراندی که گفته بودم بالا
--- رنگ
-- مقدار چرخش (ما چون می خوایم اون رو بچرخونیم یه متغییر از نوع شناور تعریف کردیم که دائم اضافه میشه پس از اینجا می تونه تصویر رو بچرخونه)
-- مکان اولیه
-- اندازه
-- چینش تصویر
-- عمق
خب حالا کد رو اینجوری می نویسیم
کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
خب اجرا کرده و نتیجه رو می بینیم .
می تونین مشاهده کنین که یک خورشید قول اسایی داره وسط صفحه می گرده . خب ولی حالا می خوایم یه کار دیگه کنیم تااین خورشید از وسط شروع کنه به چرخیدن
برای این کار باید متغییر مکان فعلی رو اینجوری تغییر بدیم
حالا وقتی که اجرا کنیم می بینیم که از وسط در حال چرخشهکد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
ولی یک مشکل وجود داره و اونم اندازه این تصویره . در اینجا کمی کوچیکتر می کنیم
برای این کار می تونید متغییر scale اندازه تصویری رو که توی متد Draw استفاده کردیم رو کوچیکتر کنیم
اگه باز هم مشکلی وجود داره مقادیر و بازه ها رو تغییر بدین تا درست بشه .
برای اخر کار هم برای تنوع رنگ پیش زمینه رو هم تغییر می دیم . برای اینکار باید صفحه یک بار با اون رنگ پاک بشه . دسترسی به این متغییر توی متد Draw قرار دارده
ما رنگ رو سفید کردیم تا قشنگ تر بشه )کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
خروجی :
خب با این تمرین مبحث مربوط به کار با اسپرایت های دو بعدی تموم میشه و میریم سراغ ساخت یه پروژه تمرینی . البته قبل از اون یه سری قسمت ها هم باید در مورد input بیاد که از اونطرف واسه سه بعدی عقب نیفتیم
تمرین : بازی با رنگ ها
هدف از این تمرین اینه که بیایم سه سری رنگ رو با یه انیمیشن جالب با هم دیگه ترکیب کنیم
رنگ هایی که ما توی این تمرین از اون استفاده می کنیم شامل :
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
مثل قبل اونها رو وارد پکیج بازی بکنید.
ما برای این رنگ ها از سه متغییر Red . Blue .Green استفاده خواهیم کرد . پس این سه متغییر رو تعریف می کنیم
کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
سپس سه تکسچر مورد نظر رو از طریق متد LoadContent وارد می کنیم
کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
پس از این کار برای شروع اولین تکسچر رو مثل قبل بر روی سکانس رسم می کنیم
کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اولین کاری که ما می خوایم انجام بدیم به حرکت در اوردن این تصویره که نمونه اون رو توی قسمت قبلی باهم دیدیم .
برای این کار باید خواص Destanation ای که زمان رسم در اختیار می گیریم رو تغییر بدیم . این مقدار همون مقدار Location توی مثال قبلیه .
پس برای این کار باید یک متغییر جدید تعریف کنیم .
از اونجایی که این مقدار باید یک ورودی از نوع برداری داشته باشه یک متغییر برداری تعریف می کنیم
و کد رو اینجوری تغییر می دیم :
کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
از اونجایی که هدف متحرک بودنه پس طبیعتا باید یک اهرم فشار دینامیکی هم برای انجام لحظه ای این کار وجود داشته باشه . برای اینکار ما یک مقدار را به عنوان مقدار جمع کننده ای که با هر تیک انجین اضافه میشود را باید تعریف کنیم .
برای این کار یک متغییر از نوع float در قسمت Update تعریف کنید
کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
و مقدار اون رو برابر با 0.01f قرار بدین
با این کار تا زمانی بازی متوقف نشه متغییر سرعت یک صدم یک صدم اضافه میشهکد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اینبار به متد Draw بر می گردیم
اگر توجه کرده باشید ما در ابتدای هر رسم خود از یک متد شروع و پایان استفاده می کنیم . در اصل این دو متد ساختار از زمان شروع شدن رسم تا پایان آن را در خود نگه می دارند پس قاعدتا می توانند نوع و چگونگی رسم را نیز در خود داشته باشند . اگر محتویات SpriteBach.Begin را مشاهده کنید می توانید ببینید که دو مقدار که یکی جهت نگه داری نوع چینش و دیگری برای نگه داری نوع تعویض به کار می رود .
قبل از ادامه کار کد زیر را به این قسمت اضافه کنید تا تاثیر استفاده از محتویات این قسمت ها را مشاهده کنید
کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
به نظر میرسه که اندازه ای این تصویر کمی بزرگه که باید کوچیک تر بشه برای این کار کد رو به این صورت تغییر میدیم
کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
کمی بهتر شد . حالا باید بر روی حرکت دادن این تصویر تمرکز کنیم . برای این کار تنها راهی که میشه ازش استفاده کرد حرکت به صورت دایره ایه که بخوایم تصویر ریاضی هم داشته باشیم اون رو می تونیم با ترکیب محور ها با متغییرهای سینویسی و کسینوسی رسم کنیم . برای این کار کد رو به این صورت تغییر میدیم
کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
همونطور که مشاهده می کنید ما محور x رو برابر با سینوس بر اساس سرعت قرار دادیم و اون رو ضرب در 100 کردیم و محور y رو هم برابر با کسینوس قرار داده و اون رو هم ضرب در 100 کردیم .
یک بار دیگه اجرا خواهیم گرفت تا خروجی رو با هم ببینیم :
اینطور که به نظر میاد مختصات کمی بهم بخوره . کد بخش رسم رو به این صورت تغییر میدیم تا بتونیم اون رو درست کنیم
خب دایر ه اول با موفقیت رسم شد سعی کنید مقادیر رو تغییر بدین تا بتونین دایره رو به وسط سکانس منتقل کنیدکد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
خب بعد از این کار باید دایره دوم رو رسم کنیم .
هدف در این جا اینه که این دایره به دور دایره قبلی که رسم شده رسم بشه.
طبق معمول پس از فراخونی دایره دوم باید اون رو در سکانس رسم کنیم .
سپس برای شروع تمام مقادیر دایره جدید رو مثل دایره قبلی قرار میدیم .
اجرا کرده تا نتیجه رو مشاهده کنید
کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
همونطور که میبینید دو رنگ با یکدیگر ترکیب شده اند که این موضوع نشان دهنده کاربرد دو مقدار متد Begin در این قسمت می باشد
ما با استفاده از همان متغییر برداری RedMove می خواهیم نحوه حرکت این تصویر را نیز به وجود بیاوریم پس مانند کد زیر عمل کنید
کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
در اینجا ما فقط مختصات و همچنین اندازه را تغییر داده ایم
یک بار دیگر خروجی را مشاهده می کنیم
همونطور که مشاهده می کنید یک تصویر جالب به وجود امده
خب با تصویر سوم هم هر کاری دلتون می خواد بکنین )
طی این تمرین ما تونستم یاد بگیریم که چه طوری تصاویر رو با شیوه های مختلفی با هم ترکیب - تعویض کرد . توجه کنید که می تونید از این قابلیت بسیار مفید در هر جایی از بازی برای زیبا تر شدن خروجی نهایی استفاده کنید
Last edited by silsin; 21-05-2013 at 21:57.
حسن جان خیلی جالبه . این ابزار رایگانه یا نه؟یعنی تحریم نیستیم یا ؟
ممنون
MonoGame به خودی خود رایگانه رایگانه و اوپن سورس . بیشترین دلیلی که ملت میرن سراغش اینه که علاوه بر مولتی پلتفرم بودن خروجی هاشه و همچنین قابلیت کار کردن با دایرکت ایکس 11
باشه داداش چرا ناراحت میشی حالا
ورودی های صفحه کلید
از این بخش تا چند قسمت اینده مسائل و چگونگی استفاده از ورودی های صفحه کلید رو با هم بررسی خواهیم کرد
مقدمه :
میشه گفت ضروری ترین مسئله در یک بازی رایانه ای دریافت ورودی از بازیکن می باشد چه این ورودی شامل صدا و یا تصویر باشد و چه ورودی گیم پد و یا صفحه کلید . بدون اینها بازی ما فقط یک نمونه انیمیشنی به شمار میره. ما در این اموزش نگاهی اولیه به چگونگی دریافت و پردازش ورودی ها از کاربران خواهیم پرداخت و در اموزش های اینده پوشش بیشتری بر تمامی حالا ممکن این کار خواهیم داشت
ورودی های صفحه کلید :
میشه گفت انجام این کار یعنی دریافت ورودی از صفحه کلید واقعا یه کار ساده است که میشه با ساده ترین و سریعترین راه این کار رو انجام داد .
مطمئنا اگه سری های قبل اموزش رو دنبال کرده باشین در قسمتی که ما عملگرد هر بلاک از متد ها رو مورد بررسی قرار می دادیم گفتیم که از متد Update که تا انتهای بازی اجرا میشود علاوه بر استفاده های دیگر برای دریافت تمامی ورودی های کاربر استفاده می کنیم . پس مسلما بهترین مکان هم برای دریافت ورودی ها همین جا میباشد
برای شروع ما باید ببینیم که چگونه می تونیم به ورودی های صفحه کلید دسترسی داشته باشیم .
کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنیدکلاس صفحه کلید داری متدی برای برگشت دادن وضعیت فعلی صفحه کلید داشته که هر زمانی که اتفاقی برر روی صفحه کلید رخ بدهد این متد صدا زده می شود. .وضعیت فعلی صفحه کلید در شیئ KeybordStat ذخیره می شود. در خط کد بالا ما در واقع وضعیت فعلی صفحه کلید خود را صدا زده ایم .
حال که متغییر صفحه کلید ما با مقدار وضعیت فعلی صفحه کلید مقدار دهی شده ما باید ببینیم که چگونه می تونیم از اون استفاده کنیم . برای محاسبه و تشخیص زمانی که یک کلید فشرده می شود یا نمی شود ما می تووانیم از متد IsKeyDown در کلاس KeyBoardState استفاده کنیم که در زیر می تونید یک نمونه از اون رو مشاهده کنید :
کد PHP:
و یا ما می تونیم از اون به عنوان بخشی از یک شرط استفاده کنیم که هر زمانی که اتفاق افتاد شرط را اجرا کندکد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
کد PHP:همونطور که در اینجا می بینید ما دو مثال از IsKeyDown که هر دو وظیفه برگردوندن مقادیر صحیح و یا غلط رو بر عهده می گیرن رو به کار بردیم .کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
بررسی کلید فشار داده شده :
ما اکنون می خواهیم ببینیم که چگونه می توانیم یک ورودی را از صفحه کلید داشته باشیم . اگر شما می تونید متوجه اون بشین که ما این کد رو قبلا هم استفاده کرده ایم .
کد PHP:این شرط باید مقدار صحیح را هز مانی که کلید مربوطه زده شد را بر گرداند . اکنون بیاید مثالی را با هم انجام داده تا به وسیله ان بتوانیم مقادیر قبل و حال کلید های خود را در اختیار بگیریم .کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
برای این کار ما باید وظعیت قبلی کلید خود را در اختیار داشته باشیم .
مانند قبل باید یک وضعیت جدید برای صفحه کلید تعریف کنیم
کد PHP:
سپس در متد Update کد های زیر را اضافه کنید تا بتواند وضعیت حاظر را دریافت , رسیدگی و وضعیت قبلی را به روز رسانی کند :کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
کد PHP:
در این کد ما فقط یک یک چیز را در داخل وضعیت شرطی قرار دادیم تا هنگامی که اولین کلید زده شد آن نیز اجرا شود.کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
همچینین علاوه بر این کار ما می توانیم وضعیت کلید را در حالت برداشته شدن نیز به دست بیاوریم که این کار با iskeyup انجام خواهد شد .
علاوه بر تمامی اینها کلاس KeyboardStat متد دیگری را نیز در اختیار ما قرار خواهد داد که با استفاده از آن می توانیم کلید های فشار داده شده را نیز شناسایی کنیم . با استفاده از متد GetPressedKeys می توان تمامی کلید های فشار داده شده را در اختیار گرفت . به عنوان مثال ما در قطعه کد زیر می توانیم لیستی از تمامی کلید های فشار داده شده را داشته باشیم :
کد PHP:
عمل دیگری که می توانیم در این قسمت انجام دهیم چند کلیدی بودن صفحه کلید می باشد . به عنوان مثال ما می خواهیم یک عمل را زمانی انجام دهیم که کاربر کلید کار Ctrl + c را با هم فشار میدهد و یا اعمال دیگر برای این کار می توانیم مانند کد زیر این عمل را انجام دهیم :کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
کد PHP:تا اینجا ما با مبحث ساده استفاده از صفحه کلید در یک پروژه بازی به خوبی اشنا شده ایم و توانستیم ورودی های مختلف را از صفحه کلید خودمان در یافت کنیم . در قسمت های اینده با حالت های مختلف و دسترسی های بیشتر همچنین با چگونگی استفاده از کنترل های گوناگون و گیم پد ها نیز اشنا خواهید شدکد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
Last edited by silsin; 23-05-2013 at 14:49.
هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)