ورود

نسخه کامل مشاهده نسخه کامل : آموزش زبان برنامه نویسی گیم میکر (gml)



mst_ab
21-01-2008, 17:08
سلام ؛
راستشو بخواین من خیلی بلد نیستم ولی خوشحال میشم همون چیزی رو که بلدم به بقیه بگم . مدتی روی یک پروژه ی پازل کار می کردم تو طول این مدت تجربه ی کمی بدست آوردم . البته الآن چون دقیقاً موقع امتحانا هستش سخته که هر روز پای کامپیوتر بشینم و درس نخونم ! (دانشجو ها بهتر می فهمن!) ولی قول میدم هر 2-3 روز حتماً تاپیک رو آپ کنم. در هر صورت اگه دوست دارید همین حالا اعلام کنید! منتظر هستم!

mst_ab
22-01-2008, 13:17
خوب! ممنون از نظرات خوبتون!چون هیچکس هیچ نظری نداد من خودم شروع می کنم!::31:
بخش اول : آن چه باید برای شروع بدانید؛
دسته بندی های مختلفی برای زبان های برنامه نویسی ارائه شده که هر کدام بر اساس یک ویژگی زبان را به چند گروه تقسیم میکنن.مثلاً می گن زبان های سطح بالا ، میانی ، پایین.(که ویژگی این نوع تقسیم نزدیکی زبان به زبان انسان است.) یکی از این دسته بندی ها ، دسته بندی بر اساس نوع برخورد کامپایلر یا مترجم زبان ، با خطوط برنامه نویسی است.بر اساس این دسته بندی زبان های برنامه نویسی به دو دسته ی روالی(proceduralیا مرحله ای ) و شئ گرا (object oriented)تقسیم می شوند.حالا هر کدوم چی هستن توضیح میدم:
1-زبان های مرحله ای یا روالی( همون پراسیجرال انگلیسیش بهتره ):در این نوع زبان ها، کامپایلر به ترتیب از بالا خطوط برنامه را می خواند و آن ها را ترجمه می کند.البته این مطلب به این معنی نیست که کامپایلر حق پریدن از روی یک یا چند خط را ندارد و یا دسترسی به خطوطی که از روی آن ها گذشته امکان ندارد (یعنی امکان دارد!)ولی مبنای رفتار این نوع زبان ها خواندن خط به خط خطوط برنامه می باشد.از نمونه های این زبان می توان به زبان های سی ، فرترن ، کیوبیسیک و ... اشاره کرد.

2- زبان های شئ گرا : شما در حال حاضر می توانید اشیاء زیادی را در کنار خود ببینید (شاید هم نتوانید!).مثلاً به در اتاق خودتون نگاه کنید . . . . نگاه کنید . . . . بسه دیگه نگاه نکنید!! .درِ اتاق یک شئ است . این شئ دارای ویژگی هایی است.مثلاً طول و عرض دارد ، جنس دارد ، دستگیره دارد ، رنگ دارد ، پوستر ....... دارد!!!! و البته این در بی خاصیت نیست و می توان با آن کار هایی انجام داد مثلاً دستگیره ی آن را حرکت داد ، آن را به یک طرف باز کرد و ....
حالا با خودتون فکر کنید که کاشکی می شد یه زبان برنامه نویسی درست می شد که به همه چیز مثل یک شئ نگاه کنه.(منظورم بقیه چیزها هست نه خودش).تبریک میگم!! آرزوی شما خیلی وقته که برآورده شده! زبان برنامه نویسی شئ گرا دقیقاً همون چیزیه که شما می خواستین!!.زبان برنامه نویسی شئ گرا همه چیز را شئ می پنداره و برای اونها صفت و خاصیت در نظر می گیره .مثلاً یک دکمه یا یک جعبه ی متنی (که مثلاً مقدار داخلی داره رنگ داره و مثل در خیلی از صفت های دیگه رو هم داره). برای هر شئ ممکنه یک سری اتفاق هایی بیفته و در مقابل شئ یک سری عکس العمل هایی از خودش نشون بده (برای درک بهتر می توانید صدای موزیک کامپیوتر را بلند کنید تا ببینید چه عکس العمل هایی روی شئ شما رخ می دهد!!)بارز ترین مثال برای این نوع زبان ویژوال بیسیک خودمونه ،که انشاءالله اگر بچه ها استقبال کنن خیلی دوست دارم تا آموزش اون رو هم بذارم . زبان شئ گرا رو نباید با خاصیت ویژوال بودن بعضی زبان ها اشتباه گرفت . ویژوال به زبان ساده (که من همیشه طرفدار زبان ساده هستم نه قلمبه !!)یعنی این که با موست بتونی یک چیزی رو توی صفحه ی برنامه بذاری.این قدر ساده شد که خودمم نفهمیدم چی گفتم!
یه چیز دیگه تا یادم نرفته :زبان برنامه نویسی شئ گرا یک سری کد به هم چسبیده نیست یعنی کد های برنامه، برای هر شئ مثل یک دکمه یا متن به صورت تکه های جدا از هم نوشته می شوند و کامپایلر برنامه مدامچک می کنه که آیا برای اشیاء برنامه اتفاقی افتاده یا نه !یک مثال من دراوردی می تونه به شما کمک زیادی بکنه :این دقیقاً مثل این میمونه که مادری دلسوز مدام چک می کنه برای بچه هاش اتفاق افتاده یا نه(مثلاً لباساشونو کثیف کردن یا نه!!) اگه اتفاق نیفتاده بود که هیچی دوباره چک میکنه! ولی اگر اتفاق افتاده بود . . . وای به حال بچه ها !! یک سری تغییرات از پیش تعیین شده ای روشون اجرا میشه!! مثلاً صفت رنگ روی صورت یکی از بچه ها به رنگ قرمز تبدیل می شه!!!..توی محیط زبان های برنامه نویسی شئ گرا هم دقیقاً همینه : کامپایلر مدام چک میکنه که روی اشیاء موجود اتفاقی (Event) افتاده یا نه .(البته کامپایلر فقط یک بار کد ها رو کامپایل می کنه طوری که وقتی اجرا میشه مدام چک میشه نه این که کامپایلر مدام برنامه رو کامپایل کنه! )اگر اتفاق نیفتاده بود که هیچی دوباره چک میکنه ولی اگر اتفاق افتاده بود یک سری عکس العمل هایی (Action) روی اون شئ و حتی اشیاء دیگر رخ می ده (البته الکی رخ نمیده! ما تعیین می کنیم چی رخ بده چی رخ نده !)مثلاً یک دکمه وقتی روی آن کلیک می شود این در واقع یک ایونت یا اتفاق است و در مقابل می توان برای آن اکشنی هم در نظر گرفت مثلاً رفتن به صفحه ای دیگر یا بستن یک پنجره.

حالا شاید بعضی هاتون بگن چرا چرت و پرت میگی اینا چیه داری میگی اینا چه به درد برنامه نویسی گیم میکر می خوره اولین چیزی که شما باید بدونید اینه که زبان GML یا GAME MAKER LANGUAGE یک زبان شئ گرا است.

اگر فکر می کنین خیلی کشش می دم یا شاید بعضی ها از کامپایلر و این جور چیزا هیچی نمی فهمن بگید تا اصلاح کنم. ضمناً ببخشید اگر شوخی کردم می خواستم خسته نشید!
تا نظر ندید بقیه ی داستان رو نمی گم!!!:41::27:

Moh3en_DDD
22-01-2008, 18:27
سلام !

تا آخر برو ... کاوری .. :d

Max2000
22-01-2008, 19:38
به نام خدا
سلام
من دارم خواب مي بينم يا واقعا يه ناجي پيدا شده تا به ما مبتديها كمك كنه
من دربست تو اين تاپيكم
ولي يادتون باشه اول برنامه نويسي دوبعدي بعد كه كاملا دو بعدي آموزش داده شد سه بعدي آموزش داده بشه
و لطفا از سطح مبتدي شروع به آموزش كنيد
در ضمن كدام نسخه گيم ميكر هست؟؟؟!!!

mst_ab
24-01-2008, 13:12
خیلی ممنون از همه، اول جواب ها رو بدم بعد بریم سراغ قسمت دوم داستان!
اول این که من 3d رو دارم تازه یاد می گیرم(از روی هلپ خود برنامه)و هنوز به حدی نرسیدم که بتونم آموزش بدم و 2d هم فهرست خوبی برای ارائه ندارم همین جوری من دراوردی(!) یک فهرست ساختم تا بگم---من قول می دم از مبتدی شروع بشه ولی این که کجا تموم بشه نمی دونم ! (چون خودم مبتدی هستم !) و این بستگی به شما داره که چه جوری با من راه بیاین.
من با ورژن 5 شروع کردم و بعد از 6 الآن دارم از 7 استفاده می کنم ، هنوز به جایی بر نخوردم که تغییراتی در نگارش(syntax) دستورات دیده باشم.البته اون جوری که آقای اورمارس می گفت خیلی از کرش ها و باگ های ورژن های قبلی در ورژن 7 برطرف شده.کرک ورژن 7 گیم میکر ، Loader هست و ممکنه کار با اون یکم اعصابتونو خورد کنه !(ولی من اعصابم قویه!)شما می تونید با همون 6 یا 5 کار کنید .
بنده ی حقیر ناجی نیستم – من حتی تا چند روز قبل نمی دونستم که گیم میکر کامپایلر نداره و به جای اون مفسر داره (که خودش نشونه ی ضعف خیلی بزرگی در منه)من فقط با خوندن E-Book ، هلپ خود برنامه و کتاب خود گیم میکر (که داره تو سایتش تبلیغ می کنه ) یه چیزایی یاد گرفتم و همین الآن هم هنوز تو قسمت 2 بعدی گیم میکر دست و پا می زنم!!!( به قول مشهدی ها غُطّه می خورم!!!).ولی مطمئن باشید تا وقتی 2D تموم بشه منم از تنبلی درمی یام و 3D رو هم شروع می کنم به خوندن. ولی نتیجه ی نهایی کار رو باید از خودتون انتظار داشته باشید نه از آموزش من!


چون فقط در این تاپیک قراره اسکریپت نویسی رو آموزش بدیم قسمت های قبلی گیم میکر رو فاکتور گرفتم(که البته دوستان دیگه لطف کرده بودن آموزش های کاربری گیم میکر رو گذاشته بودن. دونستن این نکته خالی از لطف نیست که تمام چیز هایی رو که توی قسمت اکشن آبجکت های گیم میکر میبینین رو میشه با اسکریپت نویسی گیم میکر پیاده کرد پس کسانی که هیچی در مورد گیم میکر نمی دونن لطف کنن آموزش های قبلی دوستان رو بخونن تا این جا مشکل براشون پیش نیاد .
باز هم اگر دوستان فکر می کنن از اولِ اول ِ اول ِ ..........(!) بگم بهتره ، به من بگین تا این پست رو پاک کنم و از صفر شروع کنم.
البته با شناختی که من از بعضی افراد تاپیک بازی دارم بعید می دونم همچنین چیزی پیش بیاد که هر کدوم در ساخت بازی استاد هستند .
یکم از کلیات گیم میکر می گم بعد بریم سراغ کد نویسی:

mst_ab
24-01-2008, 13:18
بخش اول –قسمت دوم: آشنایی با محیط کار


[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]


این پنجره رو چندین هزار(!) بار دیدید اما آیا دقت کردید جریان مادر و بچه ها دقیقاً این جا برقراره ؟!! (عزیزانی که این موضوع براشون گنگ می زنه پست دوم من را بخوانند!) قسمت های مختلف عکس رو با عدد مشخص کردم.
1-مشخصات کلی آبجکت(=شئ) یا همون بچه(!) مثل اسم بچه ، قیافه ی بچه ، شماره ی کفش !! و این جور چیزا !
2-Events :اتفاق هایی که اگر برای یک بچه بیفته باید تغییراتی روش اعمال بشه (مثلاً اتفاق ِ کثیف شدن لباس!)
3-Actions: عکس العمل هایی که مادر(!)(همون مفسر) در برخورد با اتفاقی خاص مثل کثیف شدن لباس بچه ها از خودش نشون میده. (برای هر اتفاق فرق می کنه)
3.1- دسته بندی اتفاق ها توی این قسمت خاکستریه مثلاً عمل های حرکتی ، عمل های چرخشی! ، عمل های گردشی !!!!(فقط همون اولی رو جدی بگیرید!!!)
3.2-جایی هست که ما باهاش خیلی کار داریم! ولی هنوز خیلی وارد جزئیات نمی شیم!


شرط می بندم که تا حالا این موضوع رو اینجوری نگاه نکرده بودین!
اسکریپت ها رو کجا باید بنویسیم؟ خوب یک جواب منطقی اینه که اسکریپت ها باید یه کاری (عکس العملی ) انجام دهند پس باید در قسمت Actions گذاشته بشن.ولی همین طوری که نمی شه یک عکس العمل ایجاد کرد همون طور که از اسمش معلومه باید یک عمل باشه تا عکس العمل معنی پیدا کنه .پس حتماً یک Event باید قبلش ایجاد شده باشه .
نکته1: Event های Empty یا رویداد هایی که عکس العملی برای اون ها در نظر گرفته نشده به طور خود کار از لیست Events حذف می شوند.
نکته2:ترتیب در لیست رویداد ها مهم نیست امّا در لیست Actions ها اهمیت دارد.


بعد از ایجاد یک Event به تب کنترل برید و توی زیر قسمتcode دو تا گزینه برای ایجاد یک اسکریپت داره یکی Execute code و Execute script حالا فرق این دو تا چیه به زبان ساده عرض می کنم ( البته نه مثل قبل!):
1- Execute code: اگر قرار باشه مفسر اسکرپتی را برای 1 آبجکت اجرا کنه بهتره ما از همین یکی استفاده کنیم امّا:
2- Execute script : گاهی وقتا پیش می یاد که برای بیش تر از 1 آبجکت (مثلاً 70-80 تا! و یا حتی بیشتر) باید یک اسکریپت اجرا بشه. در این حالت بهترین راه اینه که شما یک اسکریپت مادر بنویسد (از منوی Resources گزینه ی Create Script را انتخاب کنید یا کنترل + آلت + Cرو بزنید)و به همه ی آبجکت ها بگید در صورتی که فلان اتفاق افتاد ، همه برید اسکریپت شماره ی فلان رو اجرا کنید . این جوری لازم نیست که 70- 80 بار یک اسکریپت رو برای همه ی آبجکت ها تایپ کنید و هم از سنگین شدن و زیاد شدن حجم بازی جلوگیری میشه .


یاد آوری : 70 – 80 تا آبجکت یعنی 70 – 80 تا شئ مختلف در گیم میکر، شما یک شئ یا آبجکت می سازید و از روی آن نمونه هایی در Room قرار می دهید که همه رفتار های مشابهی دارند به هر یک از این نمونه ها instance of object یا نمونه ای از ک آبجکت گفته می شود . این خاصیت خوبی است که شما می توانید مثلاً برای ساخت Enemy های یک بازی platform فقط یک آبجکت بسازید و از آن نمونه های زیادی در بازی قرار دهید هر کدام از این نمونه ها (instance) همان رفتار آبجکت اصلی را دارد در حقیقت کپی ای از همان آبجکت است.


با انتخاب گزینه ی اول Execute code و یا ایجاد یک اسکریپت بزرگ (Create Script از منوی Resources) پنجره ای باز میشه که محیط برنامه نویسی GML همین جاست! و حالا حالا ها خیلی این جا کار داریم! فقط یک معرفی جزئی از بخش های این قسمت می کنم.


[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]


1- این قسمت نوار ابزار (شاید !) هست .از سمت چپ به راست:
ذخیره ی تغییرات،پرینت، undo که البته 32 بار بیشتر نیست و می تونید ار قسمت
File>Preferences>Script and Code> Number of Undo:
می تونید تعداد آندو ها رو تغییر بدید.
بعد از آندو ، ردو،بریدن ، رونوشت(فارسی کردن اینا جالبه! منظورم همون کپیه!)،چسباندن(پیست)، جستجوی یک عبارت، جایگزینی یک عبارت با عبارت دیگر،رفتن به خط مشخص، و از همه مهم تر اشکال یابی نگارشی که فوق العاده برای اسکریپت های بزرگ خوبه البته بعضی وقتا گیج می زنه!، قسمت بعدی هلپ برنامه هست و قسمت آخر هم برای اسکریپت فرق می کنه و باید یه توضیحی بعداً بدم هنوز در مورد این ها : selfو other چیزی نگفتم.


2- این همون قسمتیه که ما باید کد های برنامه رو این جا بنویسیم.
3- یکی از ویژگی های خوب برنامه ، این قسمت پایینه به محض اینکه گیم میکر متوجه بشه شما دارین چی تایپ می کنین کمکتون می کنه تا نگارش اون تابع و ... رو ببینید تا اشتباه نکنید.
4- status bar هست و موقعیت مکانی مکان نما رو به شما نشون می ده مثلاً خط اول کاراکتر بیست و پنجم.(وقتی تو برنامه مشکل پیدا می شه یه پیغام نمایش داده می شه و به شما نشونی اون جایی که خطا ایجاد شده می ده و شما می تونید اونو پیدا کنید)



ان شاء الله جلسه ی دیگه میریم سراغ خود نگارش GML و البته تکلیف و مشق شب و روز هم داریم! دوستان مفاهیم پایه ای برنامه نویسی مثل :انواع داده ها ، متغیر ها ، اعمال ساده ی ریاضی ، توابع و ساب روتین ها و ... رو بدونن بهتره اگه ندونن خوب عیبی نداره بگید اینا رو هم با کمک هم میگیم!


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


در آخر این جلسه هم 5 دلیل از کتابDesigning Arcade Computer Game Graphicsنوشته ی Ari Feldman می آورم که مبین آن است که چرا صنعت بازی 2D Arcade هنوز پا بر جاست و طرفداران زیادی دارد .اگر کشور ما نمی تواند بازی 3D درست و حسابی بسازد مطمئناً تشکیل گروه های 10-15 نفره برای ساخت بازی های 2D نتیجه بخش خواهد بود:
1-به دلیل این بیشتر این بازی ها از حجم کمی برخوردارند می توان از آن ها برای استفاده ی آنلاین در اینترنت استفاده کرد ( مثل سایت پوگو که از پلت فرم جاوا استفاده می کند).
2-هنوز فروخته می شوند و می توان از آن ها برای کسب درامد استفاده کرد( البته نه بازی های ساده ی ما)
3-لذت خاصی در بازه های 2D هست که در بازی های 3D نیست !
4-ساخت گرافیک بازی های 2D بسیار ساده هستند( البته نه خیلی!)
5-ساخت بازی های 2D به زمان زیاد و یا سرمایه های هنگفت احتیاج ندارد ؛ ساخت بازی های دو بعدی به ملزومات سخت افزاری نرم افزاری و از همه مهمتر زمان زیادی احتیاج ندارد . برای مثال تمامی گرافیک های ساخته شده در این کتاب (کتاب بنده خدا!) در کمتر از 1 ساعت یک برنامه ی گرافیکی زیر 200 دلار و یک کامپیوتر پنتیوم ساده انجام شده.در مقایسه برای ساخت بازی های 3D ، هزاران دلار سرمایه ی مالی فقط برای خرید بعضی برنامه های گرافیکی پیشرفته ، زمان های طولانی و تعداد افراد گروه زیاد نیاز مند است.


ببخشید بیشتر از کوپن خودم حرف زدم!

Max2000
24-01-2008, 15:20
به نام خدا
ايول ادامه بده

mst_ab
26-01-2008, 23:16
از این به بعد هر چی میگم هلپ خود گیم میکر+حرف های خودمه (چه آشی بشه!)
فقط توجه داشته باشین از این به بعد یکم سخت تر میشه و نیازمند توجه بیشتره .و من از درصد شوخی ها کم می کنم!!. البته هیچ وقت از همه ی چیزایی که میگم استفاده نخواهید کرد ولی یاد گرفتنشون بی فایده نیست.
فهرست GML که از این به بعد قراره تو بخش دوم اینا رو بگم :

mst_ab
29-01-2008, 22:05
به نام خدا
خوبه

کجاش خوبه!!!! :41:نه می تونم ویرایش کنم نه پاکش کنم ! مهدی هم که هیچ وقت آن نیست که پاکش کنه.عجب غلطی کردم . فکر کنم باید دو باره پست تکراری بدم اینجا که کسی نیست به دادم برسه.

Moh3en_DDD
30-01-2008, 00:08
کجاش خوبه!!!! :41:نه می تونم ویرایش کنم نه پاکش کنم ! مهدی هم که هیچ وقت آن نیست که پاکش کنه.عجب غلطی کردم . فکر کنم باید دو باره پست تکراری بدم اینجا که کسی نیست به دادم برسه.
... نه بابا ... تاپیک خیلی عالیه ... اون پست هم زیاد مشکلی نداره ... میشه فهمید ...

ادامه بده تا مهدی آن شه ...

mst_ab
30-01-2008, 12:14
بخش دوم:نگاهی کلی به زبان GML



ساختار کلی یک برنامه در GML
متغیر ها
انتساب
Expression(گزاره)
متغیر های اضافی
آدرش دادن یک متغیر در دیگر نمونه آبجکت ها
آرایه ها
عبارات شرطی
Repeat
While
Do
For
Switch
Break
Continue
Exit
توابع
اسکریپت ها
ساختار With
توضیح گذاری یا کامنت در برنامه
توابع و متغیر ها در GML

mst_ab
30-01-2008, 12:16
زبان GML مخلوطی از پاسکال ، C ، C++ هست و یکم قاطی پاتیه! اگر پاسکال یا C بلد نیستید بهتر! چون اگه بلد بودید دستورات رو با هم قاطی می کردید! (البته افرادی مثل من ). همیشه یادتون باشه گیم میکر بهترین انتخاب نیست.
برای شرع چند چیز خیلی مهم هست که باید اون ها رو رعایت کنید:
نام تمامی منابع(اسپرایت ها،آبجکت ها، صدا ها و ...)باید با یک حرف شروع شده باشد و فقط هم شامل حروف ، اعداد و کاراکتر زیرحرف (آندر اسکور «_» ) باشد در غیر این صورت شما نمی توانید از داخل برنامه رو برای اونا برنامه بنویسید.
این مطلب به این معنی نیست که نام bat1_2غیر معتبر است (یعنی معتبر است!) این یعنی به غیر از حروف ، اعداد و یا _ چیز دیگری برای نام منابع معتبر نیست مثلاً # ، % ، @ ، & .
نمونه هایی از نام های معتبر و غیر معتبر در زیر آورده شده:
غیر معتبر:
Ha$an دارای کاراکتر غیر مجاز دالر $ است.
Len 2 دارای کاراکتر غیر مجاز فاصله (Space) است.
2len نام یک منبع باید با حرف شروع شود نه عدد یا آندر اسکور
global علّت در ادامه گفته میشه!


مثال هایی برای معتبر کردن موارد بالا:
Hasan
Len_2
Len2
global0
مطمئن بشید تمام منابع دارای نام های متفاوت باشند.(مثلاً 2 تا آبجکت هم نام نداشته باشید) و نامشون نباید از موارد زیر باشد :
1-self
2-other
3-global
4-all
به خاطر این که این نام ها در GML معناهای خاصی برای خودشون دارن.برای امتحان یک آبجکت با نام global را در یک روم قرار دهید و بازی را اجرا کنید مطمئناً دیگه این کار رو نخواهید کرد!
نکته :GML به بزرگی یا کوچکی حروف حساس است و GLOBAL با global در GML فرق دارند.
نکته 2:به خاصیت برنامه هایی مثل سی یا GML که به بزرگ یا کوچیک بودن حروف حساس هستند Case Sensitive میگن.

mst_ab
30-01-2008, 12:19
ساختار کلی یک برنامه:
یک برنامه شامل یک سری دستورالعمل هایی است که Statement یا عبارت نامیده می شود مثلاً

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
یک استیت منت است.
یک بلوک برنامه به علامت «}» شروع می شه و با «{» خاتمه پیدا می کنه و برنامه ی ما بین این دو سیمبل (علامت) نوشته می شه.اگر تعداد عبارات یا بیانیه ها بیشتر از یکی باشه با استفاده از علامت «;»سمیکالن (semicolon) اونا رو از هم جدا می کنیم.خوب بنابر این ساختار کلی یک برنامه در GML به صورت زیر در می یاد :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

همون طور که قبلا مثال زدم statement ها می تونن مختلف باشن نمونه هایی از اونها رو در زیر می بینید:



اینا مثاله!! نمی خواد یاد بگیردید!!
عبارات ساده مثل انتساب :a=12
عبارت پیچیده تر مثل شَرط(چیز دیگه نخونید!!):
if A > 3 then WRITELN(A) else WRITELN("NOT YET") end
در ادامه به بررسی عبارات مختلف می پردازیم.

mst_ab
30-01-2008, 12:23
متغیر ها :
مثل هر زبان برنامه نویسی دیگه GML هم متغیر داره . متغیر ها در حقیقت قسمتی از حافظه هستند که اطلاعات را درون خودشون نگه می دارن . متغیر ها اسم دارند و شما می تونید به اون ها مقدار نسبت بدید . یک متغیر در GML می تونه مقادیر حقیقی (مثل:3.4 یا -5.01 یا 5 تا حد اکثر 10 رقم اعشار) یا مقادیر رشته ای(دنباله ای از حروف کهبا تک کوتیشن یا دو کوتیشن مشخص میشن ( مثل:’mostafa’یا ‘Your score’) را در خودش نگه داره.
متغیر ها احتیاج ندارند که در ابتدای برنامه اعلام بشن.مثلاً در فرترن شما باید قبل از استفاده از متغیر نوع اون رو در ابتدای برنامه اعلام کنید .به عنوان مثال برای تعریف متغیر X از نوع حقیقی باید عبارت

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
رو اول برنامه تایپ کنین.(شما نمی خواد تایپ کنین(!

mst_ab
30-01-2008, 12:25
متغیر هایGeneral (کلی)و متغیر های Local (محلی)
متغیر های درونی زیادی در GML وجود دارند بعضی ها مثل mouse_x و mouse_y کلی(general) هستند.( داخل این دو تا متغیر موقعیت موس شما(xو yبرحسب پیکسل) در صفحه ی بازی ،به صورت مکرر آپدیت می شه.)و بعضی دیگه محلی (local) هستند و مثل انگل برای حیات به بدن زنده نیاز دارن! این بدن زنده می تونه یک نمونه آبجت باشه.مثل x و y که موقعیت فعلی یک نمونه از یک آبجکت را در خود نگه می داره.متغیر های کلی را همه ی آبجکت ها و نمونه های آن ها می شناسن مثلاً Score یک متغیر جنرال هست و فرقی نداره برای کدوم متغیر بنویسید که به اسکور یکی اضافه بشه در هر صورت یک اسکور بیشتر نیست و به همون یک واحد اضافه می شه.ولی همون طور که گفتم xو y دو متغیر محلی هستند وقتی که شما برنامه ای می نویسین که مثلاً به x ، 30 واحد و به y ، 40 واحد (Pixel) اضافه بشه به همون آبجکتی اضافه می شه که این اسکریپت رو براش نوشتین.
یکم شاید قاطی شد! بعداً راجع به این مطلب بیشتر صحبت می کنیم.
یک متغیر یک نام داره که باید با یک حرف شروع بشه و فقط هم می تونه از حرف ، عدد و یا کاراکتر آندراسکور (_) تشکیل شده باشه (مثل منابع) حد اکثر تعداد طول یک متغیر 64 کاراکتر است.یک جمله از بهترین استاد دانشگاهمون(رضا خواجوی): نام متغیر ها رو در جهت گویایی هر چه بیشتر بلند اختیار کنید امّا نه آن چنان که نیمی از زمان تایپ برنامه ، مشغول تایپ نام متغیر ها باشید! مثلاً نام TheLengthOfTallestStringInTheGame اصلاً نام خوبی نیست! فکر اینجا رو هم بکنید که بعداً باید چه قدر با این نام دست و پنجه نرم کنید!( به کسی نگید.... برای استاد تبلیغ می کنم!!)
وقتی شما یک متغیر جدید تعریف می کنید این متغیر فقط برای نمونه آبجکت فعلی (Current instance) شناخته می شه (میشه همون محلی یا Local) و برای بقیه ی نمونه آبجکت ها شناخته نمی شه.(حتی نمونه های آبجکت خودش) به عبارت دیگه شما می تونید برای هر آبجکتتون متغیری با نام یکسان ایجاد کنید که هر کدوم مقدار مختلفی داشته باشند.
البته می تونید با اجرای یک اسکریپت برای آبجکتی تغییراتی در متغیر های محلی یک آبجکت دیگه رو ایجاد کنید و یا حتی متغیر هایی بسازید که همه ی آبجکت ها اون ها رو بشناسن که در ادامه میگیم.

mst_ab
30-01-2008, 12:32
انتساب:
یک عملگر انتساب یک مقدار رو در یک متغیر قرار می ده. فرم کلی یک انتساب به صورت زیره:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

(با اولین انتساب متغیر ایجاد میشه)
یک گزاره می تونه یک مقدار ساده باشه مثل 1، 2/5 و یا از پیچیدگی بیشتری برخوردار باشه که در قسمت گزاره ها بهش می پردازیم.
حالا شما یاد گرفتید که چه جوری مقدار 3 را در متغیری مثل count بریزید:


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


یا حتی شما می تونید مقدار متغیر count رو با کد زیر 1 واحد افزایش بدید :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


توجه کنید count آخرین مقداری است که قبلاً داشته.یعنی اگه 1 بوده میشه 2 اگه 2.3 میشه 3.3
چیزی که در این قسمت مهمه اینه که همیشه مقدار سمت راست در سمت چپ ریخته می شهپس


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


اشتباهه.
چون استفاده از این جور عبارات که رابطه ای با خود متغیر داره تو برنامه ها خیلی کاربرد داره GML این امکان رو به شما می ده که به جای نوشتن عبارات

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

اینو بنویسید :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

عملگر =+یعنی مقدار فعلی متغیر را....... قدر اضافه کن.
در مثال بالا مقدار count 1 واحد افزایش پیدا می کنه . به همین ترتیب در صورت لزوم می تونید از عملگر های زیر هم استفاده کنید.
=-:یعنی از مقدار فعلی متغیر......... قدر کم کن.
=*: یعنی مقدار فعلی متغیر را در ............ ضرب کن.
=/: یعنی مقدار فعلی متغیر رو تقسیم بر ........ کن.


علاوه بر این ها شما یک سری عملیات bitwiseدارید که برای این که مطالب این جلسه سنگین نشه بیخیال شدم (خسته شدم از بس تایپ کردم!!ا)اگه بعداً به دردتون خورد خواهم گفت . ولی اگه کسی اطلاعاتی در مورد این عملیات می خواد بره اینجا:[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
باز هم اگه می خواین اینا رو هم بگم بگید تا بگم!

mst_ab
30-01-2008, 12:36
گزاره ها:
گزاره(Expression)می تونه یه عدد حقیقی مثل 3.4 ، یک عدد هگزا دسیمال (مبنای 16 که با $ شروع میشه مثل

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
) و یا رشته باشه. و یا حتی گزاره های پیچیده تری باشد مهم اینه که مقدارشون قابلِ به دست آوردن باشه.(ارزش داشته باشند)

mst_ab
30-01-2008, 12:44
عملگر ها به ترتیب تقدم به صورت زیر هستند: (تقدم یعنی مفسر GML زود تر اونا رو بررسی می کنه)
- && ll ^^عملگر های ترکیب مقادیر منطقی : فرض کنید دو عبارت منطقی داریم که این دو عبارت می تونن درست یا ناردست باشن. حالا فرض کنید که می خواین ببینید کِی هر دو تا شون درست هستند.......... چه جوری؟ می تونین بگید وقتی عبارت 1درست و عبارت 2 درست باشه.این جا از عبارت «و» استفاده کردید. عبارت کلی درسته که هر دو عبارت 1 و 2 درست باشه . به همین ترتیب ll (شیفت + بک اسلش)که یعنی یا .و وقتی یک عبارت متشکل از «یا» درسته که حداقل یکدوم از عبارت های دو طرف ارزش درستی داشته باشن حالا اگه هر دو تا شون درست باشه که نور علی نور میشه!.
فرض کنید که می خواین چک کنید که عبارت 1 درست یا عبارت 2 درست باشه هر دو با هم درست نباشه در این صورت باید از ^^ یا XOR که یای مانعه الجمع نامیده میشه و عبارت شامل یای مانعه الجمع زمانی درسته که عبارت 1 یا عبارت 2 درست باشه امّا زمانی که هر دو درسته عبارت کلی درست نخواهد بود .(اگه فهمیدید که خدا رو شکر ولی چون بعید می دونم اگه مشکل داشتید بگید تا جدول ارزش گزاره ای بذارم تا بهتر یاد بگیرید) توجه داشته باشید که این قسمت خیلی خیلی خیلی مهم بود.
- < <= == >= > عملگر های رابطه ای هستند(بزرگ تر ، بزرگتر مساوی ، برابر ، کوچکتر مساوی ، کوچکتر ) و نتیجه یک مقدار منطقی
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید یا
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید هست مثلاً وقتی در قسمتی از برنامه تایپ می کنید :X<Y خوب یا این گزاره ارزش درست داره یا نه (ارزشش از روی مقدار قبلی شون مشخص میشه) اگه درست بود 1 و اگر نادرست بود 0.
- ^ & l که عملگر های bitwise هستند و همون طور که قبلاً گفتم فعلاً از کنارشون می گذریم.
- << >> که عملگر های شیفت برای bitwise هستند(فکر کنم حالتون از bitwise به هم خورده!!!!)
- - + عملگر جمع و عملگر تفریق
-* / mod div که چهار عملگر ضرب، تقسیم ، تقسیم صحیح ، پیدا کردن باقی مانده هستند.
نکته 1: توجه کنید که تقسیم صحیح xبر y را به صورت x div y نوشته شده و برابر مقدار تقسیم x/y است که در جهتی که به صفر نزدیک تر است گرد شده است. به عنوان مثال :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
نکته 2: mod مقدار باقی مانده ی عملوند های خودش را برمی گرداند به بیان دیگر :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
نکته3: عملگر = عملگر انتساب است و اگر مثلاً می خواهیم چک کنیم که آیا مقدار x با مقدار y برابر است یا نه باید از عملگر رابطه ای == استفاده کنیم.یعنی تایپ کنیم:
x==y
علاوه بر مواردی که ذکر شد این عملگر های یگانی هم هستند:
- ! ، این علامت یعنی نقیض که در ریاضیات عالی به صورت ~ نوشته می شه و نقیض یک عبارت منطقی را بر می گرداند مثلاً برای

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اول چک میشه که آیا yبا 3 برابره یا نه ، فرض جوابش بله باشه ( لطفاً با حالت کشیده بخوانید: ب................له!)یعنی TRUE ، بعد نقیض می شه ، می شه FALSE به همین راحتی! البته مقدار ترو یعنی 1 و فالس یعنی 0. و در محاسبات این دو مقدار به کار گرفته می شن.
- - ، که یک مقدار بعد از خودش را منفی می کند.
- ~ ، این هم ماله داستان bitwise هست !.
برای مقدار برای بالایی ها ، شما می تونید عدد ، متغیر و یا توابعی که مقدار بر می گردانند را استفاده کنید.زیر گزاره ها می تونن بین براکت گذاشته بشن . تمامی عملگر ها با مقادیر حقیقی کار میکن. عملگر های مقایسه ای هم با اعداد و هم با رشته ها کار می کنند .(تا حالا دقت کرده بودید که می تونید 2 تا کلمه رو هم مقایسه کنید! همون کاری که تو دیکشنری ها کردن!)
در آخر هم توجه داشته باشید که هر عملگر یک یا چند عملوند داره و در هنگام اجرا شدن هر دو عملوند محاسبه می شه حتی اگر جواب با اولین عملوند قابل محاسبه باشه مثلاً

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
با فرض x=0 جواب بدون دونستن عملوند دوم قابل پیش بینی هست (که صفر میشه) ولی مفسر هر دو تا شو حساب می کنه.


قبل از تموم شدن این جلسه یک بار دیگه از شما خواهش می کنم یک نگاه اجمالی به مطالبی که گفته شد داشته باشید و بعد برید سراغ سؤال های پایین . (تا وقتی جواب های سؤالات رو ندید بقیشو نمی گم!!) جلسه ی دیگه ان شاءالله فقط رفع اشکال و تمرین داریم (انگار چند نَفَرین!!!)

mst_ab
30-01-2008, 13:11
به این سوالات پاسخ دهید:

1 – فرق = با == چیه
2- آیا گزاره(Expression) و عبارت(statement) یکی هستند؟
3-در مورد هر کدوم از کد های زیر توضیح بدید.


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

منتظر جواب هاتون هستم:46:

mst_ab
02-02-2008, 18:07
اگه بچه ها جواب ندن بیخیال بقیش میشم!!

khanghodrat
02-02-2008, 20:13
سلام
من جواب میدم و منتظر بقیش هم هستم.
1.= یعنی قرار بده یه دستوره ولی == یعنی شرط مساوی بودن
2.اولی یه نوع پیش شرط و دومی یه دستوره---س یکی نیستند.
3.--------23 رو قرار میده در ایکس
کولور را مساوی اون رنگ قرار میده
عبارت رو در اس تس ار ذخیره میکنه
به ایقرق 5 تااضافه میکنه
نمیدونم
یه عملیات ریاضیه
به صورت رشته ای جمع میکنه
اینم فالس میشه
----------------------
با تشکر

Moh3en_DDD
02-02-2008, 20:15
به این سوالات پاسخ دهید:

1 – فرق = با == چیه
2- آیا گزاره(Expression) و عبارت(statement) یکی هستند؟
3-در مورد هر کدوم از کد های زیر توضیح بدید.


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنیدمنتظر جواب هاتون هستم:46:

من آسوناش را میگم ...

1- یک اسمی داشت ها ... :13: . هرچی فکر می کنم یادم نمیاد ... ولی اون مقدار میگیره ... اون یکی مقدار میبینه ... ( مبهم میگم تا دوستان خودشون فکر کنند )



3-


x = 23
23 را بریز توی x



y += 5
y=y+5



x *= y
x=x*y

ایشاالـاـه یک برگه دارم تمام این ها را توش نوشته با توضیحات کامل ... سعی می کنم آپلود کنم ...

mst_ab
03-02-2008, 12:58
آفرین!
با هم دیگه همشو کامل نوشتین!
چون تا 3 روز دیگه هر روز امتحان دارم نموتونم تاپیک رو آپ کنم ولی ان شاءالله از 17 به بعد هر روز تاپیک آپ میشه!
وقتی می بینم بقیه هم علاقه دارم منم ادامشو می ذارم!


ایشاالـاـه یک برگه دارم تمام این ها را توش نوشته با توضیحات کامل ... سعی می کنم آپلود کنم ...


حتماً این کار رو بکن.


ولی اون مقدار میگیره ... اون یکی مقدار میبینه
درسته!

منتظر ادامش باشید!

mst_ab
05-02-2008, 12:19
- آیا گزاره(Expression) و عبارت(statement) یکی هستند؟


عبارات شامل گزاره ها هستند:


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
این یه عبارت هست که مثلاً گزاره ی b+1 رو توش داره
در حقیقت گزاره ها زیر مجموعه هایی سِره از عبارات هستند.

dan-emma-ropert
07-02-2008, 17:00
ايول. خيلي عاليه. ادامه بده. به خاطر اين آموزش ها هم از هر دو تون(mst_ab و Moh3en_DDD) متشكرم.

gamesaz
08-02-2008, 07:38
سلام

میدونم اینجا جای این سوالا نیست اخه کسی جواب سوالامو نمیده.

گفتم شما مرحمت بفرمایید مشکلمو حل کنید.[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

يه بازي درست كردم لود اون خيلي طول ميكشه براي كوتاه كردن لود اون بايد چه كار كنم؟

چجوری یه بازی تو گیم میکر بسازیم که از چند تا فایل ساخته شده باشه؟

خیلی ممنون میشم جواب بدید.

Max2000
08-02-2008, 08:07
به نام خدا
سلام mst_ab
واقعا خوبه در ضمن خوبه مقالات را عكس دار هم كني و با مثال توضيح بدهي
اگر انجمن آشغال سايت هم بگذاره من در هر پست از شما تشكر كنم خيلي خوب ميشه از بس برام اختاريه فرستاد مغزم سوت كشيد

mst_ab
08-02-2008, 12:10
سلام

میدونم اینجا جای این سوالا نیست اخه کسی جواب سوالامو نمیده.

گفتم شما مرحمت بفرمایید مشکلمو حل کنید.[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

يه بازي درست كردم لود اون خيلي طول ميكشه براي كوتاه كردن لود اون بايد چه كار كنم؟

چجوری یه بازی تو گیم میکر بسازیم که از چند تا فایل ساخته شده باشه؟

خیلی ممنون میشم جواب بدید.
دوست خوب سوالات شما رو تو اولین آموزش گیم میکر به صورت Pdf جواب دادم یه نگاه بندازید.

mst_ab
14-02-2008, 08:50
ببخشید یه مدت نبودم.انشالله از فردا قسمت های جدیدی رو که آماده کردم می ذارم.

واقعا خوبه در ضمن خوبه مقالات را عكس دار هم كني و با مثال توضيح بدهي

به روی چشم! البته هنوز مسائل همه تئوریکه ولی باز هم چشم!

Prince_ of _Persia
22-02-2008, 08:15
سلام.

اگه از نظر دوستمون اشكالي نداره من هم بعضي جاها مثل الان ادامه مطالب رو مي ذارم من خيلي وقت پيش اين مطالبو از help گيم ميكر ترجمه كردم و قرار بود كتاب بشه كه هنوز نشده. در ضمن نمي تونستم تاپيك بزنم چون كمتر اينجام و نمي تونم به تاپيكم رسيدگي كنم بنابراين هر جا شد به اين تاپيك كمك مي كنم.



متغیر های ویژه
شما می توانید متغیرهای جدیدی را با استفاده از انتساب یک مقدار به آنها ( بدون نیاز به تعریف آنها ) تعریف کنید. اگر شما تنها از نام متغیر استفاده کنید ، متغیر تنها در نمونه آبجکت کنونی ذخیره می شود. بنابراین توقع پیدا کردن آن را در آبجکت دیگری ( حتی نمونه های دیگر از همان آبجکت ) را نداشته باشید. شما می توانید متغیرها را در آبجکت های دیگر با استفاده از نام آبجکت و یک نقطه بعد از آن و سپس نام متغیر تنظیم کنید یا به آن دسترسی پیدا کنید.

برای ایجاد متغیرهای جهانی یا global ، که برای تمامی آبجکت ها قابل مشاهده و دسترسی است از کلمه global و یک علامت نقطه قبل از نام متغیر استفاده کنید. به عنوان مثال شما می توانید بنویسید :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
بعضی اوقات شما می خواهید که متغیرها تنها درون کد یا اسکریپت فعلی استفاده شود.در این حالت شما از به هدر رفتن حافظه و شباهت نامی متغیرها جلوگیری خواهید نمود. همچنین نسبت به استفاده از متغیرهای جهانی سریعتر است. برای دستیابی به این هدف شما باید متغیرها را در ابتدای قطعه کد خود با استفاده از کلمه کلیدی var تعریف نمایید. این تعریف به شکل زیر می باشد :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

برای مثال شما می توانید بنویسید :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

Prince_ of _Persia
22-02-2008, 08:18
آدرس دهی متغیر نمونه های دیگر
همانطور که قبلا توضیح دادیم شما می توانید متغیرهای نمونه کنونی را با استفاده از دستور زیر تنظیم کنید.


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

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


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
این کد سرعت تمامی نمونه های آبجکت توپ را تغییر می دهد. تعدادی آبجکت خاص بصورت زیر نیز وجود دارد :

• self : نمونه کنونی که در حال اجرای دستورات است.
• other : نمونه دیگری که در رویداد برخورد درگیر شده است.
• all : تمامی نمونه ها
• noone : هیچ نمونه ای را شامل نمی شود. ( شاید عجیب به نظر برسد اما بعدا کاربرد آن را یاد خواهید گرفت )
• global : هیچ نمونه را شامل نمی شود ، اما نگهدارنده متغیرهای global است.

بنابراین به عنوان مثال شما می توانید از دستوراتی مانند زیر استفاده کنید :


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

Prince_ of _Persia
22-02-2008, 08:20
آرایه ها
شما می توانید از آرایه های تک بعدی و دو بعدی در GML استفاده کنید. برای اینکار کافیست تا شماره آرایه یا اندیس را در آرایه های یک بعدی در داخل براکت [] و در آرایه های دوبعدی با علامت کاما در بین دو بعد آرایه قرار دهید. هر آرایه از اندیس صفر آغاز می شود بنابراین مراقب استفاده از اندیس های بزرگ باشید زیرا که حافظه زیادی را اشغال می کنند. هرگز از اندیس منفی استفاده نکنید.سیستم بر روی هر اندیس تا 32000 و در مجموع کل تا 1000000 محدودیت اجرا می کند. به عنوان مثال شما می توانید از کد زیر استفاده کنید :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

mst_ab
23-02-2008, 11:58
خیلی خیلی ازت ممنونم
چون من درگیر دانشگاه و این جور چیزا شدم دیگه نمی تونستم مطلب بذارم.
راستی یه چیز دیگه حتماً کد هایی که می ذاری رو تو تگ [code] بذار چون خوندنشون تقریباً غیر ممکنه!
بازم ممنون :10:ادامه بده!

Prince_ of _Persia
23-02-2008, 12:26
ساختار if
ساختار if شرطی بصورت زیر می باشد :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
statement در ساختار فوق می تواند شامل یک بلوک کامل کد باشد. در این ساختار شرط expression تست می شود اگر برابر با false (0) بود آنگاه دستورات بعد از else اجرا می شود در غیر اینصورت دستوارت بعد از شرط اجرا می شوند. بهتر است همیشه از گذاشتن دستورات در داخل براکت در ساختار if استفاده کنید.


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
مثال :
برنامه زیر مکان آبچکت را به مرکز صفحه تغییر می دهد.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

ساختار Repeat
ساختار repeat یا تکرار به شکل زیر است .


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
دستورات بعد از repeat به تعداد باری که در expression ذکر شده است تکرار می شود.

مثال :
برنامه زیر پنج توپ را در مکانهای تصادفی ایجاد می کند.


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

ساختار While
ساختار While نوعی دیگر از تکرار است که بصورت شرطی می باشد و دارای ساختار زیر است.


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

تا هنگامی که مقدار expression برابر true باشد ، دستوراتی بعد از آن ( که می تواند یک بلوک کامل باشد ) اجرا می شود. مراقب حلقه های تکرار while باشید این حلقه ها براحتی می توانند برای همیشه ادامه پیدا کنند که در این حالت بازی هنگ می کند و نسبت به اعمال کاربر واکنش نشان نمی دهد.

مثال
برنامه زیر آبجکت فعلی را در یک مکان باز وخالی قرار می دهد ( این عمل مانند واکنشی است که آبجکت را به مکان تصادفی می برد).


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

ساختار Do
ساختار do به شکل زیر است.


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

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

مثال :
کد زیر آبجکت فعلی را در یک مکان باز وخالی قرار می دهد.


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

ساختار For
ساختار for به شکل زیر است :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

این ساختار بدین شکل کار می کند که دستور اول اجرا می شود و پس از آن expression محاسبه می شود. اگر مقدار آن true بود statement3 اجرا میشود ، سپس statement2 و سپس expression دوباره اجرا می شود. این حلقه تا هنگامی که expression اشتباه شود ادامه می یابد.

مثال :
کد زیر یک آرایه با طول 10 را با مقادیر 1 تا 10 پر می کند.


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


ساختار Switch :
در بعضی مواقع شما می خواهید که واکنش شما بسته به مقدار خاصی احرا شود. شما می توانید این عمل را با استفاده از ساختار if انجام دهید اما استفاده از ساختار switch برای این عمل ساده تر است. ساختار switch به شکل زیر است :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

این کد بدین شکل کار می کند که expression اجرا می شود سپس نتیجه آن با مقادیر متفاوت پس از دستورات case مقایسه می شود.اولین دستور case که مقدارش با مقدار بالا یکی شود اجرا می شود تا وقتی که به دستور break می رسد. اگر هیچ کدام از مقادیر case با مقدار بالا یکی نبود دستورات پس از default اجرا می شود.دقت نمایید که دستور break الزامی نیست و اگر این دستور وجود نداشته باشد اجرا تا دستور case بعدی اجرا می یابد.

مثال
کد زیر بسته به کلیدی که فشرده می شود عمل می کند.


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

Prince_ of _Persia
23-02-2008, 12:28
ساختار Break
ساختار break به شکل زیر است

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

اگر این دستور درون یک حلقه for ، یک حلقه while ، یک حلقه repeat ، یک ساختار switch یا یک ساختار with قرار بگیرد اجرای حلقه یا ساختار به پایان می رسد. اگر خارج از حلقه استفاده شود به اجرای برنامه ( نه بازی ) پایان می دهد.

ساختار Continue
ساختار continue به شکل زیر است


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اگر درون یک حلقه یا ساختار استفاده شود اجرای حلقه یا دستور با مقدار بعدی ادامه می یابد.

ساختار Exit
ساختار exit به صورت زیر است


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

این دستور به سادگی باعث خاتمه اجرای کد یا اسکریپت می شود . ( این دستور اجرای برنامه را متوقف نمی نماید برای این عمل شما باید از تابع game_end() استفاده کنيد )

Max2000
23-02-2008, 13:30
به نام خدا
به به Prince_ of _Persia عزيز بابا من فكر كردم ديگه بيخيال اين سايت شدي
اين همه مدت كجا بودي؟
واي دستت درد نكنه آموزشها توپه

mst_ab
27-02-2008, 23:00
دارم روی مثال های این آموزش ها کار می کنم انشاءالله تموم شد همه رو می ذارم .

Oracle_Eldorado
27-02-2008, 23:27
ببخشید میشه با زبان برنامه نویسی هم با گیم میکر کار کرد ؟
منظورم VB یا C یا Delfi هست .
یعنی اگه کسی اینا رو بلد باشه میتونه سورس بازی رو بنویسه ؟

MrJamshidy
28-02-2008, 07:56
دوستان قبل از هر چیز یکی منو هلپ بده
چطور میتونم آخرین نسخه از Gm رو کرک کنم
اینو اینجا گفتم چون تو بخش کرک هی آدم رو پاس کاری میکنن آخرش هم بهت نمیگن
ممنون

mst_ab
28-02-2008, 10:37
ببخشید میشه با زبان برنامه نویسی هم با گیم میکر کار کرد ؟
منظورم VB یا C یا Delfi هست .
یعنی اگه کسی اینا رو بلد باشه میتونه سورس بازی رو بنویسه ؟
من همین سوال رو از فروم خود گیم میکر پرسیدم . جوابشون این بود:
شما باید اول برنامه تون رو به صورت یک زیر روال و یک تابع خارجی بنویسید و بعد با امکانات خود گیم میکر اون رو در زمان لازم اجرا کنید . ولی من که نفهمیدم! اگه شما چیزی در این مورد فهمیدی حتماً به من هم بگو.
البته من این سوال رو برای سی پرسیده بودم (چونsyntax جی ام ال هم خیلی شبیه سی هست) ولی فک کنم برای دلفی و وی بی هم بشه ( یعنی امیدوارم بشه!!!)

mst_ab
28-02-2008, 10:39
دوست عزیز سوالات گیم میکر رو تو این تاپیک مطرح کنید ممنون سوال شما تو اون تاپیک جواب داده شد.

سوالات گیم میکر(در همه زمینه ها)
کد:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

Sam Fisher 11
12-03-2008, 02:03
سلام دوستان
ببخشید اون روز سرم خیلی شلوغ بود اون پست رو اشتباهی پاک کردم.
:11:

reza22222
20-03-2008, 07:07
سلام آيا با اين نرم افزار ميشه بازي مثل بيليارد يا دوز ساخت كسي كد اماده از يه بازي داره يا نه
عيد همه مبارك

mst_ab
27-03-2008, 16:34
بله که میشه ساخت! ولی من کد آماده ندارم!

Soheil-Green
28-03-2008, 01:28
بفرمایید دوست عزیز،اینم سورس بیلیارد البته فقط کداش بدرد میخوره گرافیکش پایینه،باید خودت
براش اسپرایت بسازی:
green-co.parsaspace.com/examplepool.gmd
در ضمن این سورس کار من نیست از یه سایتی دانلود کردم

brain
28-03-2008, 10:48
سلام چند تا سوال دارم :

1) یه سوال کلی دارم که جوابش اره یا نه هست :

آیا با گیم میکر میشه بازی ای در حد Nieghbours from hell (همسایه جهنمی) ساخت دقیقا همونجونوری منتها با ظاهر و قالب و موضوعی دیگه ............ میشه ساختش یا نه ؟؟؟ ( مرسی .)

2) سری دوم سوالات :

مقدمه :
فرض کنید یه بازی مثه قارچ خور داریم و دو کاراکتر به نام های A و B ، حالا:
1) فرض کنید من می خوام کلید جهت راست را بفشارم و بعد کاراکترم حرکت کند منتها کاراکتر من دارای حرکت
است ( یعنی یک جسم ثابت نیست که کل آن تکان بخورد می خواهم وقتی ایستاده ، ثابت باشد وقتی حرکت می کند پاهایش نیز به حرکت در بیاید )( اگه سوالم یکم گنگه باید ببخشید ) ولی اگه فهمیدید بگید باید چی کار کنم ؟

2) اگه A بخواد به بی ضربه بزنه (مثلا با کلید آلت) و B بمیره چی کار باید کرد ؟

3) اگه بخواهیم کاراکترمان بدود باید چی کار کرد ( مثلا وقتی کلید ( شیفت ) را نگه می داریم سریعتر بدود ) ؟

4) فرض کنید A بر روی سکویی بالاتر از B : آیا می شود بعد از زدن یک دکمه A پریده و B را بکشد ؟

5) اگه چند تا کاراکتر در صفحه داشته باشیم : همچنین کدی داریم که وقتی یک کلید زدیم A آنها را هل بدهد ؟

6)فرض کنید A معمولی راه میرود ولی وقتی اسپیس رو نگه می داریم طرز راه رفتنش عوض شود ( همچنین چیزی امکان دارد ) ؟

7)فرض کنید کلیدی را می فشاریم بعد A می خواهد از جایی بالا برود و اول جایی را می گیرد و سپس بالا می رود
(چگونه همچنین حالتی را بوجود بیاوریم) ؟

8)اگه بخواهیم داخل بازی انیمیشن بذاریم ( مثلا بین هر دو مرحله چیزی پخش شود) باید چی کار کنیم ؟

9) تموم شد ( اگه هر سوالی رو متوجه نشدید بگید دوباره توضیح بدم ) ... و اگه هم حال توضیح دادن نداشتید
فقط بگید میشه با گیم میکر همچنین کار هایی کرد یا میشه بازی هایی مثه قارچ خور رو ساخت ....؟

چون من دارم بازی AC رو می سازم 2 بعدی و فانتزی ...حالا می خوام ببینم میشه با گیم میکر یا نه اگه نمیشه که برم سراغ یه کار دیگه ...(این سوال هارو تو تاپیک سوالات گیم میکر پرسیدم ولی کسی جواب نداد)
خیلی خیلی ممنون ....... قربون همتون برم ... فعلا خداحافظ

Prince_ of _Persia
28-03-2008, 10:58
سلام چند تا سوال دارم :

1) یه سوال کلی دارم که جوابش اره یا نه هست :

آیا با گیم میکر میشه بازی ای در حد Nieghbours from hell (همسایه جهنمی) ساخت دقیقا همونجونوری منتها با ظاهر و قالب و موضوعی دیگه ............ میشه ساختش یا نه ؟؟؟ ( مرسی .)

2) سری دوم سوالات :

مقدمه :
فرض کنید یه بازی مثه قارچ خور داریم و دو کاراکتر به نام های A و B ، حالا:
1) فرض کنید من می خوام کلید جهت راست را بفشارم و بعد کاراکترم حرکت کند منتها کاراکتر من دارای حرکت
است ( یعنی یک جسم ثابت نیست که کل آن تکان بخورد می خواهم وقتی ایستاده ، ثابت باشد وقتی حرکت می کند پاهایش نیز به حرکت در بیاید )( اگه سوالم یکم گنگه باید ببخشید ) ولی اگه فهمیدید بگید باید چی کار کنم ؟

2) اگه A بخواد به بی ضربه بزنه (مثلا با کلید آلت) و B بمیره چی کار باید کرد ؟

3) اگه بخواهیم کاراکترمان بدود باید چی کار کرد ( مثلا وقتی کلید ( شیفت ) را نگه می داریم سریعتر بدود ) ؟

4) فرض کنید A بر روی سکویی بالاتر از B : آیا می شود بعد از زدن یک دکمه A پریده و B را بکشد ؟

5) اگه چند تا کاراکتر در صفحه داشته باشیم : همچنین کدی داریم که وقتی یک کلید زدیم A آنها را هل بدهد ؟

6)فرض کنید A معمولی راه میرود ولی وقتی اسپیس رو نگه می داریم طرز راه رفتنش عوض شود ( همچنین چیزی امکان دارد ) ؟

7)فرض کنید کلیدی را می فشاریم بعد A می خواهد از جایی بالا برود و اول جایی را می گیرد و سپس بالا می رود
(چگونه همچنین حالتی را بوجود بیاوریم) ؟

8)اگه بخواهیم داخل بازی انیمیشن بذاریم ( مثلا بین هر دو مرحله چیزی پخش شود) باید چی کار کنیم ؟

9) تموم شد ( اگه هر سوالی رو متوجه نشدید بگید دوباره توضیح بدم ) ... و اگه هم حال توضیح دادن نداشتید
فقط بگید میشه با گیم میکر همچنین کار هایی کرد یا میشه بازی هایی مثه قارچ خور رو ساخت ....؟

چون من دارم بازی AC رو می سازم 2 بعدی و فانتزی ...حالا می خوام ببینم میشه با گیم میکر یا نه اگه نمیشه که برم سراغ یه کار دیگه ...(این سوال هارو تو تاپیک سوالات گیم میکر پرسیدم ولی کسی جواب نداد)
خیلی خیلی ممنون ....... قربون همتون برم ... فعلا خداحافظ

