برنامه نویسی به زبان LUA Com (در محیط AutoPlay Media Studio)
دوستان عزیز در این تاپیک قصد داریم پیرامون برنامه نویسی به زبان LUA Com در محیط برنامه AutoPlay Media Studio بحث و گفتگو نماییم
------------------------------------
از دوستان خواهشمندم سوالات خود را در این تاپیک مطرح نفرمایید تا باعث به هم ریختن آموزش نشود. شما می توانید سوالات خود را در تاپیک مشکلات برنامه نویسی LUA Com مطرح نمایید. بعد از اتمام آموزش دو تاپیک به هم متصل خواهند شد
کد:
http://forum.p30world.com/showthread.php?t=254156
جلسه اول-معرفی محیط اسکریپت نویسی
خوب برای این که بتوانید اسکریپت بنویسید میتوانید روی شئ مورد نظر دابل کلیک کنید( البته یادم رفت که بگم این زبان شئ گراست) خوب، پنجره ی باز شده با توجه به ویژگی های جسم (تصویر، دکمه، چک مارک و ...) دارای تب های Setting و Attributs (برای تنظیم ویژگی های شئ مورد نظر) Quick Action (که به درد برنامه نویسی نمی خورد چون خیلی محدود است و بیشتر برای افراد آماتور ساخته شده) و بالاخره تب Script هست که در واقع بخش اصلی فعالیت ما در همین قسمت بود. در شکل زیر با دابل کلیک روی صفحه ی اصلی وارد Page Properties می شویم
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
1- اگر کد های شما در این قسمت نوشته شود قبل از نمایش صفحه برنامه ای که شما ساخته اید این کد ها اجرا میشوند (برای مثال شما میخواهید چک کنید که آیا این برنامه در کامپیوتری که در آن استفاده می شود Register شده است یا نه میتوانید کد هایتان را در این بخش قرار دهید)
2-اگر کد های شما در این قسمت نوشته شود در هنگام نمایش برنامه این کد ها برای یکبار اجرا میشوند (برای مثال زمانی که میخواهید در برنامه شما هنگامی که صفحه ی اصلی برنامه باز شد یک پیغام خوش آمد گویی به کاربر ارائه شود)
3-اگر کد های شما در این قسمت نوشته شود هنگامی که از این صفحه خارج میشوید (چون شما میتوانید بیش از یک صفحه در برنامه داشته باشید) این کد ها اجرا میشوند (برای مثال میخواهید زمانی که کاربر از برنامه خارج شد فایل به خصوصی پاک شود)
4-اگر کد های شما در این قسمت وارد شود بعد از نوشتن یک کد برای تایمر کد شما در آن زمان به خصوص اجرا می گردد (برای مثال شما می خواهید 10 ثانیه بعد از ورود کاربر به صفحه آهنگ پخش گردد کد ها در این قسمت وارد گردد)
5-اگر کد های شما در این قسمت نوشته شود به هنگام تغییر کانال های صوتی (مثلا زمانی که شما آهنگی را اجرا می کنید) این کد ها اجرا میشوند
6-اگر کد های شما در این قسمت نوشته شود زمانی که سایز برنامه شما توسط کاربر تغییر می کند (یعنی هنگامی که کاربر از گوشه ی پنجره برنامه شما گرفته و اندازه را تغییر میدهد) این کد ها اجرا میشوند (برای مثال میخواهید که اگر کاربر سایز پنجره را تغییر داد به او یک پیغام خطا مبنی بر اینکه این برنامه درست کار نخواهد کرد ارائه گردد)
7-اگر کد های شما در این قسمت نوشته شود زمانی که منویی باز میشود (منظورم همون منویی هست که شما هنگام رایت کلیک مشاهده می کنید که در این برنامه لزوما با رایت کلیک باز نمیشود و می توانید برای هر چیزی تعریف گردد) کد ها اجرا می شوند
8-اگر کد های شما در این قسمت نوشته شود زمانی که دکمه ای از روی کیبورد فشرده می شود این کد ها اجرا می گردد
9-اگر کد های شما در این قسمت نوشته شود زمانی که دکمه های موس فشرده می شود این کد ها اجرا می شوند
10-اگر کد های شما در این قسمت نوشته شود زمانی مکان موس تغییر می یابد این کد ها اجرا میشوند
11-با زدن این دکمه ویزارد اسکریپ نویسی ظاهر میگردد که بیشتر برای افراد مبتدی و نیمه حرفه ای است و زمانی که به طور کامل با کد ها آشنا شدید می توانید از Ctrl+Space استفاده کنید که سریعتر به مقصود برسید
12-این دکمه حاوی کد های ترکیبی است تا کاربر را از نوشتن چند باره آنها راحت کند
13-کاربرد این دکمه هنوز کشف نشده است!!!
14-این قسمت برای نشاندار کردن یک یا چند سطر است تا در زمانه که شما مثلا 300 خط اسکریپت نوشته اید بتوانید به راحتی اسکریپت مورد نظر خود را پیدا کنید
15-این قسمت برای ایجاد یک ماکرو هست که خود بحث یک جلسه است
16-این دگمه هم بیشتر شبیه یک منو است که در مواقع خیلی کم از آن استفاده می گردد
جلسه سوم-معرفی String , Table
این دو واژه رو به فارسی ترجمه می کنم تا راحتتر بتونید با آنها آشنا بشید چون کاربرد زیادی دارند و اگر آنها را به جای هم به کار ببرید نتیجه نخواهید گرفت
String در زبان فارسی به معنی رشته است. رشته تشکیل می شود از یک جمله، عدد و هر چیز دیگری اما نکته مهم این هست که رشته خود عدد نیست بلکه یک نماد هست به دو مثال زیر توجه نمایید:
A = 10
if A > 5 then
عمل مورد نظر
end
---------------
"A = "10
if A > 5 then
عمل مورد نظر
end
خوب، اونایی که کد ها رو سرسری خوندن حتما تو دلشون گفتن چرا این خنگه کد ها رو دوبار نوشته ولی باید خدمتون عرض کنم که در برنامه AMS کد اولی اجرا می شود ولی در کامپایل کد دومی با این خطا مواجه میشویم
attempt to compare number with string
بله اون دو تا گیومه که عدد 10 داخلشون قرار گرفت کار خودشون رو کردن و دیگه A یه عدد نیست بلکه یه String هست.
--------------------------------------------------------------------------------------------------------------------------
Table در زبان فارسی به معنی جدول هست. در این برنامه هم یعنی همین. دوستانی که با Qbasic کار کرده اند احتمالا تابع Bubble یادشون هست (که من بهش میگم تابع ماتریس) Table هم دقیقا همون کار رو میکنه البته کار رو ساده می کنه
مثلا شما یه جدول تو برنامه خودتون میخواهید بذارید. که هرکسی وارد برنامه شد اسم و تاریخ تولد خودشو وارد کنه (این مثال رو به صورت فارسی توضیح میدم چون هنوز اول راهه)
ابتدا دو تا جدول (List Box) ایجاد می کنیم یکی به اسم Name و دیگری به اسم Age
حال باید یه تابع Table در کار باشه که بتونه این اطلاعات رو روی یه فایل ذخیره کنه (هنگام خروج)
بعد یه تابع Table دیگه در کار باشه که بتونه این اطلاعات رو از روی فایل وارد برنامه بکنه (هنگام ورود)
و دوباره این حلقه تکرار بشه
خوب حالا شما پیش خودتون فکر می کنید چه کار راحتی بابا بریم پی کارمون این که چیزی نیست اما صبر کنید :28:اینطوری ما خیلی به اشکال بر میخوریم چرا؟
من یه مثال میزنم: فرض کنید 10 نفر اسم و سنشون رو وارد کردن و برنامه توی یه فایل ذخیره کرده
فردا این برنامه دوباره اجرا میشه نفر یازدهم اسمشو می نویسه اما یادش میره سنشو بنویسه
حال نفر دوازدهم هم اسم و هم سنشو وارد میکنه
بعله مشکل از اینجا شروع شد. سن نفر دوازدهم رفت رو سن نفر یازدهم و بعد ...
حالا باید یه اسکریپت دیگه بنوسیم که اگه یکی از خونه ها پر شد باید دیگری هم پر بشه
پس تا جلسه بعد خدا نگه دار :thumbsup:
جلسه چهارم- عملکرد های مقایسه و شرطی و ریاضی
عملکردهای مقایسه
در این زبان برنامه نویسی هم طبق زبان های دیگر دستورالعمل هایی برای مقایسه دو چیز با هم وجود دارد
این جمله ی مهم را به یاد داشته باشید: کبوتر با کبوتر، باز با باز
این یعنی اینکه عدد با عدد، رشته با رشته و ... مقایسه میشود و نمیتوان عدد را با رشته مقایسه کرد
علامت برگتر (>): این مورد فقط برای مقایسه عدد به کار میرود که جواب آن true یا false خواهد بود. مثلا نمیتوان به صورت زیر عمل کرد
"A = "Ali
"B = "Bardia
if A > B then
(Application.Exit(0
end
خوب شما خودتان قضاوت کنید این کد ها چه معنی می دهد!!! علی بزرگتر از بردیا!!! از چه نظر!!!
علامت کوچکتر (<): مثل مورد بالا
علامت بزرگتر مساوی (=>)و کوچکتر مساوی (=<): این دو علامت برای رشته میتوان به کار برد ولی زمانی که دو رشته برابرند که در این مورد به درد نمیخورد
علامت نامساوی (~=): در تمام موارد کاربرد دارد
علامت مساوی (==):در تمام موارد کاربرد دارد اما باید توجه داشت که = با == تفاوت عمده دارد و اگر به جای هم به کار برده شوند با خطا مواجه می شوید (چرا؟) چون اولی یک مقدار را به یک شی اختصاص می دهد اما دومی عمل مقایسه انجام می دهد و true یا false بودن را مشخص می کند
----------------------------------
عملکردهای شرطی
این عملکردها خود در توابع شرطی به کار می روند که عبارتند از
and
or
با یک مثال مفهوم این دو عملکرد را بیان می کنیم
A = 10
B = 30
C = 20
if A > B or B > C then
(Application.Exit(0
end
-------------------------
A = 10
B = 30
C = 20
if A > B and B > C then
(Application.Exit(0
end
خوب کد اولی اجرا میشه چون نوشته شده (اگه A بزرگتر از B که جوابش false هست یا B بزرگتر از C که جوابش true هست) که در کل جوابش true هست پس اجرا میشه
کد دومی اجرا نمیشه چون نوشته شده (اگه A بزرگتر از B که جوابش false هست و B بزرگتر از C که جوابش true هست) که در کل جوابش false هست پس اجرا نمیشه
----------------------------------
عملکردهای ریاضی
این عملکرد ها + - * / هستن که نیاز به توضیح ندارن و تنها نکته شون تقدمشون هستش که درس اول راهنمایی هستش
پروژه اول-حل معادله درجه دوم
بله این پروژه دیگه قدیمی شده ولی چاره چیه هنوز بهترین مثال هستش پس بسم الله
یه پروژه جدید به اسم Equation ایجاد می کنیم چون از همین الان می خوایم گرافیکی کار کردن رو هم یاد بگیریم پس یکمی سلیقه به خرج میدیم
این پروژه رو از لینک زیر دریافت کنید:
کد:
http://rapidshare.com/files/139562565/Equation__By_Arsa_Persian_.rar.html
حتما کد های دکمه Solve رو بدقت بخونید بعد توش بگردید ببینید چی به چی ربط داده شده
این اولین پروژه شماست پس بدقت توش بگردید به همین سادگی که شما یه دلتا بگیرید و ... نیست
اگه از روی این پروژه سرسری رد شید توی مطالب بعدی دچار مشکل می شید
بعد اینکه این برنامه رو بدقت گشتید سعی کنید یکیشو بنویسید، از روش کپی نکنید بلکه خودتون کار کنید اگه چیزی اضافه پیدا کردید روش بذارید بعد توی تاپیک مشکلات برنامه نویسی LUA Com (مشکلات برنامه نویسی در AutoPlay Media Studio) سوالات خودتون رو مطرح کنید.
از مطرح کردن سوالات خود در این تاپیک جدا خودداری نمایید تا نظم آموزش به هم نخوره
پروژه دوم-ارسال دکمه های کیبورد
این پروژه رو البته یکی از بچه های فروم خواسته بودند که من براشون آماده کردم بد ندیدم بزارم اینجا تا ببینید با این زبان برنامه نویسی چی کارا که نمی شه کرد البته توضیحات میمونه واسه بعد چون باید نحوه Call Function از DLL رو یاد بگیریم که یکم سخته ولی ممکنه:10:
اینم لینک دانلود:
کد:
http://rapidshare.com/files/140478118/Arsa_Persian_Key_Strocker.exe.html
جلسه پنجم- تعریف Function
دوستان عزیز این جلسه قصد دارم در مورد یک بحث مهم صحبت کنم
همونطور که میدونید هیچ چیزی در دنیا بدون عیب نیست مگر انچه خداوند افریده است. نرم افزارها و زبان های برنامه نویسی که ساخت همین مخلوق خداوند است نیز بی عیب نیست حال ممکنه این زبان مثل VB خیلی کامل باشه و نیاز کمی به تکمیل و ارائه نسخه جدید باشه یا مثل LUA Com که هنوز نوپاست و دارای تعریفات کمی برای برنامه نویسی هستش
اما این برنامه یک قابلیت فوق العاده به نام Global Function داره که شما میتونید یک عملکرد رو به صورد یک دستور یا همون Function در بیاورید یه مثال بزنم خیلی راحت متوجه منظورم میشید
فرض کنید که ما در برنامه ای که میخواهیم بسازیم مدام از فرمول حل معادله درجه دو در اون استفاده شده خوب شما میتونید هرجا که لازم شد این فرمول رو تعریف کنید. اما این قابلیت Global Function باعث میشه هم در وقت شما صرفه جویی بشه هم از نوشتن تعداد خط های اضافی برنامه خلاص شوید.
حال برای اجرای این کار به روش زیر عمل کنید
از منوی Project گزینه Global Functions رو انتخاب کنید که با یه محیط آشنا مواجه میشید حال طبق تعریف زیر عمل کنید:
()نام تابع function
تابع یا عملکرد مورد نظر
end
که برای هر عملکرد جدید باید یک بار به روش بالا عمل کنید و یک مثال
میخواهیم همون یافتن جواب معادله درجه دو رو به صورت یک Function بنویسیم
()function moadeleh
(X_1 = (b + (Math.Sqrt((b^2)-(4*a*c))))/(2*a
(X_2 = (b - (Math.Sqrt((b^2)-(4*a*c))))/(2*a
end
حال هر کجا که لازم شد می تونید این Function رو به کار ببرید
اما این Global Function هم یک عیب بزرگ دارد اونم اینه که باز هم شما نمیتونید خارج از دستورات برنامه در آن Function تعریف کنید (یعنی شما می تونید توابع ترکیبی تعریف کنید ولی نه خارج از دستورات برنامه)
که برای رفع این مشکل متوسل DLL ها خواهیم شد
:40:استفاده از دکمه ی تشکر سبب دلگرمی است:40: