Script های مربوط به زمان

این ها script   هایی هستند که مربوط به زمان هستند .

PageTimer("","")

ExitTimer("")

ScriptTimer("","")

RunScript("")

Pause("")

Return()

Refresh()

در آموزش های قبلی برخی از این کد ها استفاده کردیم اما در این بخش بیشتر به این script ها می پردازیم :

PageTimer("ms","PageLabel")

با اجرای این کد می توان پس از زمانی که تعیین می کنید به صفحه مورد نظر بروید . مثلا در این کد پس از گذشت 1000 میلی ثانیه (1 ثانیه) به صفحه ای که با Label آن را در قسمت دوم نوشته ایم (در اینجاpage 2  ) می رود :

PageTimer("1000","Page 2")

ExitTimer("ms")

این یک تایمر است که پس از گذشتن زمان مشخص شده پنجره بسته می شود (عمل Exit() انجام می شود) . در این کد پس از کذشتن یک دقیقه پس از اجرای این Script پنجره بسته خواهد شد .

ExitTimer("60000")

ScriptTimer("ObjectLabel","ms")

پس از گذشتن زمان تعیین شده Script مورد نظر اجرا می شود . در اینجا فقط منظور شئ Script نیست این کد مربوط به هر شئی که بتوان در آن Script مورد نظر خودتان را وارد کنید مثلا Text Button ، Rectangle و... می باشد . در قسمت اول نام شئ و در قسمت دوم زمان را می نویسیم . در مثال شئی با نام Script پس از 1 ثانیه اجرا می شود .

ScriptTimer("Script","1000")   

RunScript("ObjectLabel")

این کد مانند کد بالا عمل می کند با این تفاوت که بلافاصله Script را اجرا می کند .

RunScript("Script")

Pause("ms")

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

Return()

اگر خطوط Script ها را مانند یک رشته سیم فرض کنیم ، دستور Return مانند کلیدی است که  این ارتباط و رسانایی بین رشته ها را قطع می کند . یا وقتی به این خط رسید بقیه خط ها را نمی خواند . از اینscript  می توانید در دستور شرطی If یا حلقه for استفاده کنید .

Refresh()

تقریبا از اسم این کد می توان به طرز کار آن پی برد . این Script در حلقه ها بسیار مفید است . مثلا در یک حلقه Normal در هنگام شمارش شما نمی توانید از کلید های دیگر استفاده کند . اما اگر در حلقه خود Refresh را جای دهید این مشکل برطرطرف می شود .

برای اجرای کد های نمونه زیر ، یک Text با نام Counter ایجاد کنید .

یک حلقه با Refresh :

For n=1 To 100000

  i=n

  DisplayValue("Counter","i")

  Refresh()

Next n

یک حلقه Normal  :

For n=1 To 100000

  i=n

  DisplayValue("Counter","i")

Next n

تغییری که در اجرای این دو حلقه وجود دارد کاملا محسوس است .

 

 

جواب سوالها :

سوال 1 . تمرین N خط صفحه را به چند قسمت تقسیم می کند را طوری بنویسید که اگر عدد ورودی از 0 کمتر بود پیامی با این مضمون که "عدد را اشتباه وارد کرده اید ، دوباره تلاش کنید"  ظاهر شود .

جواب : یک دستور شرطی If به آن اضافه می کنیم . دستور زیر مربوط به کلید است :

i=0

p=1

If (A>0) Then

  For 1 To A

    i=i+1

    p=p+i

  Next

  DisplayValue("Answer","p")

Else

  Message("The number is not correct , try again .","")

End

 

سوال 2 . ساعتی بسازید که ساعت ، دقیقه و ثانیه را وارد می کنیم و در همان زمانی که ما مشخص کردیم  یک موسیقی پخش کند . (برای پخش موسیقی از این Action script استفاده کنید : AudioOpen("") ) .

جواب : اول یک ساعت با قرار دادن CBK_TimeHMS در Label متن (Text) مورد نظر بسازید . بعد 3 تا InputText درست می کنیم تا ساعت ، دقیقه و ثانیه مورد نظر را در آنها ثبت کنیم . در Properties آنها ، دکمه رادیویی Integer را انتخاب و نام های Hour ، Min  و Sec را برای آن ها انتخاب کنید . حالا یک دکمه بسازید که در آن دستور یک Script به نام TimeSet را اجرا می کند . کار این Script این خواهد بود که زمان وارد شده در TextInput ها را با زمان فعلی مطابقت دهد . همچنین این Script باید هر ثانیه اجر شود تا بتواند زمان را تشخیص دهد . پس برای دکمه می نویسیم :

RunScript("TimeSet")

و برای <;span style="font-family: Tahoma">Script می نویسیم  :

 

H=CBK_Hour

M=CBK_Minute

S=CBK_Second

If (Hour=H) Then

  If (Min=M) Then

    If (Sec=S) Then

AudioOpen("E:\Musics\Mansour\The Fugitive.mp3")

    End

  End

End

ScriptTimer("TimeSet","1000")

 

در 3 خط اول ساعت ، دقیه و ثانیه را به  3 تا Integer نسبت میدهیم که در مراحل بعدی اسکریپت نویسی آسان تر باشد . دستور شرطی If هم در اینجا به این شکل کار می کند که اول ساعت را با ساعت کامپیوتر مقایسه می کند اگر مساوی بودند به سراغ دقیقه و پس از آن ثانیه می رود و اگر ثانیه هم درست بود دستور را اجرا می کند . در خط آخر هم پس از 1 ثانیه دوباره خودش را اجرا میکند .

 

سوال 3 . یک کلید بسازید که نام آن Play است . با کلیک کردن روی آن یک موسیقی پخش می شود و همچنین نام آن به Stop تغییر می کند که با کلیک کردن دو باره موسیقی قطع می شود . (برای قطع شدن موسیقی از این Action script استفاده کنید : AudioStop("") ) .