ماشاا... سوال:18:
جواب سوال اولت : حتما چرا كه نه مي توني بسازي بشرطي كه از پس اسپرايت متحركش بربياي.
در جواب بقيه سوالاتت هم بگم شما اصلا آموزش ها رو خوندي و كار با گيم ميكر رو بلدي:13:
جواب همه سوالاتت شما تو آموزشها داده شده حداقل سه تا تاپيك من خودم در اين زمينه دارم يه جستجويي تو همين تالار بكن پيدا مي كني.

brain
28-03-2008, 11:14
ماشاا... سوال:18:
جواب سوال اولت : حتما چرا كه نه مي توني بسازي بشرطي كه از پس اسپرايت متحركش بربياي.
در جواب بقيه سوالاتت هم بگم شما اصلا آموزش ها رو خوندي و كار با گيم ميكر رو بلدي:13:
جواب همه سوالاتت شما تو آموزشها داده شده حداقل سه تا تاپيك من خودم در اين زمينه دارم يه جستجويي تو همين تالار بكن پيدا مي كني.

:31::31:
سلام دوباره
من راستیتش کلی آموزش جمع کردم ولی هنوز نخوندم ....... سوالم که پرسیدم به خاطر این بود که بفهمم
اصلا میشه یه همچین کاری کرد یا نه .....که شما خیال منو راحت کردید ....:31: مرسی .....

من یه پیشنهادی دارم برای اینکه کسی بهتر یاد بگیره باید آموزش رو روی یک بازی درست می کردید .
مثلا یه بازی مثه قارچ خور رو شروع می کردید به آموزش دادن ... چون کاربرد اون بازی بیشتره)
مثلا آموزش بازی ای مثه ( همون توپه که می خوره به در و دیوار که به درد نمی خوره) .....
به هر حال مرسی :31::10::31: من دوباره بر می گردم احتمالا سوال باز هم دارم :31::31:

( اصلا بازی neghbor from hell رو با چه موتوری ساختند ؟ همین جوری فقط برای دونستن می خوام)

mst_ab
28-03-2008, 13:35
دوستان از همه معذرت می خوام اگه میشه سوالاتتون رو تو تاپیک سوالات گیم میکر مطرح کنید ببخشید ها!

brain
28-03-2008, 23:28
من تو اون تاپیک هم پرسیدم .. ببینم جواب میدی یا نه .....؟ :31::31:

:10:

mst_ab
31-03-2008, 21:51
جواب دادم!!

mst_ab
01-04-2008, 09:42
چون دوستان در رابطه با ادامه ی مطالب در مورد زبان اسکریپت نویسی Gml هیچ نظری ندادن ، من هم دیگه ادامه ندادم( و نمی دم!) شاید هم فکر کردید تموم شده؟!

Moh3en_DDD
01-04-2008, 22:32
اینجا رسمش اینجوریه که اگه آموزشش خوب بود هیچ نظری نمی دند و اگر بد بود نظر - می دند :d ...

فکر کنم تاپیکی با 1,372 بازدید خودش یعنی تشویق ... چون تاپیک هایی هم داریم که 4 ماهه استیکی شدند و فقط 1,121 بازدید کننده داشتند

mst_ab
01-04-2008, 22:46
حالا شاید هم ادامه دادم!!! :d

dan-emma-ropert
08-04-2008, 14:55
شاید نه. باید ادامه بدی. X-(

mohammd1
05-09-2012, 15:39
الو ... الو ! کسی نیست !؟
نه بابا تعطیله این جا:23:

Arrowtic
05-09-2012, 17:15
آخرین پست واسه 2008ئه عزیز :|

mohammd1
05-09-2012, 18:31
آخرین پست واسه 2008ئه عزیز :|

آره آره من برم یه جای دیگه !

lord arthas
05-09-2012, 22:21
واقعا هدفت از بالا اوردن این پست چی بود ؟ :|

mohamadfa
04-09-2015, 01:04
سلام دوستان اره متن ارسالی مال 2008 بئد اخریش هم مال 2012 اووووف یعنی اگه بگیریم که الان 2016 هست(تقریب گرفتم)چرا هسچکس نیس؟؟؟؟؟؟؟؟؟؟؟؟؟:n19::n41::n34: