×

Langue

Fermer
Atelier 801
  • Forums
  • Dev Tracker
  • Connexion
    • English Français
      Português do Brasil Español
      Türkçe Polski
      Magyar Română
      العربية Skandinavisk
      Nederlands Deutsch
      Bahasa Indonesia Русский
      中文 Filipino
      Lietuvių kalba 日本語
      Suomi עברית
      Italiano Česky
      Hrvatski Slovensky
      Български Latviešu
      Estonian
  • Langue
  • Forums
  • /
  • Transformice
  • /
  • Modules
  • /
  • [تعليم] لغة البرمجة لوا
[تعليم] لغة البرمجة لوا
Levi_ackerman
« Citoyen »
1687779840000
    • Levi_ackerman#9277
    • Profil
    • Derniers messages
    • Tribu
#1
  9
  • عام
  • بعض المصادر التي تم اعتمادها
  • مهم...

http://www.transformice.com/share/api.png




مرحبا اصدقائي،

فى هذا الموضوع سنتعلم بعض الأساسيات عن لغة لوا (lua) و كيف يمكنك استخدامها لكتابة اول سكربت او نمط تركيبي خاص بك.
كبداية لنعرفك عن بعض المعلومات البسيطة عن البرمجيات التركيبية

كيف يمكنك ان تشغل السكربت الخاص بك ؟

يمكنك تشغيل سكربت خاص بك داخل بيت قبيلتك !

لكن يوجد بعض الشروط و هي :
  • يجب ان يكون لديك صلاحية لتشغيل السكربتات (إمكانية تشغيل الخرائط /np)
  • يجب ان تكون جمعت 1000 جبن على الاقل

و بعدها يمكنك استخدام الامر /lua
لكي تظهر لك واجهة البرمجيات التركيبية و بعدها ستتمكن من تشغيل سكربتك !
https://i.imgur.com/fRFAxZo.png

يمكنك استخدام واجهة لوا لكتابة السكربت الخاص بك؛ لكنها تعتبر غير عملية و ننصح بأستخدام محرر اكواد للكتابة

بعض البرامج المتاحة :
  • NotePad ++
  • Sublime Text
  • ZeroBrane Studio
  • Visual Studio Code

    إن لم يكن لديك اي فكرة عن ايهم تختار فننصحك بأستخدام
    Sublime Text او NotePad ++


    حسنا...
    بعد ان قمت بأختيار محرر الاكواد الخاص بك يمكنك البدأ بأنشاء ملف لوا، لنسميه على سبيل المثال
    (test.lua)
    بعدها يمكنك فتح الملف الخاص بك داخل محرر الاكواد.


    و الان لنبدأ ببعض الاساسيات عن لغة لوا !
    كبداية نريدك ان تجرب الامر التالي داخل نافذة لوا
    Code Lua

    1
    print("Hello World")
    سيظهر لديك نافذة كتابية تدعي
    #Lua
    و ستظهر لديك نتيجة الامر كالآتي
    • # Hello World

    كما رأيت بنفسك يمكنك استخدام هذا الامر لطباعي الكلمات، او الحروف و ايضا الارقام ان اردت


    ولكن ما هي المتغيرات ؟ (variables/var) حسنا بعد الانتهاء من هذا لنبدأ فى احد اهم المفاهيم البرمجية و هي المتغيرات او

    ان كان لديك بعض العلم بالرياضيات ستعرف ان المتغير هو مثل الصندوق الذي يمكنك تخزين قيمة داخله مثل الارقام او الكلمات
    يمكنك صنع متغير هكذا :

    Code Lua

    1
    hello = "Hello World"

    هكذا قمت بأنشاء اول متغير لك و يمكنك استخدامه للطباعة

    Code Lua

    1
    2
    3
    hello = "Hello World"

    print(hello)

    و كما ذكرنا سابقا يمكنك تخزين الارقام داخل المتغير و ايضا يمكنك القيام بالعمليات الحسابية بأستخدام قيم المتغيرات !

    Code Lua

    1
    2
    3
    hello = 10

    print(hello * 2) -- ستكون النتيجة 20


    اعتقد ان بعضكم لاحظ اننا نقوم بأستخدام علامات التنصيص للتفرقة بين الكلمات، و الارقام ولكن لماذا ؟؟

    فى عالم البرمجة يوجد العديد من انواع البيانات و منهم :
  • string
  • number
  • boolean

    النوع الاول و هو (string) و هو النوع الذي يمثل الكلمات او الحروف
    النوع الثاني و هو (number) وكما هو واضح من اسمه هذا النوع يمثل الارقام ولا يوضع داخل علامات التنصيص
    النوع الثالث و هو (boolean) هذا النوع يمثل كلمتين وهم true/false صح او خطأ

    للمبتدئين قد يكون النوع الثالث غريباً قليلاً ولكنه بسيط و يمكننا تفسيره بأستخدام الشروط (if statement)

    Code Lua

    1
    2
    3
    4
    5
    6
    7
    hello = 10

    if hello == 10 then -- ان كان المتغير الخاص بنا يساوي الرقم 10 اطبع الآتي
    print(true)
    else -- ان لم يتحقق الشرط الاول و كان المتغير لديه اي قيمة غير 10 اطبع الآتي
    print(false)
    end

    و ستظهر لك النتيجة
    • # true

    ولكن ماذا ان كان لديك قيمة آخري محددة تريد ان تتأكد منها ؟
    يمكنك فعل الآتي :

    Code Lua

    1
    2
    3
    4
    5
    6
    7
    hello = 5

    if hello == 10 then -- ان كان المتغير الخاص بنا يساوي الرقم 10 اطبع الآتي
    print("hello == 10")
    elseif hello == 5 then -- ان لم يتحقق الشرط الاول و كان المتغير لديه القيمة 5 اطبع الآتي
    print("hello == 5")
    end


    ربما لاحظت اننا قمنا بأستخدام == بدل عن = ولكن لماذا ؟

    ال == تعتبر عامل او (operator) يتم استخدامها للمقارنة ما بين قيمتين
    هل 5 == 5 ؟

    يوجد العديد من العوامل و العوامل الحسابية مثل الجمع و الطرح ايضاً تعتبر من العوامل
    يمكنك قراءة المزيد عن العوامل هنا

    حسنا...
    يوجد نوع من المتغيرات لم نقم بذكره بعد وهو tables او المصفوفات
    يمكنك انشاء واحد بهذه الطريقة :

    Code Lua

    1
    ourTable = {5, 10, 15}

    كما تلاحظ المصفوفات تقوم بتخزين اكثر من قيمة بداخلها
    و ايضا يمكنك طباعة المصفوفة بأكلمها كالآتي :

    Code Lua

    1
    2
    3
    ourTable = {5, 10, 15}

    print(ourTable)

    ولكن ماذا ان اردت ان تطبع عنصر واحد من داخل المصفوفة ؟
    يمكنك فعل هذا طبعا كالآتي :

    Code Lua

    1
    2
    3
    ourTable = {5, 10, 15}

    print(ourTable[2]) -- النتيجة ستكون الرقم 10

    كما تلاحظ قمنا بكتابة اسم المتغير ملحوق برقم داخل الاقواص المعقوفة او الاقواص المربعة و هذه الارقام تدعي index
    ايضا لابد انك لاحظت ان العناصر داخل المصفوفة تبدأ من الرقم واحد الى نهاية المصفوفة.

    يوجد العديد من الطرق لأنشاء المصفوفات او وضع العناصر بداخلها كالآتي :

    Code Lua

    1
    2
    3
    4
    5
    6
    7
    ourTable = {}

    ourTable[1] = 5
    ourTable["test"] = 10

    print(ourTable[1])
    print(ourTable["test"])

    هاه ؟ يمكن استخدام الكلمات بدلا عن الارقام ؟
    نعم صحيح لغة لوا تسمح لك بفعل ذلك بدون اي مشاكل.

    ايضاً يمكنك وضع مصفوفة داخل مصفوفة ان اردت كالآتي :

    Code Lua

    1
    2
    3
    4
    ourTable = {1, {5}}

    print(ourTable[1]) -- اطبع العنصر الاول من المصفوفة
    print(ourTable[2][1]) -- قم بالدخول على العنصر التاني من المصفوفة ثم قم بطباعة العنصر الاول من داخل المصفوفة التي فالعنصر الثاني


    لكن ماذا ان كان لدي اكثر من عنصر داخل المصفوفة ؟
    هل سأكرر امر الطباعة لأطبعهم جميعاً ؟؟
    بالطبع لا سنقوم بأستخدام شيء داخل جميع لغات البرمجة و هو الحلقات التكرارية او loops.

    هذا مثال لأستخدام الحلقات التكرارية :

    Code Lua

    1
    2
    3
    4
    5
    ourTable = {1, 2, 3, 4, 5}

    for i = 1, #ourTable do -- نقوم بعمل متغير قيمته = 1 بعدها نضع فاصلة و حجم المصفوفة او # و اسم المصفوفة لمعرفها حجمها
    print(ourTable[i])
    end

    لكن لماذا نقوم بعمل متغير داخل الحلقة التكرارية ؟
    لأن المتغير سيتم اضافة عليه رقم واحد عند كل تكرار بمعني اخر سيعمل المتغير على حفظ القيمة
    لأنه بالطبع لا يمكنك تغيير قيمة الرقم واحد الى الرقم اثنين و هكذا
    يمكنك طباعة قيمة المتغير ان اردت ايضاً.

    لكن ماذا ان اردت عكس العملية ؟
    يمكنك فعل هذا ايضاً !

    Code Lua

    1
    2
    3
    4
    5
    ourTable = {1, 2, 3, 4, 5}

    for i = #ourTable, 1, -1 do
    print(ourTable[i])
    end

    كما تلاحظ قمنا بوضع فاصلة آخرى و اضفنا الرقم سالب واحد لأنه فى الوضع الطبيعي تقوم الحلقة التكرارية بأضافة الرقم واحد لكننا نريد عكس ذلك
    يمكنك ايضا ان تجعل الشرط الثالث أي رقم تريده و يمكنك فعل هذا مع المثال الاول ان اردت.

    يوجد العديد من الانواع للحلقات التكرارية و يمكنك القراءة عنهم بالتفصيل هنا


    حسنا الان لديك العديد من المعلومات المهمة و الاساسية داخل لغة لوا و ايضاً بعض المفاهيم البرمجية الاساسية
    لكن يوجد شيء مهم جداً لم نقم بشرحه حتي الان و هو الدوال او functions.

    ولكن ماهي الدوال ؟؟
    الدوال يمكن شرحها ببساطة على انها صندوق يوجد به كود معين ينفذه
    فائدة الدوال هي ان تمعنك ان تكرر نفسك مثلا لديك جزئية معينة داخل السكربت الخاص بك تتكرر كثيرا
    يمكنك وضعها داخل دالة و استخدام تلك الدالة بدل من كتابة نفس الشيء العديد من المرات.

    لننشيء دالة بسيطة تقوم بطباعة كلمة

    Code Lua

    1
    2
    3
    function test()
    print("Hello World")
    end

    حسنا...
    لقد قمت بتشغيل الكود لكن لم تظهر الكلمة ؟؟؟

    هذا لأن الدوال تحتاج ان تقوم بتشغيلها قبل ان تستطيع ان تنفذ اي شيء
    هكذا تقوم بتشغيل الدالة الخاصة بك :

    Code Lua

    1
    2
    3
    4
    5
    function test()
    print("Hello World")
    end

    test()

    الان ان قمت بتشغيل هذا الكود سيتم طباعة الكلمة بدون اي مشاكل.

    لكن ماذا ان اردت ان اجعل الدالة الخاصة بي تطبع اكثر من كلمة ؟
    يوجد ايضا ميزة آخرى للدوال و هي المدخلات او parameters.
    يمكنك استخدامها لأعطاء الدالة الخاصة بك قيمة لتفعل بها ما تشاء مثل الارقام او الكلمات

    Code Lua

    1
    2
    3
    4
    5
    function test(text) -- اسم المدخل لا يهم يمكنك ان تسميه ما تشاء
    print(text)
    end

    test()

    الان ان قمت بتشغيل هذا الكود سيتم طباعة هذه القيمة لك
    • # nil

    وهذا بسبب انك لم تقم بأعطاء الدالة مدخل او argument.
    اعتذر ان كان الامر معقد قليلا بسبب تشابه الاسامي لكن الاثننين يعبران عن شيئان مختلفان وانصح بالأهتمام بالمصطلحات الانجليزية اكثر من العربية لأن العربية يمكن ان تكون غير مفهومة

    الحل بسيط وهو اعطاء الدالة الخاصة بك مدخل عند استدعائها

    Code Lua

    1
    2
    3
    4
    5
    function test(text)
    print(text)
    end

    test("Hewoo !")


    حسنا...
    اعتذر لكن يوجد شيء بسيط لم اقم بشرحه يتعلق بالمتغيرات
    وهو انه يوجد نوعين من المتغيرات
    المتغير العام global variable.
    و المتغير الخاص local variable.

    ماهو الفرق بينهم ؟؟
    المتغير العام يمكنك استخدامه فى اي مكان داخل الكود الخاص بك
    اما المتغير الخاص لا يمكن استخدامه الى بالمكان الذي تم انشائه به
    و ايضا المتغير الخاص لديه طريقة انشاء مختلفة كالآتي :

    Code Lua

    1
    2
    3
    4
    5
    6
    7
    function calc(num)
    local test = 5 -- لاحظ اضافة كلمة local
    print(num + test)
    end

    test(5)
    print(test) -- ستقوم بطباعة القيمة nil

    ان اردت يمكنك ان تنشيء متغير خاص بنفس اسم متغير عام داخل دالة على سبيل المثال بقيمة مختلفة ان اردت
    ولكنه لا يؤثر على قيمة المتغير العام بتاتا.


    احد الميزات التي توجد باللغة و هي المكتبات libraries.
    او الدوال المبنية داخل اللغة built-in functions.

    يوجد العديد منهم و يمكنك الاطلاع على بعضهم هنا :
  • Math Library
  • String Library
  • Table Library

    سأقوم بشرح احد الدوال فقط لأظهار مدي قوة الدوال التي توجد بداخل اللغة مسبقاً.
    سأقوم بأضافة عنصر الى اخر مكان داخل المصفوفة بأستخدام table.insert

    Code Lua

    1
    2
    3
    4
    5
    6
    7
    8
    local myTable = {10, 20, 30, 40, 50}

    print(myTable)

    table.insert(myTable, 60) -- اولا ستكتب اسم المصفوفة بعدها القيمة التي تود ان تضعها يمكنك ان تحدد مكان القيمة ان اردت هكذا :
    --table.insert(myTable, 1, 60)

    print(myTable)

    الان يمكننا ان نقول انك اصحبت تعلم الاساسيات الخاصة بلغة لوا !
    يمكنك البدأ فى عمل السكربت او اللعبة الصغيرة الخاصة بك اليوم بدون اي مشاكل !



  • مرحبا...

    هذا الموضوع يعتبر ترجمة لأحد كورسات اللوا على اليوتيوب مع اضافة العديد من المعلومات التي لم تكن داخل الكورس
    • Lua


    تم اضافة بعض المعلومات بالأعتماد على العديد من المصادر الاخرى و منها :
    • موقع لغة لوا الرسمي
    • الموضوع الرسمي الخاص بالبرمجيات التركيبية
    • Module FAQ & Documentation
    • totrialspoint
    • lua-users


    مصغرات اكواد لوا

    حاليا يوجد حد لعدد الاحرف الذي يمكنك كتابته داخل سكربت خاص بك و هو 64 الف حرف
    هذا يشمل المسافات الارقام و الاحرف المميزة. لذلك يوجد بعض الادوات التي تساعد على تصغير حجم الكود الخاص بك
    عن طريق حذف المسافات, اعادة تسمية المتغيرات و الدوال لأسماء اصغر و الكثير لجعل الكود الخاص بك اصغر

    بعض الادوات المتاحة :
  • Squish
  • Mothereffin Lua Minifier







  • مرحبا...

    نعتذر ان كان يوجد اي نوع من الاخطاء الاملائية او بعض الاخطاء فالشرح او الترجمة
    ان وجدت اي خطأ او ان كان لديك اي تساؤلات او اقتراحات يمكنك التواصل معنا على الخاص
    و ان كنت شخص جديد على البرمجة يمكنك التواصل معنا للسؤال عن بعض النصائح او الامور البسيطة ان اردت


    تم كتابة الموضوع و ترجمة الكورس من قبل :
  • Discord Account : eraor
  • Transformice Account : Levi_ackerman#9277


  • Dernière modification le 1687785720000
    Chiroo
    « Citoyen »
    1687780800000
      • Chiroo#4000
      • Profil
      • Derniers messages
      • Tribu
    #2
      4
    الواضح انه متعوب على الموضوع بشكل كبير
    شكرا لك
    Visndmoka
    « Citoyen »
    1687781460000
      • Visndmoka#8590
      • Profil
      • Derniers messages
      • Tribu
    #3
      2
    كأنه مات من التعب
    Bartpo
    « Citoyen »
    1687782120000
      • Bartpo#9958
      • Profil
      • Derniers messages
      • Tribu
    #4
      1
    بالتوفيق يا صديقي ♥
    M7mdz_yt
    « Citoyen »
    1687787340000
      • M7mdz_yt#0811
      • Profil
      • Derniers messages
      • Tribu
    #5
      1
    أتمنى لو كان هذا كُل ماتحتاجه لصنع نمط كامل كما ذُكر من طرف Bartpo#9958 لكن لا اظنه كذلك للأسف ، بعيداً عن هذا شُكرا جزيلاً على هذا الدرس اللطِيف <3

    Dernière modification le 1687788840000
    Night_wolf
    « Citoyen »
    1687787580000
      • Night_wolf#8965
      • Profil
      • Derniers messages
      • Tribu
    #6
      1
    جزاكم الله خيرًا

    Dernière modification le 1708173540000
    Shockwave
    « Consul »
    1687814160000
      • Shockwave#2058
      • Profil
      • Derniers messages
      • Tribu
    #7
      1
    شكرا جزيلا.
    Bartpo
    « Citoyen »
    1687829760000
      • Bartpo#9958
      • Profil
      • Derniers messages
      • Tribu
    #8
      2
    M7mdz_yt a dit :
    أتمنى لو كان هذا كُل ماتحتاجه لصنع نمط كامل كما ذُكر من طرف Bartpo#9958 لكن لا اظنه كذلك للأسف ، بعيداً عن هذا شُكرا جزيلاً على هذا الدرس اللطِيف <3

    هيبقي فيه مواضيع جاية ان شاء الله تكمل المجهود
    M7mdz_yt
    « Citoyen »
    1687837800000
      • M7mdz_yt#0811
      • Profil
      • Derniers messages
      • Tribu
    #9
      1
    Bartpo a dit :
    M7mdz_yt a dit :
    أتمنى لو كان هذا كُل ماتحتاجه لصنع نمط كامل كما ذُكر من طرف Bartpo#9958 لكن لا اظنه كذلك للأسف ، بعيداً عن هذا شُكرا جزيلاً على هذا الدرس اللطِيف <3

    هيبقي فيه مواضيع جاية ان شاء الله تكمل المجهود


    مُتشوق جداً لذلك!! حظاً موفقاً
    Crazy
    « Censeur »
    1687988100000
      • Crazy#7020
      • Profil
      • Derniers messages
      • Tribu
    #11
      1
    واو شكرا علي تعبك في الموضوع
    Sonic12341
    « Citoyen »
    1688334420000
      • Sonic12341#0000
      • Profil
      • Derniers messages
      • Tribu
    #12
      1
    شكرًا لمجهودك وأتمني أن تشرح المزيد
    Ghost
    « Citoyen »
    1688952660000
      • Ghost#1426
      • Profil
      • Derniers messages
      • Tribu
    #13
      1
    جامد يليفاي اتمني تشرح اشياء أكثر لكي نستفاد جميعا
    Levi_ackerman
    « Citoyen »
    1688958420000
      • Levi_ackerman#9277
      • Profil
      • Derniers messages
      • Tribu
    #14
      0
    Ghost a dit :
    جامد يليفاي اتمني تشرح اشياء أكثر لكي نستفاد جميعا

    قريبا ان شاء الله
    Yatsuki
    « Censeur »
    1695334560000
      • Yatsuki#9574
      • Profil
      • Derniers messages
    #16
      1
    جميل للغاية، مجهود رائع
    Aron
    « Censeur »
    1696096500000
      • Aron#6810
      • Profil
      • Derniers messages
      • Tribu
    #17
      1
    شُكرا جزيلا
    Sa_ndy
    « Citoyen »
    1697090940000
      • Sa_ndy#0997
      • Profil
      • Derniers messages
      • Tribu
    #18
      1
    good future
    Hatem18
    « Citoyen »
    1698314400000
      • Hatem18#0000
      • Profil
      • Derniers messages
    #19
      1
    موضوع جميل جدا يعطيك العافية ^^
    • Forums
    • /
    • Transformice
    • /
    • Modules
    • /
    • [تعليم] لغة البرمجة لوا
    © Atelier801 2018

    Equipe Conditions Générales d'Utilisation Politique de Confidentialité Contact

    Version 1.27