شنبه 27 آبان 1396 | Saturday 18 th of November 2017 صفحه اصلی گروه الکترونیکی کامپیوتر
ساختار اموزش الگوریتم Floyd در نرم افزار swish max

ساختار الگوریتم را با ارائه یک مثال که در کتاب همراه با جزئیات  توضیح داده شده  اموزش      می دهیم. جزئیات هر ماتریس را در یک  sceneقرار دادیم . بر طبق مثال ، فایل فلش شامل چهار sceneبوده و در هر sceneنحوه محاسبه یک ماتریس را نشان می دهیم. در مرحله اول در پانل outlineراست کلیک کرده و با استفاده از گزینه یinsert scene  چهار  sceneخالی در صفحه ایجاد می کنیم.

در sceneاول ، کادر و جعبه متنی را حاوی نام و مشخصات و فرمول کلی الگوریتم را قرار دادیم. در بخش دیگر صفحه ، گراف مثال را با ابزار های درج شئ در پانل ابزار رسم کردیم.  همچنین جعبه متنی را در صفحه ایجاد و در ان فرمول محاسبه خانه های ماتریس را می نویسیم.  سپس از گراف و کادر توضیحات و جعبه متن فرمول کپی گرفته و در scene  های دیگر نیز paste       می کنیم.

 در سکانس(scene)   اول بر طبق توضیحات  ماتریس  مجاورت  که شامل هزینه مسیر بین رئوس گراف  است را رسم می کنیم . برای رسم ماتریس ، به تعداد خانه های ان، از پانل ابزار مربع های با اندازه مساوی کشیده و بر روی  مربع ها ، جعبه متن اعداد ماتریس را قرار می دهیم. سپس همه انها را انتخاب و راست کلیک کرده و با انتخاب گزینه یgroup as group  به یک گروه از اشیاء تبدیل کرده و نامی را به ان اختصاص می دهیم.

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

به عنوان مثال در سکانس دوم علاوه بر ماتریس  ، ماتریس مجاورت هم باید حضور داشته باشد  . ماتریس مجاورت را از سکانس قبلی کپی گرفته و در سکانس   دوم در همان مختصاتی که در سکانس اول قرار گرفته بود،  قرار می دهیم. سپس در پانل  timelineسکانس دوم بر روی گروه ماتریس مجاورت ،  کلیک کرده و با انتخاب ابزارmotion  (حرکت) ماتریس را از جایی که قرار دارد کشیده و به سمت راست صفحه کاری می بریم. سپس در همان مکان اولیه ماتریس  مجاورت در سکانس دوم قبل از انتقال ، ماتریس   را  رسم می کنیم.

 

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

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

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

در سکانس دوم به بعد برای نشان دادن نحوه محاسبه ماتریس ها ، اعداد داخل ان را به button   یا همان کلید تبدیل کنیم که با کاربر با کلیک بر روی ان نحوه محاسبه اش را مشاهده کند .روال پیاده سازی این مطلب برای یکی از اعداد ماتریس سکانس دوم توضیح می دهیم.

ابتدا بر روی عدد مورد نظر کلیک راست کرده و با انتخاب گزینه ی  convert to button  به کلید تبدیل می کنیم. سپس بر روی کلید کلیک کره تا در پانل propertiesمشخصات ان مشاهده شود. در این پانل گزینه ی  has sparate hit stateرا تیک می زنیم تا محدوده قابل کلیک این کلید را بتوانیم تغییر دهیم. سپس در پانل درختی  outlineروی نام کلید کلیک کرده تا حالتهای مختلف ان از جمله over, down,up/hit stateباز شود. سپس بر روی حالت up/hit stateکلیک        می کنیم تا لیست ان باز شود. دور جعبه متن عددی که انتخاب کردیم کادری کشیده می شود. سپس با استفاده از ابزار transform toolsدر پانل ابزار، محدوده قابل کلیک این کلید را به  اندازه خانه های ماتریس بزرگ می کنیم. پیش فرض همه این لیستها همان شکل اولیه عددی است که تبدیل به کلید شده ، برای اینکه در حالتی که ماوس روی ان قرار بگیرد در همین پانل روی گزینه ی  over   نیز کلیک می کنیم تا لیست ان باز شود .  سپس جعبه متن حاوی این عدد را باز کرده و در پانل properties  خصوصیات ظاهری ان را از جمله رنگ و اندازه  ، تغییر می دهیم. بدین ترتیب در ماتریس عددی خواهیم داشت که وقتی نشانگر ماوس روی مربع حاوی این عدد می رود تغییر شکل داده و قابل کلیک می شود.

حال برای اینکه با کلیک بر روی این عدد نحوه محاسبه ان در کادر زیر نمایش داده شود ، به صورت زیر عمل می کنیم . ابتدا از جعبه متن متغیر کادر فرمول کپی گرفته و اطلاعات مربوط به محاسبه این عدد  ماتریس را در ان می نویسیم.  همانطور که قبلا نیز گفته شد ، اعداد مربوط به هر ماتریس با توجه به بعضی از اعداد ماتریس مرحله قبل محاسبه می شود. بوسیله رسم یک مربع    تو خالی دور کادر حاوی اعداد مذکور را حاشیه می کشیم. سپس این اشیاء را انتخاب و با انتخاب گزینه ی  convert to spriteبه movie clipتبدیل می کنیم. سپس این movie clipرا در جایی از خط زمان مربوط به این سکانس ، placeمی کنیم.  سپس در رویداد on press()عدد مورد مثال که به کلید تبدیل کردیم دستور زیر را می نویسیم :

On (press) {

  );gotoSceneAndPlay("<current scene>", 60

}

اجرای این قطعه کد ، خط زمان اجرای این سکانس را به فریم حاوی movie clipاین عدد که در اینجا به طور مثال فریم شماره 60  سکانس دوم می باشد ، میبرد. برای دیگر اعداد این ماتریس و ماتریس های مراحل بعدی نیز به همین ترتیب  movie clip  ساخته و در جایی از سکانس مربوط به خود placeمی کنیم. سپس ان عدد را به کلید تبدیل کرده و با استفاده از دستور بالا ، با کلیک کردن روی ان ، خط زمان را به فریم حاوی movie clipمنتقل می کنیم. مرحله بندی این الگوریتم ، مانند الگوریتم های دیگر پیاده سازی نشده است. کلید های "مرحله بعد" و "مرحله قبل" این الگوریتم بین سکانس های این الگوریتم پیمایش می کند. برای کلید "مرحله بعد" این قطعه کد اسکریپت را در پانل اسکریپت برای رویداد on clickان می نویسیم:

on (press)

{

Goto scene and play("<next scene>”,1)

}

این دستور خط زمان اجرا را به سکانسی که به عنوان پارامتر داده می شود ، میبرد . اگر به جای نام سکانس عبارت<next scene>را بنویسیم خط زمان را به سکانس بعد از سکانس جاری می برد. پارامتر این دستور ، شماره فریم سکانس مورد نظر را مشخص می کند و به این ترتیب کلید "مرحله بعد" در همه سکانس های این الگوریتم خط زمان اجرا را به فریم شماره یک سکانس بعد از ان     می برد. برای کلید "مرحله قبل" نیز در رویداد onpress()ان قطعه کد زیر را که مشابه کلید "مرحله بعد " است می نویسیم :

on (press)

{

Goto scene and play("<previous scene>”,1)

}

همانطور که از شکل این دستور پیداست ، خط زمان اجرا را به فریم شماره یک سکانس قبلی  می برد

Compatability by:
آخرین به روز رسانی سایت: سه شنبه, 22 اسفند 1391 - 00:26