تبلیغات :
آکوستیک ، فوم شانه تخم مرغی، صداگیر ماینر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




صفحه 2 از 6 اولاول 123456 آخرآخر
نمايش نتايج 11 به 20 از 60

نام تاپيک: آموزش زبان برنامه نویسی گیم میکر (gml)

  1. #11
    اگه نباشه جاش خالی می مونه mst_ab's Avatar
    تاريخ عضويت
    Oct 2007
    محل سكونت
    مشهد
    پست ها
    326

    پيش فرض

    بخش دوم:نگاهی کلی به زبان GML


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

  2. #12
    اگه نباشه جاش خالی می مونه mst_ab's Avatar
    تاريخ عضويت
    Oct 2007
    محل سكونت
    مشهد
    پست ها
    326

    پيش فرض

    زبان 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 میگن.

  3. #13
    اگه نباشه جاش خالی می مونه mst_ab's Avatar
    تاريخ عضويت
    Oct 2007
    محل سكونت
    مشهد
    پست ها
    326

    پيش فرض ساختار کلی یک برنامه:

    ساختار کلی یک برنامه:
    یک برنامه شامل یک سری دستورالعمل هایی است که Statement یا عبارت نامیده می شود مثلاً
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

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

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


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

  4. #14
    اگه نباشه جاش خالی می مونه mst_ab's Avatar
    تاريخ عضويت
    Oct 2007
    محل سكونت
    مشهد
    پست ها
    326

    پيش فرض متغیر ها

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

  5. #15
    اگه نباشه جاش خالی می مونه mst_ab's Avatar
    تاريخ عضويت
    Oct 2007
    محل سكونت
    مشهد
    پست ها
    326

    پيش فرض

    متغیر های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) و برای بقیه ی نمونه آبجکت ها شناخته نمی شه.(حتی نمونه های آبجکت خودش) به عبارت دیگه شما می تونید برای هر آبجکتتون متغیری با نام یکسان ایجاد کنید که هر کدوم مقدار مختلفی داشته باشند.
    البته می تونید با اجرای یک اسکریپت برای آبجکتی تغییراتی در متغیر های محلی یک آبجکت دیگه رو ایجاد کنید و یا حتی متغیر هایی بسازید که همه ی آبجکت ها اون ها رو بشناسن که در ادامه میگیم.

  6. #16
    اگه نباشه جاش خالی می مونه mst_ab's Avatar
    تاريخ عضويت
    Oct 2007
    محل سكونت
    مشهد
    پست ها
    326

    پيش فرض انتساب

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

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


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

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


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

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


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

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

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

    علاوه بر این ها شما یک سری عملیات bitwiseدارید که برای این که مطالب این جلسه سنگین نشه بیخیال شدم (خسته شدم از بس تایپ کردم!!ا)اگه بعداً به دردتون خورد خواهم گفت . ولی اگه کسی اطلاعاتی در مورد این عملیات می خواد بره اینجا:http://www.answers.com/topic/bitwise
    باز هم اگه می خواین اینا رو هم بگم بگید تا بگم!
    Last edited by mst_ab; 23-02-2008 at 12:40.

  7. #17
    اگه نباشه جاش خالی می مونه mst_ab's Avatar
    تاريخ عضويت
    Oct 2007
    محل سكونت
    مشهد
    پست ها
    326

    پيش فرض

    گزاره ها:
    گزاره(Expression)می تونه یه عدد حقیقی مثل 3.4 ، یک عدد هگزا دسیمال (مبنای 16 که با $ شروع میشه مثل
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

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

  8. #18
    اگه نباشه جاش خالی می مونه mst_ab's Avatar
    تاريخ عضويت
    Oct 2007
    محل سكونت
    مشهد
    پست ها
    326

    پيش فرض

    عملگر ها به ترتیب تقدم به صورت زیر هستند: (تقدم یعنی مفسر 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 جواب بدون دونستن عملوند دوم قابل پیش بینی هست (که صفر میشه) ولی مفسر هر دو تا شو حساب می کنه.

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

  9. #19
    اگه نباشه جاش خالی می مونه mst_ab's Avatar
    تاريخ عضويت
    Oct 2007
    محل سكونت
    مشهد
    پست ها
    326

    پيش فرض

    به این سوالات پاسخ دهید:
    1 – فرق = با == چیه
    2- آیا گزاره(Expression) و عبارت(statement) یکی هستند؟
    3-در مورد هر کدوم از کد های زیر توضیح بدید.
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    منتظر جواب هاتون هستم
    Last edited by mst_ab; 30-01-2008 at 13:13.

  10. #20
    اگه نباشه جاش خالی می مونه mst_ab's Avatar
    تاريخ عضويت
    Oct 2007
    محل سكونت
    مشهد
    پست ها
    326

    پيش فرض

    اگه بچه ها جواب ندن بیخیال بقیش میشم!!

Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •