eliaso
04-25-2009, 02:36 PM
http://img65.imageshack.us/img65/6636/2lc6qx8ca1.gif
هذه اللغة تعتبر من اسهل لغات البرمجة اللتي يدعمها الـPSP
فهي غير معقدة كبقية اللغات وتستطيع تعلمها وإحترافها في ايام معدودة
وهي كغيرها من لغات البرمجة تستخدم فيها الأكواد لعمل البرامج والألعاب
ومتطلباتها بسيطة جداً وليس كمتطلبات بعض اللغات الأخرى
http://img212.imageshack.us/img212/361/97367663mq5.gif
متطلبات لغة LUA بسيطة جداً وغير معقدة وهذه هي المتطلبات:
1-برنامج LUAPlayer للـPSP لتشغيل برامجكـ والـعابكـ التي عملتها في لغة LUA
http://dl.qj.net/dl.php?fid=14654
(يوجد طريقة اخـرى في الدرس الثاني وهي أفضل من هذه الطريقة)
2-برنامج LuaIDE لكتابة الأكواد (تستطيع الأستغاء عنه وأستعمال المفكرة)
http://psparadize.free.fr/download/logiciels/LuaIDE.zip
http://img212.imageshack.us/img212/361/97367663mq5.gif
الدرس الأول
(كتابة برنامجكـ الاول في لغة LUA)
مقدمة:
برنامجنا اللي راح نعمله الان راح يكون عمله بكل بساطة
طباعة كلمة على شاشة الـPSP , وراح يكون مقسم على عدة مراحل
وكل مرحلة مشروحة بالتفصيل الممل :smailes17:
http://img212.imageshack.us/img212/361/97367663mq5.gif
أولا:التعليقات (Comments):
التعليقاتـ تستخدم لترك معلومات او ملاحظات عن كودك
التعليقات مفيدة جداً لكـ فإذا مثلاً عملت لك برنامج وتوقفت عن عمله لمدة طويلة ورجعت له
ماراح تعرف عمل كل الاكواد اللي كتبتها ولاكن إذا كتبت ملاحـظات راح تتذكر بسهولة
وكل هذا راح يتضح لك عندما تبدأ في كتابة الاكـواد
إذا كيف تكتب التعليقات؟ هذا ماسنتعلمه الان
إذاً لنبدأ كتابة برنامجنا: أفتح المفكرة او برنامج LuaIDE وأضف إليه الكود التالي:
My First LUA Program --
By Eliaso , Bramjnet.com --
كما ترا , التعليقات تكتب في البداية مع شرطتين (--)
أي شي تكتبه بعد الشرطتين لن يعتبره الـPSP من ضمن الكود , بل سيتجاهله كلياً
لاكـن انتبه ! يجب ان تكتب التعليق على نفس الخط من الكود
إذا ادرت ان تكتب في سطر جديد يجب ان تضع الشرطتين (--) من جديد <<مثل ماعملت في المثال
http://img212.imageshack.us/img212/361/97367663mq5.gif
ثانياً:وضع الألوان وطريقة كتابتها:
الأن سنضع كود اللون الذي سنستخدمه لاحقاً في طباعة النص على الشاشة
علينا الأن تحديد لون لنستخدمه في النص الذي سيظهر على الشاشة لاحقاً
اوكي الان ضع الكود التالي في برنامجك لاتنسى اكتب الكود على سطر واحد
وايضاً يمكنك ان تترك سطر بين التعليق الذي كتبناه قبل قليل وبين هذا الكود
Orange = Color.new(255,128,0)
الأن حددنا اللون الذي سنستخدمه لاحقاً لطباعة نص على الشاشة بإستخدام قيم (RGB)
انا أخترت اللون البرتقالي ووضعت قيمه في الكود (255,128,0) وراح اشرح لكم كيفية إيجاد قيم (RGB) لكل لون تريده في نهاية هذه الفقرة
نلاحظ في بداية الكود كلمة (Orange) هذه تسمى متغير (Variable) وهذا المتغير للإختصار فإذا اردنا إستخدام اللون البرتقالي الذي حددته انا في اي جزء من الكود
مره اخرى مانكتب الكود بالكامل فقط نكتب اسم المتغير والذي هو في هذا الكود (Orange) ويعني (برتقالي) وانت تستطيع كتابة ماتريد ولاكن بدون مايتغير اللون
يعني المتغير للإختصار وليس له علاقة باللون لإن اللون , يتم تحديده من خلال قيم (RGB) وليس من خلال المتغير (Variable)
وبعد المتغير أتت علامة (=) وهذه تدل على ان المتغير يعمل عمل الذي ياتي بعد علامة (=)
والذي بعد علامة (=) هو اللون الذي حددناه إذاً المتغير (Orange) عمله في هذا الكود هو وضع اللون البرتقالي
(ولاتشيل هم راح يأتي درس في المستقبل بإذن الله سوف اشرح فيه كل شي عن المتغيرات)
راح اعطيكم مثال آخـر وليس له علاقة ابداً بالكود فهو فقط للتوضيح:
منتدى برامج نت إبداع وتميز = Bramjnet.com
إذا لو نكتب Bramjnet.com فهذا يعني اننا نقصد منتدى برامج نت إبداع وتميز
وايضاً لو نكتب منتدى برامج نت إبداع وتميز فإننا نقصد Bramjnet.com
ولاكن الأقصر والأوضح والأسهل للحفظ هي Bramjnet.com إذاً راح نسخدمها لسهولتها وقصرها
هذا بالضبط مانتكلم عنه نحن في الكود فأي شي يأتي بعد وقبل علامة يساوي (=) يدل على انهم يعملون نفس العمل
وبعد علامة يساوي أتى الامر Color.new وهذا مايبيله شرح واضح مره
هو يأمر البرنامج بوضع اللون الذي ياتي بعده على شكل قيم (RGB)
وبعد أمر اللون أتى اللون المكتوب على شكل قيم (RGB) وهو اهم شي وسيحدد اللون الذي يظهر لنا
الان أنتهينا من وضع اللون وعرفنا كيفية كتابته ولاكن بقي لنا كيفية إيجاد قيم اي لون نريده وهذا شرح لكيفية إيجاد قيم اي لون نريده بإستخدام برنامج الرسام
أولاً: أفتح برنامج الرسام عن طريق ابدأ ==> كافة البرامج ==> البرامج الملحقة ==> الرسام
ثانياً: من الخيارات اختار خيار "ألـوان" ومن خيار "ألوان" أختار خيار "تحرير الألوان"
http://img207.imageshack.us/img207/7265/16661434.jpg
ثالثاً: راح تظهر لك نافذة صغيرة أضغط على "تعريف الألوان المخصصة >>"
http://img89.imageshack.us/img89/9660/55751546.png
رابعاً: أختار اللون الذي يعجبكـ وانا اخترت اللون المفضل لدي أكيد البرتقالي :smailes107:
http://img89.imageshack.us/img89/7444/10927867.jpg
خامساً: المستطيل اللي باللون الاحمر في الصورة العلوية يحتوي على 3 فراغات(أحمر,أخضر,أزرق)
نضع قيم اللون الذي اخترناه في الكود بالترتيب طبعاً , مثل ماعملت انا بالضبط
http://img212.imageshack.us/img212/361/97367663mq5.gif
ثالثاً:طباعة نص على الشاشة:
الان سنستخدم أمر الطباعة على الشاشة , ضع هذا الكود في برنامجك وافصل بينه وبين اخر كود سطر واحد
screen:print(200, 100, "eliaso", Orange)
أولاً: (scree:print) بإختصار هذا الأمر يقول للبرنامج بأنه يطبع النص على الشاشة.
ثانياً: (200) و تسمى (x) وهذه تحدد بعد النص عن يسار الشاشة بالبكسل(هنا بعد النص عن يسار الشاشة 200 بكسل).
ثالثاً: (100) و تسمى (y) وهذه تحدد بعد النص عن أعلى الشاشة بالبكسل(هنا بعد النص عن أعلى الشاشة 100 بكسل).
(أبعاد الـPSP: الطول:272 بكسل العرض:480 بكسل)
رابعاً: (eliaso) وهذا النص الذي سيظهر على الشاشة (اكتب مكانه ماتشاء).
خامساً: (Orange) هذا متغير اللون الذي وضعناه من قبل (راجع الفقرة الثانية) وهذا يخبر البرنامج بلون النص الذي تريده للنص (لاتنسى دائماً نضع اللون قبل ان نستخدمه مثل ماعملت).
http://img212.imageshack.us/img212/361/97367663mq5.gif
رابعاً:إظهار برنامجنا على الشاشة:
أضف الكود التالي لبرنامجكـ
screen.flip()
بإختصار هذا يجعل برنامجك يظهر على الشاشة ويكون مرئي وواضح.
الأن أكتمل برنامجنا وراح يشتغل بإذن الله وراح يظهر النص على الشاشة باللون اللي اخترناه
ولاكـن راح يظهر النص لمدة قصيرة تقريباً أقل من ثانية واحدة
إذا يجب علينا إبقاء النص على الشاشة لمدة أطول!
إذا أضف هذا الكود الأخير والصغير للبرنامج:
while true do
screen.waitVblankStart()
الأن النص اللي في برنامجنا راح يكون مرئي للأبد ولن يختفي بإذن الله.
http://img212.imageshack.us/img212/361/97367663mq5.gif
خامساً وأخيراً:كود صغير جداً يفيد بإنتهاء البرنامج
end
الأن احفظ عملك بإسم (scripX.lua) الـX بدله بـp لإن الكلمة بالكامل لاتظهر في المنتدى ولا اعلم لماذا !
لاتنسى يجب ان تكون صيغة الملف (Lua)
وهذا هو الكود بالكامل:
-- My First Lua Program
-- By Eliaso , Bramjnet.com
Orange = Color.new(255,128,0)
screen:print(200, 100, "eliaso", Orange)
screen.flip()
while true do
screen.waitVblankStart()
end
يوجد طريقة أفضل في نهاية الدرس الثاني
الأن حمل برنامج LUAPlayer وضعه في المسار التالي:
http://img207.imageshack.us/img207/7328/53468166.png
الأن بعدت مانقلت البرنامج للـPSP أعمل مجلد جديد واختار له الاسم الذي يعجبك في المسار التالي:
http://img402.imageshack.us/img402/5354/38737303.png
الأن ضع برنامجك الذي عملته قبل قليل في المجلد الجديد في المسار التالي:
http://img11.imageshack.us/img11/1479/35551633.png
اوكي الأن شغل الـPSP وأذهب إلى برنامج LUAPlayer
الان ادخل إلى مجلد Applications بواسطة الضغط على زر الدائرة
الان راح تشوف مجلدين ادخل على المجلد الذي عملته انت بواسطة الضغط ايضاً على زر الدائرة
واخيراً راح تشوف السكربت الذي عملته افتح عليه بواسطة الضغط على زر الدائرة
طبعاً ماراح تكون فيه خلفية للنص وايضاً لاتستطيع أيقاف ظهور النص والعودة إلى برنامج LuaPlayer
ولاكـن في المستقبل بإذن الله راح نتعلم كيف نضع خلفية وكيف نتحكم ببرامجنا
إلى هنا أنتهى درسنا الأول أتمنى انه كان خفيف وسهل ومفهوم
http://img212.imageshack.us/img212/361/97367663mq5.gif
الدرس الثاني
(المتغيرات)
مقدمة:
في هذا الدرس سوف تتعلم إستخدام المتغيرات في برنامجك.
المتغيرات مهمة جداً وقريباً سوف تصبح من أعز أصدقائكـ في لغة البرمجة LUA.
المتغيرات هي لتخزين الاوامر والمعلومات مثل أمر اللون في الدرس الاول
خزناه بإسم , وكان الأسم (Orange) *راجع الدرس الاول
راح نتعلم في هذا الدرس كتابة برنامج بسيط يستخدم المتغيرات
وأيضاً , سنتعلم القيام بعملية حسابية بسيطة بواسطة لغة البرمجة LUA.
الان راح نبدأ بإختيار اللون الذي سوف يطبع عمليتنا الحسابية على الشاشة.
طبعاً طريقة وضع اللون مثل ماتعملنا في الدرس الأول تماماً.
جرب أنك تختار اللون الذي يعجبك وضعه في بداية الكود ,
طبعاً انا اخترت اللون المفضل لدي والذي هو اللون البرتقالي *يمكنك أن تبدله بأي لون تحبه بالطريقة التي تعلمناها سابقاً
الان أفتح المفكرة أو برنامج LuaIDE وأضف الكود التالي إليها
-- أمر وضع اللون
Orange = Color.new(255,128,0)
إذا قرات الدرس الاول المفروض أنك تكون عارف ماذا يعني هذا الكود لذلكـ لن أشرح هذا الكـود.
الأن راح نكتب المتغير الأول , وسوف يستخدم هذا المتغير لتخزين تاريخ ميلادك
يمكنك كتابة تاريخ ميلادكـ بالتاريخ الهجري أو التاريخ الميلادي وأنا وضعت تاريخ ميلادي
*يمكنك إستبداله إن أردت أن تحسب عمرك أو عمر أي شخص آخـر
-- أكتب تاريخ ميلادك بدل التاريخ الموجود (1993)
myBirthYear = 1993
مافعلته هو وضع تاريخ ميلادي (1993) وتخزينه في المتغير الذي سميته "myBirthYear"
وسنقوم في وقت لاحق باستخدام هذا المتغير في برنامجنا.
الأن , لنكتب متغير آخر ويستخدم لتخزين السنة الحالية:
-- أكتب السنة الحالية (إذا كنت كاتب تاريخ ميلادك بالتاريخ الهجري أكتب السنة الهجرية الحالية)
currentYear = 2009
والأن لنكتب متغير مختلف بعض الشي عن المتغيرات التي كتبناها قبل قليل:
-- كتابة متغير فارغ
myAge = nil
نلاحظة الان اننا وضعنا قيمة عمل لاشي (nil) في المتغير (myAge).
هذا بكل بساطة يعني ان المتغير لن يعمل اي شي , لاحقاً سنخزن شي في هذا المتغير.
حسناً , الآن نحن سوف نكتب متغير بسيط جداً وعمله بكل بساطة هو انه يطبع الجملة التالية على الشاشة:
:Your Age Is
يعني عمرك هو:
*لاتنسى يجب وضع الجملة بين علامة التنصيص (" ")
اضف الكود التالي إلى البرنامج:
-- هذا النص الذي سظهر أمام نتيجة الحساب
X = "Yor Age Is: "
أوكي , أحنا الأن خلصنا من كتابة المتغيرات , لسنتعملها إذاً.
الأن سنتخدم المتغيرات التي كتبناها قبل قليل وبعض أساسيات الرياضيات لحساب العمر تقريباً
إذاً , أضف الكـود التالي إلى برنامجكـ:
-- طرح (myBirth Year = تاريخ الميلاد) من (current Year = السنة الحالية) وتخزين الناتج في المتغير (myAge = عمري)
myAge = currentYear - myBirthYear
الكود اللي فوق عمله هـو:
طرح القيمة المخزنة في المتغير (myBirthYear) من المتغير المخزن في المتغير (currentYear) , ثم تخزين الناتج في المتغير (myAge)
الأن المتغير (myAge) صار له قيمة ! (لإننا فوق وضعناه صفر ولم نضع فيه شي , والان صارت له قيمة وهي الناتج)
والان , دعونا نطبع النتاج على الشاشة , بنفس الطريقة التي أستعملناها في الدرس الماضي.
-- طباعة الناتج على الشاشة
screen:print(10,100,X .. myAge,Orange)
الشي الوحيد اللي اختلف في هذا الكود عن الكود الذي كتبناه في الدرس الماضي هو أننا أضفنا شي جديد وصغير والذي هو النقطتين (..)
لكتابة متغيرين أو نصين جنب بعض نستخدم النقطتين (..) مثل ماعملت فوق وهذا يسمى (التسلسل)
وأخيرً راح نعمل نفس اللي عملناه في الدرس الماضي
نجعل البرنامج يظهر على الشاشة للأبد دون توقف بإضافة الكود التالي إليه:
screen.flip()
while true do
screen.waitVblankStart()
end
http://img212.imageshack.us/img212/361/97367663mq5.gif
الكود بالكامل:
-- أمر وضع اللون البرتقالي
Orange = Color.new(255,128,0)
-- تاريخ ميلادك
myBirthYear = 1993
-- السنة الحالية
currentYear = 2009
-- سنستخدمه لاحقاً
myAge = nil
-- هذا النص الذي سظهر أمام نتيجة الحساب
X = "Yor Age Is: "
--طرح (myBirth Year = تاريخ الميلاد) من (current Year = السنة الحالية) وتخزين الناتج في المتغير (myAge = عمري)
myAge = currentYear - myBirthYear
-- طباعة الناتج على الشاشة
screen:print(10,100,X .. myAge,Orange)
-- جعل البرنامج يظهر على الشاشة دون توقف
screen.flip()
while true do
screen.waitVblankStart()
أحفظ البرنامج بأسم ScrXit.lua (بدل حرف الـX بحرف الـp)
وشغله بنفس الطريقة التي عملناها في البرنامج الأول.
ولاكن انا جبت لكم طريقة أخرى لتشغيل البرامج وهي أحسن من الطريقة الاولى بكثير
لتشغيل البرنامج بواسطة Eboot.PBP الخاص ببرنامج LUAPlayer نعمل التالي:
أعمل مجلد جديد وأختار له أسم وليكون أسمه مثلا: My Age
الأن حمل الملف التالي: http://dl.qj.net/dl.php?fid=14654
وبعد إستخراج الملف سيظهر لك ثلاث ملفات ضعهم جميعاً في المجلد الذي عملته قبل قليل (My Age)
الان أفتح ملف (Applications) وبداخله ستجد ملف أسمه (Lowser) أفتحه أيضاً
وستجد بداخله ملفات كثيره أمسحهم جميعاً وضع برنامجك مكانهم
*يجب أن يكون أسم برنامجك Index.lua
الان توكل على الله وأنقل المجلد الذي عملته قبل قليل (My Age) إلى الـمسار التالي:
http://img207.imageshack.us/img207/7328/53468166.png
هل تعلم أنه من غير المتغيرات ستكتب الكثير (وأحياناً بالآلاف) من الأكواد في بعض البرامج !!
في هذا البرنامج نحن أستخدمنا الطرح فقط لإستخدام السالب (-) تماماً كما تعلمنا في المدرسة
وللجمع أستخدم (+)
وللضرب أستخدم (*)
وللقسمة أستخدم (/)
بفضل الله وحـده انتهيت من الدرس الثاني من دروس لغة LUA.
ومثل ما أنتم شايفين الكود سهل جداً وأيضاَ قصير جداً ,
ومن خلال هذا الـدرس تستطيع أن تعمل عمليات حسابية أخرى.
إذا كـان عندك سؤال أو أستفسار أو كان فيه شي في الشرح غير واضح
ضع رد في الموضوع وسوف أجيب عنه بإذن الله
http://img212.imageshack.us/img212/361/97367663mq5.gif
الدرس الثالث
مقدمة:
في هذا الدرس سنتعلم كيفية إستخدام أزرار الـPSP في برامجنا
وسنعمل برنامج بسيط يظهر النص على الشاشة عند الضغط على أحد الأزرار
وهذا الدرس كغيره من الدروس مهم جداً , وسوف تستعين به بعد الله في الكثير من البرامج , بل في جميع برامجك القادمة بإذن الله
وسنستعين في هذا الدرس بعد الله بالدروس السابقة وبالأخص درس المتغيرات
في هذا البرنامج راح يكون لكل زر نص يظهر على الشاشة
يعني مثلا: إذا ضغطت زر الأكس راح يظهر كلمة "cross" باللون البرتقالي مثلاً على الشاشة
بإختصار كل زر راح نضغطه راح يظهر نص على الشاشة
أذاً أفتح مستند نص جديد أو أفتح برنامج LuaIDE
وأضف الكود التالي إليه:
-- {...Variables...}
a = "Cross"
s = "Circle"
d = "square"
f = "triangle"
g = "L"
h = "R"
j = "Slecet"
k = "Start"
l = "Up"
z = "Down"
x = "Left"
c = "Right"
هذه هي المتغيرات لقد عرفتكم عليها بشكل مفصل في الدرس الثاني
وراح نستخدم هالمتغيرات لاحقاً لطباعة النص على الشاشة
لاحظوا أنا أعطيت كل متغير أسم بحرف واحد فقط وهذا الشي مو حلو كثير
لإنه راح يضيعكم بعدين لاكن بما أن البرنامج صغير ماراح تأثر عليك المتغيرات
الأن المفروض أنكم تعرفون شو راح أعمل :)
طبعاً راح أضيف متغير اللون , سنستخدمه لاحقاً في طباعة النص على الشاشة
*ملاحظة:راح نطبع أكثر من نص على الشاشة , فيفضل وضع أكثر من لون , وبإمكانك طبعاً طباعة جميع النصوص بلون واحد فقط.
إذا أكتب متغير اللون الذي تريده وأضفه للبرنامج
أنا أخترت أكثر من لون لإني راح أجعل كل نص على الشاشة يظهر بلون مختلف:
-- {...Colors...}
orange = Color.new(255, 102, 0)
c1 = Color.new(145,44,238)
c2 = Color.new(238,0,238)
c3 = Color.new(238,180,180)
c4 = Color.new(0,238,118)
c5 = Color.new(127,255,212)
c6 = Color.new(0,191,255)
c7 = Color.new(255,0,255)
c8 = Color.new(255,165,0)
c9 = Color.new(0,0,255)
c10 = Color.new(215,145,0)
c11 = Color.new(33,0,255)
لاحظوا هنا أنا سميت اللون البرتقالي بأسم "orange" وباقي الألوان أعطيتها أسم "c1 , c2 ,c3 ...."
وهذا فقط للإختصار وأكيد راح يضيعكم شوي ولاكن بما أن البرنامج صغير ومتغيراته قليله فأنا وضعت هذا الإسم
الان راح نستخدم كود أستخدمناه في الدرس الاول والثاني , ولاكن أنا ماشرحته لكم جيداً
والان راح نستخدم هذا الكود وراح أشرحه لكم بالتفصيل بإذن الله
هذا الكود يسمى "Loop" يعني حلقة , يعني الكود اللي نكتبه راح يتكرر مراراً وتكراراً بدون توقف
وفي داخل هذه الحلقة يوجد أكواد طبعاً هالأكواد راح تتكر
وفيه كل مره تتكرر الحلقة راح تتكر الأكواد التي بداخل الحلقة
عـ العموم راح تتعرف على هالشي بشكل اكبر في المستقبل بإذن الله
وهذا هو كود الحلقة:
-- {...Main Loop...}
while true do
والأن راح نكتب كود جديد ووظيفته مسح كل شي على الشاشة بعد التكرار مباشرة
بدون هذا الأمر كل شي تكتبه على الشاشة راح يتوقف عليها ولن يُمسح
يعني مثلاً أنا وضعت أمر يقول (إذا ضغط زر "X" أظهر كلمة "Cross" على الشاشة)
وضغطت زر "X" راح تطبع الكلمة على الشاشة بشكل صحيح ولاكن إذا رفعت يدي عن زر "X"
راح تبقى الكلمة مكانها ولن تمسح إلا إذا خرجت من البرنامج ودخلت مره أخرى
وهذا الشي غير جميل ابداً فالأفضل حين أرفع يدي عن الزر تمسح الكلمة
الكود:
screen:clear()
إذاً لنكتب أمر جديد أيضاً وهو أمر تشغيل الأزرار:
pad = Controls.read()
ببساطة هذا الامر سيقرأ أوامر تشغيل الازرار في كل مره يتم فيها إعادة الحلقة
وايضاً هذا الكود هو متغير إذا يمكنك كتابة أي أسم بدل (pad)
الان حان الوقت لنكتب أول أمر للزر الذي تريد إستعماله
وراح أبداً بزر الـX
if pad:cross() then screen:print(10,10,a,orange) end
راح أقسم الكود على ثلاث أقسام ليسهل شرحه:
أولا: if pad:cross() بإختصار هذا يعني "لو ضغطت زر X إذا أعمل التالي" وبعدها جاء أمر طباعة النص على الشاشة وهذا اللي نريد عمله إذا ضغطنا على زر X
ثانياً: screen:print(10,10,a,orange) هذا الكود شرحته من قبل ولاكن راح أشرحه من جديد في البداية أتى أمر طباعة النص على الشاشة
وبعدها أتى إحداثيات المكان اللي راح نطبع النص فيه على الشاشة وبعدها أتى متغير من المتغيرات اللي كتبناها في بداية البرنامج وبعدها أتى اللون اللي أخترناه وهو "orange"
ثالثا: end كل أمر أو كود ينتهي بهذه الكلمة
الان راح أكمل باقي الازرار بنفس الطريقة اللي عملتها قبل شوي:
if pad:cross() then screen:print(10,10,a,orange) end
if pad:circle() then screen:print(10,20,s,c1) end
if pad:square() then screen:print(10,30,d,c2) end
if pad:triangle() then screen:print(10,40,f,c3) end
if pad:l() then screen:print(10,50,g,c4) end
if pad:r() then screen:print(10,60,h,c5) end
if pad:select() then screen:print(10,70,j,c6) end
if pad:start() then screen:print(10,80,k,c7) end
if pad:up() then screen:print(10,90,l,c8) end
if pad:down() then screen:print(10,100,z,c9) end
if pad:left() then screen:print(10,110,x,c10) end
if pad:right() then screen:print(10,120,c,c11) end
نفس الطريقة اللي في الكود السابق لاكن غيرت أمر الزر والمتغير وأسم اللون
وهذه قائمة بجميع أوامر الازرار:
if pad:cross()
if pad:circle()
if pad:square()
if pad:triangle()
if pad:l()
if pad:r()
if pad:select()
if pad:start()
if pad:up()
if pad:down()
if pad:left()
if pad:right()
الان لننهي برنامجنا بوضع كود وضعناه في جميع الدروس السابقة ليكون البرنامج واضح ومرئي للجميع:
*ملاحظة كلمة end في هذا الكود هي تخبرنا بان الحلقة بالكامل أنتهت
screen.waitVblankStart()
screen.flip()
end
الكود بالكامل:
-- {...Variables...}
a = "Cross"
s = "Circle"
d = "square"
f = "triangle"
g = "L"
h = "R"
j = "Slecet"
k = "Start"
l = "Up"
z = "Down"
x = "Left"
c = "Right"
-- {...Color...}
orange = Color.new(255, 102, 0)
c1 = Color.new(145,44,238)
c2 = Color.new(238,0,238)
c3 = Color.new(238,180,180)
c4 = Color.new(0,238,118)
c5 = Color.new(127,255,212)
c6 = Color.new(0,191,255)
c7 = Color.new(255,0,255)
c8 = Color.new(255,165,0)
c9 = Color.new(0,0,255)
c10 = Color.new(215,145,0)
c11 = Color.new(33,0,255)
-- {...Main Loop...}
while true do
screen:clear()
pad = Controls.read()
if pad:cross() then screen:print(10,10,a,orange) end
if pad:circle() then screen:print(10,20,s,c1) end
if pad:square() then screen:print(10,30,d,c2) end
if pad:triangle() then screen:print(10,40,f,c3) end
if pad:l() then screen:print(10,50,g,c4) end
if pad:r() then screen:print(10,60,h,c5) end
if pad:select() then screen:print(10,70,j,c6) end
if pad:start() then screen:print(10,80,k,c7) end
if pad:up() then screen:print(10,90,l,c8) end
if pad:down() then screen:print(10,100,z,c9) end
if pad:left() then screen:print(10,110,x,c10) end
if pad:right() then screen:print(10,120,c,c11) end
screen.waitVblankStart()
screen.flip()
end
الأن أحفظ برنامج بأسم index.lua وأعمل الطريقة التي في نهاية الدرس الثاني لتشغيل البرنامج بالـEBOOT.PHP
وقريباً بإذن الله راح أحاول أني أتوصل لطريقة لعمل EBOOT.PBP خاص بالبرنامج
بفضل الله وحده أنتهيت من ثالث درس من دروس البرمجة
بعد عناء طويل في حصل معي بسبب خطاً بسيط في كتابة الكود
والحمدلله حليت المشكلة وشرحت الدرس وإن شاء الله يكون واضح ومفهوم للكل
أي سؤال أو أستفسار يرجى وضعه في هذا الموضوع
http://img61.imageshack.us/img61/1001/e1u7vra1w36133hg5.gif
هذه اللغة تعتبر من اسهل لغات البرمجة اللتي يدعمها الـPSP
فهي غير معقدة كبقية اللغات وتستطيع تعلمها وإحترافها في ايام معدودة
وهي كغيرها من لغات البرمجة تستخدم فيها الأكواد لعمل البرامج والألعاب
ومتطلباتها بسيطة جداً وليس كمتطلبات بعض اللغات الأخرى
http://img212.imageshack.us/img212/361/97367663mq5.gif
متطلبات لغة LUA بسيطة جداً وغير معقدة وهذه هي المتطلبات:
1-برنامج LUAPlayer للـPSP لتشغيل برامجكـ والـعابكـ التي عملتها في لغة LUA
http://dl.qj.net/dl.php?fid=14654
(يوجد طريقة اخـرى في الدرس الثاني وهي أفضل من هذه الطريقة)
2-برنامج LuaIDE لكتابة الأكواد (تستطيع الأستغاء عنه وأستعمال المفكرة)
http://psparadize.free.fr/download/logiciels/LuaIDE.zip
http://img212.imageshack.us/img212/361/97367663mq5.gif
الدرس الأول
(كتابة برنامجكـ الاول في لغة LUA)
مقدمة:
برنامجنا اللي راح نعمله الان راح يكون عمله بكل بساطة
طباعة كلمة على شاشة الـPSP , وراح يكون مقسم على عدة مراحل
وكل مرحلة مشروحة بالتفصيل الممل :smailes17:
http://img212.imageshack.us/img212/361/97367663mq5.gif
أولا:التعليقات (Comments):
التعليقاتـ تستخدم لترك معلومات او ملاحظات عن كودك
التعليقات مفيدة جداً لكـ فإذا مثلاً عملت لك برنامج وتوقفت عن عمله لمدة طويلة ورجعت له
ماراح تعرف عمل كل الاكواد اللي كتبتها ولاكن إذا كتبت ملاحـظات راح تتذكر بسهولة
وكل هذا راح يتضح لك عندما تبدأ في كتابة الاكـواد
إذا كيف تكتب التعليقات؟ هذا ماسنتعلمه الان
إذاً لنبدأ كتابة برنامجنا: أفتح المفكرة او برنامج LuaIDE وأضف إليه الكود التالي:
My First LUA Program --
By Eliaso , Bramjnet.com --
كما ترا , التعليقات تكتب في البداية مع شرطتين (--)
أي شي تكتبه بعد الشرطتين لن يعتبره الـPSP من ضمن الكود , بل سيتجاهله كلياً
لاكـن انتبه ! يجب ان تكتب التعليق على نفس الخط من الكود
إذا ادرت ان تكتب في سطر جديد يجب ان تضع الشرطتين (--) من جديد <<مثل ماعملت في المثال
http://img212.imageshack.us/img212/361/97367663mq5.gif
ثانياً:وضع الألوان وطريقة كتابتها:
الأن سنضع كود اللون الذي سنستخدمه لاحقاً في طباعة النص على الشاشة
علينا الأن تحديد لون لنستخدمه في النص الذي سيظهر على الشاشة لاحقاً
اوكي الان ضع الكود التالي في برنامجك لاتنسى اكتب الكود على سطر واحد
وايضاً يمكنك ان تترك سطر بين التعليق الذي كتبناه قبل قليل وبين هذا الكود
Orange = Color.new(255,128,0)
الأن حددنا اللون الذي سنستخدمه لاحقاً لطباعة نص على الشاشة بإستخدام قيم (RGB)
انا أخترت اللون البرتقالي ووضعت قيمه في الكود (255,128,0) وراح اشرح لكم كيفية إيجاد قيم (RGB) لكل لون تريده في نهاية هذه الفقرة
نلاحظ في بداية الكود كلمة (Orange) هذه تسمى متغير (Variable) وهذا المتغير للإختصار فإذا اردنا إستخدام اللون البرتقالي الذي حددته انا في اي جزء من الكود
مره اخرى مانكتب الكود بالكامل فقط نكتب اسم المتغير والذي هو في هذا الكود (Orange) ويعني (برتقالي) وانت تستطيع كتابة ماتريد ولاكن بدون مايتغير اللون
يعني المتغير للإختصار وليس له علاقة باللون لإن اللون , يتم تحديده من خلال قيم (RGB) وليس من خلال المتغير (Variable)
وبعد المتغير أتت علامة (=) وهذه تدل على ان المتغير يعمل عمل الذي ياتي بعد علامة (=)
والذي بعد علامة (=) هو اللون الذي حددناه إذاً المتغير (Orange) عمله في هذا الكود هو وضع اللون البرتقالي
(ولاتشيل هم راح يأتي درس في المستقبل بإذن الله سوف اشرح فيه كل شي عن المتغيرات)
راح اعطيكم مثال آخـر وليس له علاقة ابداً بالكود فهو فقط للتوضيح:
منتدى برامج نت إبداع وتميز = Bramjnet.com
إذا لو نكتب Bramjnet.com فهذا يعني اننا نقصد منتدى برامج نت إبداع وتميز
وايضاً لو نكتب منتدى برامج نت إبداع وتميز فإننا نقصد Bramjnet.com
ولاكن الأقصر والأوضح والأسهل للحفظ هي Bramjnet.com إذاً راح نسخدمها لسهولتها وقصرها
هذا بالضبط مانتكلم عنه نحن في الكود فأي شي يأتي بعد وقبل علامة يساوي (=) يدل على انهم يعملون نفس العمل
وبعد علامة يساوي أتى الامر Color.new وهذا مايبيله شرح واضح مره
هو يأمر البرنامج بوضع اللون الذي ياتي بعده على شكل قيم (RGB)
وبعد أمر اللون أتى اللون المكتوب على شكل قيم (RGB) وهو اهم شي وسيحدد اللون الذي يظهر لنا
الان أنتهينا من وضع اللون وعرفنا كيفية كتابته ولاكن بقي لنا كيفية إيجاد قيم اي لون نريده وهذا شرح لكيفية إيجاد قيم اي لون نريده بإستخدام برنامج الرسام
أولاً: أفتح برنامج الرسام عن طريق ابدأ ==> كافة البرامج ==> البرامج الملحقة ==> الرسام
ثانياً: من الخيارات اختار خيار "ألـوان" ومن خيار "ألوان" أختار خيار "تحرير الألوان"
http://img207.imageshack.us/img207/7265/16661434.jpg
ثالثاً: راح تظهر لك نافذة صغيرة أضغط على "تعريف الألوان المخصصة >>"
http://img89.imageshack.us/img89/9660/55751546.png
رابعاً: أختار اللون الذي يعجبكـ وانا اخترت اللون المفضل لدي أكيد البرتقالي :smailes107:
http://img89.imageshack.us/img89/7444/10927867.jpg
خامساً: المستطيل اللي باللون الاحمر في الصورة العلوية يحتوي على 3 فراغات(أحمر,أخضر,أزرق)
نضع قيم اللون الذي اخترناه في الكود بالترتيب طبعاً , مثل ماعملت انا بالضبط
http://img212.imageshack.us/img212/361/97367663mq5.gif
ثالثاً:طباعة نص على الشاشة:
الان سنستخدم أمر الطباعة على الشاشة , ضع هذا الكود في برنامجك وافصل بينه وبين اخر كود سطر واحد
screen:print(200, 100, "eliaso", Orange)
أولاً: (scree:print) بإختصار هذا الأمر يقول للبرنامج بأنه يطبع النص على الشاشة.
ثانياً: (200) و تسمى (x) وهذه تحدد بعد النص عن يسار الشاشة بالبكسل(هنا بعد النص عن يسار الشاشة 200 بكسل).
ثالثاً: (100) و تسمى (y) وهذه تحدد بعد النص عن أعلى الشاشة بالبكسل(هنا بعد النص عن أعلى الشاشة 100 بكسل).
(أبعاد الـPSP: الطول:272 بكسل العرض:480 بكسل)
رابعاً: (eliaso) وهذا النص الذي سيظهر على الشاشة (اكتب مكانه ماتشاء).
خامساً: (Orange) هذا متغير اللون الذي وضعناه من قبل (راجع الفقرة الثانية) وهذا يخبر البرنامج بلون النص الذي تريده للنص (لاتنسى دائماً نضع اللون قبل ان نستخدمه مثل ماعملت).
http://img212.imageshack.us/img212/361/97367663mq5.gif
رابعاً:إظهار برنامجنا على الشاشة:
أضف الكود التالي لبرنامجكـ
screen.flip()
بإختصار هذا يجعل برنامجك يظهر على الشاشة ويكون مرئي وواضح.
الأن أكتمل برنامجنا وراح يشتغل بإذن الله وراح يظهر النص على الشاشة باللون اللي اخترناه
ولاكـن راح يظهر النص لمدة قصيرة تقريباً أقل من ثانية واحدة
إذا يجب علينا إبقاء النص على الشاشة لمدة أطول!
إذا أضف هذا الكود الأخير والصغير للبرنامج:
while true do
screen.waitVblankStart()
الأن النص اللي في برنامجنا راح يكون مرئي للأبد ولن يختفي بإذن الله.
http://img212.imageshack.us/img212/361/97367663mq5.gif
خامساً وأخيراً:كود صغير جداً يفيد بإنتهاء البرنامج
end
الأن احفظ عملك بإسم (scripX.lua) الـX بدله بـp لإن الكلمة بالكامل لاتظهر في المنتدى ولا اعلم لماذا !
لاتنسى يجب ان تكون صيغة الملف (Lua)
وهذا هو الكود بالكامل:
-- My First Lua Program
-- By Eliaso , Bramjnet.com
Orange = Color.new(255,128,0)
screen:print(200, 100, "eliaso", Orange)
screen.flip()
while true do
screen.waitVblankStart()
end
يوجد طريقة أفضل في نهاية الدرس الثاني
الأن حمل برنامج LUAPlayer وضعه في المسار التالي:
http://img207.imageshack.us/img207/7328/53468166.png
الأن بعدت مانقلت البرنامج للـPSP أعمل مجلد جديد واختار له الاسم الذي يعجبك في المسار التالي:
http://img402.imageshack.us/img402/5354/38737303.png
الأن ضع برنامجك الذي عملته قبل قليل في المجلد الجديد في المسار التالي:
http://img11.imageshack.us/img11/1479/35551633.png
اوكي الأن شغل الـPSP وأذهب إلى برنامج LUAPlayer
الان ادخل إلى مجلد Applications بواسطة الضغط على زر الدائرة
الان راح تشوف مجلدين ادخل على المجلد الذي عملته انت بواسطة الضغط ايضاً على زر الدائرة
واخيراً راح تشوف السكربت الذي عملته افتح عليه بواسطة الضغط على زر الدائرة
طبعاً ماراح تكون فيه خلفية للنص وايضاً لاتستطيع أيقاف ظهور النص والعودة إلى برنامج LuaPlayer
ولاكـن في المستقبل بإذن الله راح نتعلم كيف نضع خلفية وكيف نتحكم ببرامجنا
إلى هنا أنتهى درسنا الأول أتمنى انه كان خفيف وسهل ومفهوم
http://img212.imageshack.us/img212/361/97367663mq5.gif
الدرس الثاني
(المتغيرات)
مقدمة:
في هذا الدرس سوف تتعلم إستخدام المتغيرات في برنامجك.
المتغيرات مهمة جداً وقريباً سوف تصبح من أعز أصدقائكـ في لغة البرمجة LUA.
المتغيرات هي لتخزين الاوامر والمعلومات مثل أمر اللون في الدرس الاول
خزناه بإسم , وكان الأسم (Orange) *راجع الدرس الاول
راح نتعلم في هذا الدرس كتابة برنامج بسيط يستخدم المتغيرات
وأيضاً , سنتعلم القيام بعملية حسابية بسيطة بواسطة لغة البرمجة LUA.
الان راح نبدأ بإختيار اللون الذي سوف يطبع عمليتنا الحسابية على الشاشة.
طبعاً طريقة وضع اللون مثل ماتعملنا في الدرس الأول تماماً.
جرب أنك تختار اللون الذي يعجبك وضعه في بداية الكود ,
طبعاً انا اخترت اللون المفضل لدي والذي هو اللون البرتقالي *يمكنك أن تبدله بأي لون تحبه بالطريقة التي تعلمناها سابقاً
الان أفتح المفكرة أو برنامج LuaIDE وأضف الكود التالي إليها
-- أمر وضع اللون
Orange = Color.new(255,128,0)
إذا قرات الدرس الاول المفروض أنك تكون عارف ماذا يعني هذا الكود لذلكـ لن أشرح هذا الكـود.
الأن راح نكتب المتغير الأول , وسوف يستخدم هذا المتغير لتخزين تاريخ ميلادك
يمكنك كتابة تاريخ ميلادكـ بالتاريخ الهجري أو التاريخ الميلادي وأنا وضعت تاريخ ميلادي
*يمكنك إستبداله إن أردت أن تحسب عمرك أو عمر أي شخص آخـر
-- أكتب تاريخ ميلادك بدل التاريخ الموجود (1993)
myBirthYear = 1993
مافعلته هو وضع تاريخ ميلادي (1993) وتخزينه في المتغير الذي سميته "myBirthYear"
وسنقوم في وقت لاحق باستخدام هذا المتغير في برنامجنا.
الأن , لنكتب متغير آخر ويستخدم لتخزين السنة الحالية:
-- أكتب السنة الحالية (إذا كنت كاتب تاريخ ميلادك بالتاريخ الهجري أكتب السنة الهجرية الحالية)
currentYear = 2009
والأن لنكتب متغير مختلف بعض الشي عن المتغيرات التي كتبناها قبل قليل:
-- كتابة متغير فارغ
myAge = nil
نلاحظة الان اننا وضعنا قيمة عمل لاشي (nil) في المتغير (myAge).
هذا بكل بساطة يعني ان المتغير لن يعمل اي شي , لاحقاً سنخزن شي في هذا المتغير.
حسناً , الآن نحن سوف نكتب متغير بسيط جداً وعمله بكل بساطة هو انه يطبع الجملة التالية على الشاشة:
:Your Age Is
يعني عمرك هو:
*لاتنسى يجب وضع الجملة بين علامة التنصيص (" ")
اضف الكود التالي إلى البرنامج:
-- هذا النص الذي سظهر أمام نتيجة الحساب
X = "Yor Age Is: "
أوكي , أحنا الأن خلصنا من كتابة المتغيرات , لسنتعملها إذاً.
الأن سنتخدم المتغيرات التي كتبناها قبل قليل وبعض أساسيات الرياضيات لحساب العمر تقريباً
إذاً , أضف الكـود التالي إلى برنامجكـ:
-- طرح (myBirth Year = تاريخ الميلاد) من (current Year = السنة الحالية) وتخزين الناتج في المتغير (myAge = عمري)
myAge = currentYear - myBirthYear
الكود اللي فوق عمله هـو:
طرح القيمة المخزنة في المتغير (myBirthYear) من المتغير المخزن في المتغير (currentYear) , ثم تخزين الناتج في المتغير (myAge)
الأن المتغير (myAge) صار له قيمة ! (لإننا فوق وضعناه صفر ولم نضع فيه شي , والان صارت له قيمة وهي الناتج)
والان , دعونا نطبع النتاج على الشاشة , بنفس الطريقة التي أستعملناها في الدرس الماضي.
-- طباعة الناتج على الشاشة
screen:print(10,100,X .. myAge,Orange)
الشي الوحيد اللي اختلف في هذا الكود عن الكود الذي كتبناه في الدرس الماضي هو أننا أضفنا شي جديد وصغير والذي هو النقطتين (..)
لكتابة متغيرين أو نصين جنب بعض نستخدم النقطتين (..) مثل ماعملت فوق وهذا يسمى (التسلسل)
وأخيرً راح نعمل نفس اللي عملناه في الدرس الماضي
نجعل البرنامج يظهر على الشاشة للأبد دون توقف بإضافة الكود التالي إليه:
screen.flip()
while true do
screen.waitVblankStart()
end
http://img212.imageshack.us/img212/361/97367663mq5.gif
الكود بالكامل:
-- أمر وضع اللون البرتقالي
Orange = Color.new(255,128,0)
-- تاريخ ميلادك
myBirthYear = 1993
-- السنة الحالية
currentYear = 2009
-- سنستخدمه لاحقاً
myAge = nil
-- هذا النص الذي سظهر أمام نتيجة الحساب
X = "Yor Age Is: "
--طرح (myBirth Year = تاريخ الميلاد) من (current Year = السنة الحالية) وتخزين الناتج في المتغير (myAge = عمري)
myAge = currentYear - myBirthYear
-- طباعة الناتج على الشاشة
screen:print(10,100,X .. myAge,Orange)
-- جعل البرنامج يظهر على الشاشة دون توقف
screen.flip()
while true do
screen.waitVblankStart()
أحفظ البرنامج بأسم ScrXit.lua (بدل حرف الـX بحرف الـp)
وشغله بنفس الطريقة التي عملناها في البرنامج الأول.
ولاكن انا جبت لكم طريقة أخرى لتشغيل البرامج وهي أحسن من الطريقة الاولى بكثير
لتشغيل البرنامج بواسطة Eboot.PBP الخاص ببرنامج LUAPlayer نعمل التالي:
أعمل مجلد جديد وأختار له أسم وليكون أسمه مثلا: My Age
الأن حمل الملف التالي: http://dl.qj.net/dl.php?fid=14654
وبعد إستخراج الملف سيظهر لك ثلاث ملفات ضعهم جميعاً في المجلد الذي عملته قبل قليل (My Age)
الان أفتح ملف (Applications) وبداخله ستجد ملف أسمه (Lowser) أفتحه أيضاً
وستجد بداخله ملفات كثيره أمسحهم جميعاً وضع برنامجك مكانهم
*يجب أن يكون أسم برنامجك Index.lua
الان توكل على الله وأنقل المجلد الذي عملته قبل قليل (My Age) إلى الـمسار التالي:
http://img207.imageshack.us/img207/7328/53468166.png
هل تعلم أنه من غير المتغيرات ستكتب الكثير (وأحياناً بالآلاف) من الأكواد في بعض البرامج !!
في هذا البرنامج نحن أستخدمنا الطرح فقط لإستخدام السالب (-) تماماً كما تعلمنا في المدرسة
وللجمع أستخدم (+)
وللضرب أستخدم (*)
وللقسمة أستخدم (/)
بفضل الله وحـده انتهيت من الدرس الثاني من دروس لغة LUA.
ومثل ما أنتم شايفين الكود سهل جداً وأيضاَ قصير جداً ,
ومن خلال هذا الـدرس تستطيع أن تعمل عمليات حسابية أخرى.
إذا كـان عندك سؤال أو أستفسار أو كان فيه شي في الشرح غير واضح
ضع رد في الموضوع وسوف أجيب عنه بإذن الله
http://img212.imageshack.us/img212/361/97367663mq5.gif
الدرس الثالث
مقدمة:
في هذا الدرس سنتعلم كيفية إستخدام أزرار الـPSP في برامجنا
وسنعمل برنامج بسيط يظهر النص على الشاشة عند الضغط على أحد الأزرار
وهذا الدرس كغيره من الدروس مهم جداً , وسوف تستعين به بعد الله في الكثير من البرامج , بل في جميع برامجك القادمة بإذن الله
وسنستعين في هذا الدرس بعد الله بالدروس السابقة وبالأخص درس المتغيرات
في هذا البرنامج راح يكون لكل زر نص يظهر على الشاشة
يعني مثلا: إذا ضغطت زر الأكس راح يظهر كلمة "cross" باللون البرتقالي مثلاً على الشاشة
بإختصار كل زر راح نضغطه راح يظهر نص على الشاشة
أذاً أفتح مستند نص جديد أو أفتح برنامج LuaIDE
وأضف الكود التالي إليه:
-- {...Variables...}
a = "Cross"
s = "Circle"
d = "square"
f = "triangle"
g = "L"
h = "R"
j = "Slecet"
k = "Start"
l = "Up"
z = "Down"
x = "Left"
c = "Right"
هذه هي المتغيرات لقد عرفتكم عليها بشكل مفصل في الدرس الثاني
وراح نستخدم هالمتغيرات لاحقاً لطباعة النص على الشاشة
لاحظوا أنا أعطيت كل متغير أسم بحرف واحد فقط وهذا الشي مو حلو كثير
لإنه راح يضيعكم بعدين لاكن بما أن البرنامج صغير ماراح تأثر عليك المتغيرات
الأن المفروض أنكم تعرفون شو راح أعمل :)
طبعاً راح أضيف متغير اللون , سنستخدمه لاحقاً في طباعة النص على الشاشة
*ملاحظة:راح نطبع أكثر من نص على الشاشة , فيفضل وضع أكثر من لون , وبإمكانك طبعاً طباعة جميع النصوص بلون واحد فقط.
إذا أكتب متغير اللون الذي تريده وأضفه للبرنامج
أنا أخترت أكثر من لون لإني راح أجعل كل نص على الشاشة يظهر بلون مختلف:
-- {...Colors...}
orange = Color.new(255, 102, 0)
c1 = Color.new(145,44,238)
c2 = Color.new(238,0,238)
c3 = Color.new(238,180,180)
c4 = Color.new(0,238,118)
c5 = Color.new(127,255,212)
c6 = Color.new(0,191,255)
c7 = Color.new(255,0,255)
c8 = Color.new(255,165,0)
c9 = Color.new(0,0,255)
c10 = Color.new(215,145,0)
c11 = Color.new(33,0,255)
لاحظوا هنا أنا سميت اللون البرتقالي بأسم "orange" وباقي الألوان أعطيتها أسم "c1 , c2 ,c3 ...."
وهذا فقط للإختصار وأكيد راح يضيعكم شوي ولاكن بما أن البرنامج صغير ومتغيراته قليله فأنا وضعت هذا الإسم
الان راح نستخدم كود أستخدمناه في الدرس الاول والثاني , ولاكن أنا ماشرحته لكم جيداً
والان راح نستخدم هذا الكود وراح أشرحه لكم بالتفصيل بإذن الله
هذا الكود يسمى "Loop" يعني حلقة , يعني الكود اللي نكتبه راح يتكرر مراراً وتكراراً بدون توقف
وفي داخل هذه الحلقة يوجد أكواد طبعاً هالأكواد راح تتكر
وفيه كل مره تتكرر الحلقة راح تتكر الأكواد التي بداخل الحلقة
عـ العموم راح تتعرف على هالشي بشكل اكبر في المستقبل بإذن الله
وهذا هو كود الحلقة:
-- {...Main Loop...}
while true do
والأن راح نكتب كود جديد ووظيفته مسح كل شي على الشاشة بعد التكرار مباشرة
بدون هذا الأمر كل شي تكتبه على الشاشة راح يتوقف عليها ولن يُمسح
يعني مثلاً أنا وضعت أمر يقول (إذا ضغط زر "X" أظهر كلمة "Cross" على الشاشة)
وضغطت زر "X" راح تطبع الكلمة على الشاشة بشكل صحيح ولاكن إذا رفعت يدي عن زر "X"
راح تبقى الكلمة مكانها ولن تمسح إلا إذا خرجت من البرنامج ودخلت مره أخرى
وهذا الشي غير جميل ابداً فالأفضل حين أرفع يدي عن الزر تمسح الكلمة
الكود:
screen:clear()
إذاً لنكتب أمر جديد أيضاً وهو أمر تشغيل الأزرار:
pad = Controls.read()
ببساطة هذا الامر سيقرأ أوامر تشغيل الازرار في كل مره يتم فيها إعادة الحلقة
وايضاً هذا الكود هو متغير إذا يمكنك كتابة أي أسم بدل (pad)
الان حان الوقت لنكتب أول أمر للزر الذي تريد إستعماله
وراح أبداً بزر الـX
if pad:cross() then screen:print(10,10,a,orange) end
راح أقسم الكود على ثلاث أقسام ليسهل شرحه:
أولا: if pad:cross() بإختصار هذا يعني "لو ضغطت زر X إذا أعمل التالي" وبعدها جاء أمر طباعة النص على الشاشة وهذا اللي نريد عمله إذا ضغطنا على زر X
ثانياً: screen:print(10,10,a,orange) هذا الكود شرحته من قبل ولاكن راح أشرحه من جديد في البداية أتى أمر طباعة النص على الشاشة
وبعدها أتى إحداثيات المكان اللي راح نطبع النص فيه على الشاشة وبعدها أتى متغير من المتغيرات اللي كتبناها في بداية البرنامج وبعدها أتى اللون اللي أخترناه وهو "orange"
ثالثا: end كل أمر أو كود ينتهي بهذه الكلمة
الان راح أكمل باقي الازرار بنفس الطريقة اللي عملتها قبل شوي:
if pad:cross() then screen:print(10,10,a,orange) end
if pad:circle() then screen:print(10,20,s,c1) end
if pad:square() then screen:print(10,30,d,c2) end
if pad:triangle() then screen:print(10,40,f,c3) end
if pad:l() then screen:print(10,50,g,c4) end
if pad:r() then screen:print(10,60,h,c5) end
if pad:select() then screen:print(10,70,j,c6) end
if pad:start() then screen:print(10,80,k,c7) end
if pad:up() then screen:print(10,90,l,c8) end
if pad:down() then screen:print(10,100,z,c9) end
if pad:left() then screen:print(10,110,x,c10) end
if pad:right() then screen:print(10,120,c,c11) end
نفس الطريقة اللي في الكود السابق لاكن غيرت أمر الزر والمتغير وأسم اللون
وهذه قائمة بجميع أوامر الازرار:
if pad:cross()
if pad:circle()
if pad:square()
if pad:triangle()
if pad:l()
if pad:r()
if pad:select()
if pad:start()
if pad:up()
if pad:down()
if pad:left()
if pad:right()
الان لننهي برنامجنا بوضع كود وضعناه في جميع الدروس السابقة ليكون البرنامج واضح ومرئي للجميع:
*ملاحظة كلمة end في هذا الكود هي تخبرنا بان الحلقة بالكامل أنتهت
screen.waitVblankStart()
screen.flip()
end
الكود بالكامل:
-- {...Variables...}
a = "Cross"
s = "Circle"
d = "square"
f = "triangle"
g = "L"
h = "R"
j = "Slecet"
k = "Start"
l = "Up"
z = "Down"
x = "Left"
c = "Right"
-- {...Color...}
orange = Color.new(255, 102, 0)
c1 = Color.new(145,44,238)
c2 = Color.new(238,0,238)
c3 = Color.new(238,180,180)
c4 = Color.new(0,238,118)
c5 = Color.new(127,255,212)
c6 = Color.new(0,191,255)
c7 = Color.new(255,0,255)
c8 = Color.new(255,165,0)
c9 = Color.new(0,0,255)
c10 = Color.new(215,145,0)
c11 = Color.new(33,0,255)
-- {...Main Loop...}
while true do
screen:clear()
pad = Controls.read()
if pad:cross() then screen:print(10,10,a,orange) end
if pad:circle() then screen:print(10,20,s,c1) end
if pad:square() then screen:print(10,30,d,c2) end
if pad:triangle() then screen:print(10,40,f,c3) end
if pad:l() then screen:print(10,50,g,c4) end
if pad:r() then screen:print(10,60,h,c5) end
if pad:select() then screen:print(10,70,j,c6) end
if pad:start() then screen:print(10,80,k,c7) end
if pad:up() then screen:print(10,90,l,c8) end
if pad:down() then screen:print(10,100,z,c9) end
if pad:left() then screen:print(10,110,x,c10) end
if pad:right() then screen:print(10,120,c,c11) end
screen.waitVblankStart()
screen.flip()
end
الأن أحفظ برنامج بأسم index.lua وأعمل الطريقة التي في نهاية الدرس الثاني لتشغيل البرنامج بالـEBOOT.PHP
وقريباً بإذن الله راح أحاول أني أتوصل لطريقة لعمل EBOOT.PBP خاص بالبرنامج
بفضل الله وحده أنتهيت من ثالث درس من دروس البرمجة
بعد عناء طويل في حصل معي بسبب خطاً بسيط في كتابة الكود
والحمدلله حليت المشكلة وشرحت الدرس وإن شاء الله يكون واضح ومفهوم للكل
أي سؤال أو أستفسار يرجى وضعه في هذا الموضوع
http://img61.imageshack.us/img61/1001/e1u7vra1w36133hg5.gif