یک ترفندی که در اینجا می تونیم به کار ببریم این است که به هر کدام از حالت ها یک عدد نسبت دهیم  مثلا  یک عدد صحیح (Integer) تعریف می کنیم و برای حالت Play آن عدد 0 و برای حالت Stop عدد 1 را در نظر می گیریم . در اینجا نام عدد صحیح (Integer) ، play است . برای اینکه اولین بار که روی دکمه کلیک می کنید ، موسیقی پخش شود ، در قسمت Script مربوط به Properties صفحه ینویسید :  play=0

نام دکمه را هم به Play تغییر دهید و این کد هارا در قسمت Script دکمه بنویسید :

If (play=0) Then

AudioOpen("e:\beethoven\moon shine.mp3")

  AudioPlay()

  name$='Stop'

  LoadText("TextBTN","name$")

  play=1

  Return()

End

If (play=1) Then

  AudioStop()

  name$='Play'

  LoadText("TextBTN","name$")

  play=0

End

در اینجا فرض شده که موسیقی ای باز نشده پس اول موسیقی را باز می کنیم و سپس آن را Play می کنیم . اما اگر بخواهیم به جای STOP از Pause استفاده کنیم یعنی از این Script استفاده کنیم : AudioPause()، باز هم از اول موسیقی اجرا خواهد شد .برای رفع این مشکل می توانیم دستور AudioOpen را در قسمت Script صفحه قرار دهیم ، و بعد از آن دستور Stop را می آوریم تا فورا موسیقی Stop شود . به این شکل :

play=0

AudioOpen("e:\beethoven\moon shine.mp3")

AudioPause()

و در قسمت Script دکمه هم کد های زیر را می نوسیم :

If (play=0) Then

  AudioPlay()

  name$='Stop'

  LoadText("TextBTN","name$")

  play=1

  Return()

End

If (play=1) Then

  AudioPause()

  name$='Play'

  LoadText("TextBTN","name$")

  play=0

End

 

سوال 4 . برنامه ای بسازید که مینیمم وماکزیمم بین دو عدد را به  دست آورد و در دو خروجی مجزا (Text) نمایش دهد .

این نسبت به 3 تا قبلی آسون تره !

اول دو تا Text ایجاد کنید و نام آنها را Min و Max بگذارید. دو تا InputText هم بسازید ، آنها را به شکل Float تعریف کنید (در Properties قسمت Output گزینه Float را انتخاب کنید ) و نام آن ها (قسمت Output در Properties) را A1 و A2 بگذارید . یک دکمه هم بسازید و کد های زیر را در آن وارد کنید:

If (A1>A2) Then

  DisplayValue("Max","A1")

  DisplayValue("Min","A2")

End

If (A2>A1) Then

  DisplayValue("Max","A2")

  DisplayValue("Min","A1")

End

اما اگر هر دو مساوی باشند عددی برای نمایش در Min و Max نخواهد داشت . اگر این کد را وارد کنید در Min و Max می نویسد که دو عدد مساوی هستند .

If (A1>A2) Then

  DisplayValue("Max","A1")

  DisplayValue("Min","A2")

End

If (A2>A1) Then

  DisplayValue("Max","A2")

  DisplayValue("Min","A1")

End

If (A1=A2) Then

  Equl$=CHAR(A1)+' = '+CHAR(A2)

  DisplayValue("Max","Equl$")

  DisplayValue("Min","Equl$")

End

سوال 5 . برنامه ای بسازید که با وارد کردن 3 عدد به عنوان 3 ضلع مثلث بگوید که این مثلث قائم الزاویه هست با نه ؟ (با استفاده از قضیه فیثاغورس)

برای ورودی 3 عدد 3 تا Text Input بسازید و برای خروجی آن حالت Integer و نام های A ،B  و C بگذارید . می خواهیم برنامه را طبق قضیه فیثاغورس بنویسیم :

اول با دستور شرطی مینویسیم که آیا مجذور A مساوی مجذور B به اضافه C  است یا نه . اگر مساوی بود که پیامی ظاهر می شود و می گوید که مثلث قائمه است ، اگر مساوی نبود می بیند که آیا مجذور B مساوی مجذور C به اضافه A  است یا نه و به همین شکل ادامه پیدا می کند و اگر 3 ضلع توانایی  ساخت مثلث قائمه را نداشتن با پیامی به ما هشدار می دهد .

یک کلید بسازید و این دستور ها را به آن بدهید :

Yes$='Yessss'

No$='No'

If (A^2=B^2+C^2) Then

  Message("","Yes$")

Else

  If (B^2=A^2+C^2) Then

    Message("","Yes$")

  Else

    If (C^2=A^2+B^2) Then

      Message("","Yes$")

    Else

      Message("","No$")

    End

  End

End

سوال 6 . یک برنامه که پنجره فرمت ویندوز را 100000 بار در ثانیه نشان دهد !

خیلی آسونه و البته زیاد نتیجه جالبی ندارد (می تونید امتحان کنید) حالا من 100 بار می زنم خودتون اگه خواستید 100000 بار بزنید (اما نزنین بهتره) .

For 1 To 100

  Run("rundll32.exe","shell32.dll,SHFormatDrive")

  Refresh()

Next

 

همون طور که میبینید بیشتر سوالها در مورد دستور If است و فقط 2 تا از اونها درباره For است . این قسمت چون می

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

 

وحید نائینی

این آدرس ایمیل توسط spambots حفاظت می شود. برای دیدن شما نیاز به جاوا اسکریپت دارید
این آدرس ایمیل توسط spambots حفاظت می شود. برای دیدن شما نیاز به جاوا اسکریپت دارید