هل تريد التفاعل مع هذه المساهمة؟ كل ما عليك هو إنشاء حساب جديد ببضع خطوات أو تسجيل الدخول للمتابعة.



 
الرئيسيةأحدث الصورالتسجيلدخول

 

 كالعادة مع الحصريات << تعلم البرمجة على الpsp بلغة lua>>

اذهب الى الأسفل 
كاتب الموضوعرسالة
Resident
المدير العام
المدير العام
Resident


ذكر
عدد الرسائل : 2713
العمر : 33
البلد : المغرب
السٌّمعَة : 0
عـــدد النـقــاط: : 5983
تاريخ التسجيل : 13/09/2008

كالعادة مع الحصريات << تعلم البرمجة على الpsp بلغة lua>> Empty
مُساهمةموضوع: كالعادة مع الحصريات << تعلم البرمجة على الpsp بلغة lua>>   كالعادة مع الحصريات << تعلم البرمجة على الpsp بلغة lua>> I_icon_minitimeالإثنين سبتمبر 15, 2008 4:21 pm

كالعادة نحن السباقون منتديات الحصريات فهدا الشرح سيكون الاول على مستوى المنتديات العربية ....
تتعتبر لغة البرمجة lua من لغات البرمجة الجديدة اذ ان اتجاه المبرمجين
نحوها اصبح يزداد يوما بعد يوم لانها تعتبر من لغات البرمجة القوية و
الحديثة كذلك فانها تتعتبر من اللغات التي تبرمج بها برامج اجهزة الالعاب
لعل ابرز مثال و هو ما سنتطرق اليه جهاز psp
اليكم الشرح

اولا نبدأ بقواعد و اساسيات لغة lua




اساسيات لغة lua


Opérateurs Arithmétiques


رمز:

+

-

*

/

^ (puissance)


Conditionnels


رمز:

< (اصغر)

> (اكبر)

<= (اصغر او مساو)

>= (اكبر او مساوو
== (مساو)

~= (مختلف)

الكل يعطينا نتيجة صحيح{true} او خطا{false{.


Logiques



رمز:

and

or

not
الكل يعطينا نتيجة true او false


Variables



رمز:

Variables globales

Elles sont déclarées le plus simplement,

variable = 10

v1,v2 = 4,18



Variables locales et Blocks



رمز:

Spécifiées par le mot clé local.

local i = 1

Un block est le corps de la structure d'une instruction, c'est la portée de la variable. On peut définir un block par do code end.

x = 10
local i = 1

while i<=x do
local x = i*2
print(x)
i = i + 1
end

if i > 20 then
local x
x = 20
print(x + 2)
else
print(x)
end

print(x)
variable globale
variable local dans le script


variable local dans le while
2, 4, 6, 8...




variable local dans le then

22

10 (variable globale)


10 (variable globale)



Conditions




رمز:

if then else

Les structures sont,

if [condition] then

code

end

if a<0 then a = 0 end



if [condition] then

code

else

code

end

if a



Il est possible d'avoir plusieurs conditions avec elseif.

if op == "+" then
r = a + b
elseif op == "-" then
r = a - b
elseif op == "*" then
r = a*b
elseif op == "/" then
r = a/b
else
error("invalid operation")
end



Les boucles


CODE
while

La structure est while [condition] do code end

local i = 1

while i<100 do

print(i)

i = i + 1

end


Repeat



رمز:

Syntaxe :

repeat

code

until [condition]

Tant que la condition n'est pas rempli la boucle s'exerce.

i=0

repeat

i=i+1

until i<10


for numérique



رمز:

Il y a aussi une boucle "généric".

La syntaxe est la suivante

for [mini],[maxi],[pas] do code end

Le paramètre [pas] est optionnel.

for i=10,0,-1 do

carre=i*i

end

On peut stopper la boucle avec l'instruction break.



Les fonctions



رمز:

Syntaxe

function x()

code

end

Pour appeler la fonction,

x()

Mêmes si la fonction n'a aucuns arguments, les () doivent être écrites.


Passer des arguments



رمز:

function carre(x)

x = x * x

end

carre(2) -----> appel la fonction carre(x) avec l'argument x=2.



Retourner des valeurs



استعمل خاصية return



رمز:

function carre(x)

a = x * x

return a

end

r = carre(2) -----> r est égal à 4.

return يجب ان تكون في آخر العملية .اعتذر على الكتابة بالفرنسية و لكن لغات البرمجة تدرس باللغات الاجنبية

Si pour une raison ou pour une autre vous avez besoin de retourner
une valeur à l'intérieur de votre fonction et plus à la fin, vous
devrez lui attribuer un block spécial.

Il est possible de passer plusieurs arguments, et de retourner plusieurs valeurs



رمز:

function Emc2(m,c)

a = c * c

b = m * a

return b,a

end

e,c2 = Emc2(10,2) -----> e = 40 et c2 = 4.




Math


Toutes les fonctions sont spécifiées avec une variable entre parenthèses. Mais
pour certaines, les arguments sont précisés.




رمز:

set_value(x,y,math.floor(var))

pi=math.pi()

math.abs
math.acos

math.asin

math.atan

math.atan2

math.ceil

math.cos

math.deg

math.exp

math.floor

math.log

math.log10

math.max(a,b,...)

math.min(a,b,...)

math.mod

math.pow(a,B)

math.rad

math.sin

math.sqrt

math.tan

math.frexp

math.ldexp

math.random(*)

math.randomseed(*)

math.pi
valeur absolue
acosinus (angle)

sinus (angle)

atangente (angle)



arrondie à l'entier supérieur



رمز:

cosinus (valeur)

conversion en degré

exponentiel

retourne un entier (tronque la partie décimale)


logarythme



رمز:

logarythme base 10

valeur maximum

valeur minimum


Puissance



رمز:

conversion en radian

sinus (valeur)

racine carré

tangente (valeur)





retourne un nombre "aléatoire" entre 0 et 1

graine pour le générateur de nombre

constante pi


عدل سابقا من قبل عبد العالي في الأحد أكتوبر 05, 2008 7:20 am عدل 1 مرات
الرجوع الى أعلى الصفحة اذهب الى الأسفل
Resident
المدير العام
المدير العام
Resident


ذكر
عدد الرسائل : 2713
العمر : 33
البلد : المغرب
السٌّمعَة : 0
عـــدد النـقــاط: : 5983
تاريخ التسجيل : 13/09/2008

كالعادة مع الحصريات << تعلم البرمجة على الpsp بلغة lua>> Empty
مُساهمةموضوع: رد: كالعادة مع الحصريات << تعلم البرمجة على الpsp بلغة lua>>   كالعادة مع الحصريات << تعلم البرمجة على الpsp بلغة lua>> I_icon_minitimeالإثنين سبتمبر 15, 2008 4:21 pm

و الآن مع الدرس الاول

نبدا على بركة الله و في هذا الدرس سنتعلم كيفية البرمجة بلغة lua و اساسا من خلال تعلم قواعدها
لكي نبدا يجب عليكم ان تعرفوا أنه يجب ان يتوفر لديكم برنامج خاص للكتابة
بهذه اللغة و البرنامج الذي يكفينا هو المتوفر في الوندوز و هو bloc note
( لا تنسوا بعد كتابة برامجكم ان تسجولها بالنسق التالي .lua و ليس .txt )
كذلك فانه يتوفر برنامج للبرمجة بلغة lua و هو luaIDE وهو سهل الاستخدام و اليكم screenshot للبرنامج


كالعادة مع الحصريات << تعلم البرمجة على الpsp بلغة lua>> Luaide1af7


تحميل luaIDE

و الان ساشرح لكم كيف تستعملون lua player و ساعطيكم بعض الاسرار

اولا ساشرح لكم كيف تشغلون lua player .حملوا الاصدار0.22 للفريموار 1.5 من هنا

و الان ضع الملف luaplayer و %luaplayer داخل الملف game للميموري stick

اما بعد فساريكم كيفية تنصيب اي سكريبت lua لكي نستطيع قراءته فيما بعد ب
luaplayer ... في الملف luaplayer يوجد ملف آخر اسمه applications و في
داخله توجد العديد من الالعاب ..نفترض انكم تمكنتم من برمجة لعبة سيارات
تسمى "r.rally" و تريدون ان يقرأها luaplayer و لهذا يجب انشاء ملف اسمه
"r.rally" داخل الملف applications و ضعوا السكريبت lua
ملاحضة : وهي ان السكريبت يكون اسمه "index.lua"

اتبعوا هذا :

PSP
-->game -->luaplayer% -->luaplayer -->Applications -->r-rally -->index.lua

و الان شغلو luaplayer من menu متاع psp
و هكذا انتهى الدرس الاول
الرجوع الى أعلى الصفحة اذهب الى الأسفل
Resident
المدير العام
المدير العام
Resident


ذكر
عدد الرسائل : 2713
العمر : 33
البلد : المغرب
السٌّمعَة : 0
عـــدد النـقــاط: : 5983
تاريخ التسجيل : 13/09/2008

كالعادة مع الحصريات << تعلم البرمجة على الpsp بلغة lua>> Empty
مُساهمةموضوع: رد: كالعادة مع الحصريات << تعلم البرمجة على الpsp بلغة lua>>   كالعادة مع الحصريات << تعلم البرمجة على الpsp بلغة lua>> I_icon_minitimeالإثنين سبتمبر 15, 2008 4:22 pm

الدرس الثاني
اظهار نص على شاشة الpsp


و الان سوف اعلمكم كيف تبرمجون و سنبدأ بتعلم كيفية اظهار نص على شاشة الpsp ..اولا يجب اعطاء اللون في اول متغير (variable).


رمز:

rouge = Color.new(255,0,0)


و الان اظنكم انكم لاحظتم اني وضعت اسم "rouge" و انتم
تستطيعون وضع اي لون آخر .اما بعد فتوجد" Color.new" لا تنسو ان تكتبوا
حرف c بالكبير majuscule و اذا لم تفعلوا فسيظهر لكم message d`erreur
...... اما الجزء "(255.0.0)" فهو رمز اللون الأحمر ..و الان ساريكم كيف
تحصلون على رموز الكودات لمختلف الالوان ...افتحوا paint ثم couleur ثم
modifier couleur ستحصلون على النافذة التالية



كالعادة مع الحصريات << تعلم البرمجة على الpsp بلغة lua>> 2copyca4


اظغطوا على defenir les couleurs personalisees لتتحصلوا على :


كالعادة مع الحصريات << تعلم البرمجة على الpsp بلغة lua>> 3copyeb4


و هذه الصورة تبين الكود الخاص باللون الاحمرالذي قمت باحاطته

اما الان فهاهو الكود التالي



رمز:

text = "Mon premier programme en lua par jawher-karate"


و الان انظروا هناك 2 من المتغيرات les variables معرفان و سوف نظهرهم على الشاشة



رمز:

screen:print (150,100,text,rouge)

"screen:print" هي ما يعبر عنه باللغة الفرنسية
fonction و هي لازمة لكي نظهر النص على شاشة ال psp و بما ان شاشة ال psp
ابعادها 480 pixels من الطول 272 من الارتفاع فيجب ان يكون النص على
احداثيات سنبرزها لكم
انظروا الى الصورة لتعرفوا ابعاد ال psp



كالعادة مع الحصريات << تعلم البرمجة على الpsp بلغة lua>> Taillepsp4copyfy1


بالرجوع الى صورة الابعاد ناخذ نصنا على 150 من طول شاشة ال psp و 100 من الارتفاع



رمز:

-- couleur (les commentaires sont repéré par deux tirets en début de ligne)
rouge = Color.new (255,0,0)
-- text
text = "Mon premier programme en lua par jawher-karate"


و الان يجب ان نضيف ال fonction التالية "screen.flip()" وهي لازمة للعملية التي ستقوم بها .
لكي نظهر نص متواصل يجب اقحام ما يعبر عنه ب boucle conditionnelle :
"while true do" الذي يسمح باعادة الفعل او الامر الذي قمنا باعطائه .ثم
نظيف screen.waitVblankStart() متبوعة ب end لنقول ان البرنامج الذي
سنصنعه قد انتهى و screen.waitVblankStart() يجب ان تكون ظاهرة عند نهاية
برامجكم


هاهي الصورة التي ستظهر لكم

كالعادة مع الحصريات << تعلم البرمجة على الpsp بلغة lua>> 55copykk4

و هاهو الكود الكامل



رمز:

-- couleur
rouge = Color.new (255,0,0)
-- text
text = "Mon premier programme en lua par jawher-karate"
while true do
screen:print (150,100,text,rouge)
screen.flip()
screen.waitVblankStart()
end

حمل code source كاملا من هنا
الرجوع الى أعلى الصفحة اذهب الى الأسفل
Resident
المدير العام
المدير العام
Resident


ذكر
عدد الرسائل : 2713
العمر : 33
البلد : المغرب
السٌّمعَة : 0
عـــدد النـقــاط: : 5983
تاريخ التسجيل : 13/09/2008

كالعادة مع الحصريات << تعلم البرمجة على الpsp بلغة lua>> Empty
مُساهمةموضوع: رد: كالعادة مع الحصريات << تعلم البرمجة على الpsp بلغة lua>>   كالعادة مع الحصريات << تعلم البرمجة على الpsp بلغة lua>> I_icon_minitimeالإثنين سبتمبر 15, 2008 4:22 pm

اما الآن فمع الدرس الثالث
كيف نظهر الصور على شاشة ال psp


اولا نسق الصور يجب ان يكووووون .png و لا يتعدى 480*272 حجم شاشة ال psp
اما بعد فسنظهر خلفية الشاشة و سنضيف عليها نصا
لكي نبدأ سنضع variable او المتغير " bleu" ... انتم الان تعرفون كل شيء عن الالوان




رمز:

bleu = Color.new (0,0,255)

ام بعد سنذهب للبحث عن backround اوfond d`ecran او الخلفية


رمز:

background = Image.load ("background.png")


image.load تمكن من رفع الصورة .و لا تنسوا ان تضعوا
"i" بالحجم الاكبر (majuscule) ..افترض انكم تطلبون اين مكان الصورة اذا
يجب وضعها بجانبscript.lua و اذا اردتك رفع ملف صور لوضع جميع الصور اليكم
الكود




رمز:

background = Image.load ("images/background.png")


و الان حان دور وضع ال fonction الخاص لاضهار الصورة



رمز:

screen:blit (0,0,background)

الاحداثيات 0.0 هي لوضع الخلفية


ملخص الكود



رمز:

bleu = Color.new (0,0,255)
background = Image.load ("images/background.png")
screen:blit (0,0,background)


انظروا ماذا ظهر على الشاشة ( صورة ال psp هي الصورة التي استعملتها و تستطيعون ملاحظة ذلك اذا دققتم النظر )

كالعادة مع الحصريات << تعلم البرمجة على الpsp بلغة lua>> Background6copyan4


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



رمز:

screen:print ( 100, 00," La psp est une console portable génial", rouge)
screen:blit (0,0,background)


و



رمز:

screen:blit (0,0,background)
screen:print ( 100, 00," La psp est une console portable génial", rouge)


لاحضوا جيدا في المثال الاول سيكون اظهار النص قبل الصورة اما في المثال الثاني فبعدها
نكمل الكود و قد اخترت لكم النص التالي للفائدة و لتتعلموا البرمجة



رمز:

text = "XtreamLua est un site proposant"
text2 = "plusieurs cours de programmation en lua"
screen:print ( 100,100, text, bleu)
screen:print ( 100, 120, text2, bleu)


و الآن انظروا الى screenshot الذي لدينا و الذي هو كنتيجة نهائية

كالعادة مع الحصريات << تعلم البرمجة على الpsp بلغة lua>> 7copywz8

هاهو code source



رمز:

-- couleur
bleu = Color.new (0,0,255)
-- image
background = Image.load ("images/background.png")
--text
text = "XtreamLua est un site proposant"
text2 = "plusieurs cours de programmation en lua"

--boucle conditionnelle
while true do
screen:blit (0,0,background)
screen:print ( 100,100, text, bleu)
screen:print ( 100, 120, text2, bleu)
screen.flip()
screen.waitVblankStart()
end


و لتحميل الكود كاملا من هنا
الرجوع الى أعلى الصفحة اذهب الى الأسفل
Resident
المدير العام
المدير العام
Resident


ذكر
عدد الرسائل : 2713
العمر : 33
البلد : المغرب
السٌّمعَة : 0
عـــدد النـقــاط: : 5983
تاريخ التسجيل : 13/09/2008

كالعادة مع الحصريات << تعلم البرمجة على الpsp بلغة lua>> Empty
مُساهمةموضوع: رد: كالعادة مع الحصريات << تعلم البرمجة على الpsp بلغة lua>>   كالعادة مع الحصريات << تعلم البرمجة على الpsp بلغة lua>> I_icon_minitimeالإثنين سبتمبر 15, 2008 4:23 pm

الدرس الرابع
المعرفة التامة بالأزرار



رمز:

--text
croix = "La touche enfoncée est la croix"
rond = "La touche enfoncée est le rond"
carré = "La touche enfoncée est le carré"
triangle = "La touche enfoncée est le triangle"
select = "La touche enfoncée est select"
start = "La touche enfoncée est start"
L = "La touche enfoncée est L"
R = "La touche enfoncée est R"
gauche = "La touche enfoncée est gauche"
droite = "La touche enfoncée est droite"
haut = "La touche enfoncée est haut"
bas = "La touche enfoncée est bas"



سوف نقوم بتعريف اللون . الاحمر على سبيل الذكر



رمز:

--couleur
rouge = (255,0,0)



ثم نضع screen:clear() على boule principale و سنقوم
بمسح الشاشة ثم ننشأ variable اسمها pad و التي لها ك fonction اسمها
Controls.read() و تستعمل للتجميع



رمز:

--boucle principale
while true do

screen:clear()
pad = Controls.read()



هاهو الكود كاملا


رمز:

--text
croix = "La touche enfoncée est la croix"
rond = "La touche enfoncée est le rond"
carre = "La touche enfoncée est le carre"
triangle = "La touche enfoncée est le triangle"
select = "La touche enfoncée est select"
start = "La touche enfoncée est start"
L = "La touche enfoncée est L"
R = "La touche enfoncée est R"
gauche = "La touche enfoncée est gauche"
droite = "La touche enfoncée est droite"
haut = "La touche enfoncée est haut"
bas = "La touche enfoncée est bas"
--couleur
rouge = Color.new(255,0,0)

--boucle principale
while true do

screen:clear()
pad = Controls.read()

if pad:cross() then
screen:print(10,10,croix,rouge)
end

if pad:circle() then
screen:print(10,20,rond,rouge)
end

if pad:square() then
screen:print(10,30,carre,rouge)
end

if pad:triangle() then
screen:print(10,40,triangle,rouge)
end

if pad:l() then
screen:print(10,50,L,rouge)
end

if pad:r() then
screen:print(10,60,R,rouge)
end

if pad:select() then
screen:print(10,70,select,rouge)
end

if pad:start() then
screen:print(10,80,start,rouge)
end

if pad:up() then
screen:print(10,90,haut,rouge)
end

if pad:down() then
screen:print(10,100,bas,rouge)
end

if pad:left() then
screen:print(10,110,gauche,rouge)
end

if pad:right() then
screen:print(10,120,droite,rouge)
end

screen.waitVblankStart()
screen.flip()
end



نأخذ على سبيل المثال الزر start و الذي يعطينا الكود التالي



رمز:

if pad:start() then
screen:print(10,10,start,rouge)
end


لقد استعملنا boucle conditionnelle if-then-end
====> اذا ظغطنا على الزر start سيظهر النص التالي "la touche start
est enfoncee"

افترض انكم فهمتم المبدأ
هذه screenshot للبرنامج عند اشتغاله



كالعادة مع الحصريات << تعلم البرمجة على الpsp بلغة lua>> 10pi7



الكود كاملا من هنا
الرجوع الى أعلى الصفحة اذهب الى الأسفل
Resident
المدير العام
المدير العام
Resident


ذكر
عدد الرسائل : 2713
العمر : 33
البلد : المغرب
السٌّمعَة : 0
عـــدد النـقــاط: : 5983
تاريخ التسجيل : 13/09/2008

كالعادة مع الحصريات << تعلم البرمجة على الpsp بلغة lua>> Empty
مُساهمةموضوع: رد: كالعادة مع الحصريات << تعلم البرمجة على الpsp بلغة lua>>   كالعادة مع الحصريات << تعلم البرمجة على الpsp بلغة lua>> I_icon_minitimeالإثنين سبتمبر 15, 2008 4:24 pm

الدرس الخامس

لعبتك الاولى ببرمجة lua


يوف نقوم بتعلم اساسيات لعبة mario الشهيرة
اولا نقوم برفع الصور التي تنحتاجها



رمز:

--images
background = Image.load("background.png")
marioleft = Image.load("marioleft.png")
marioright = Image.load("marioright.png")



اما الان فسنقوم باعطاء les variables لنتحصل على مكان انطلاق شخصيتنا mario ...انظروا "positionY" للعرض و "positionX" للطول



رمز:

--position de depart
positionY = 210
positionX = 30



الان سنقوم بتعريف ازرار الpsp التي سنستخدمها ..سنستعمل نفس الطريقة في الدرس الرابع مع بعض التجديد



رمز:

if pad:left() then
statut = "left"
x = x+3
end

if pad:right() then
statut = "right"
x = x-3
end

if statut == "left" then screen:blit(positionX, positionY, marioleft)
end
if statut == "right" then screen:blit(positionX, positionY, marioright)
end




سنقوم بتفسير بعض المفاهيم

"if statut == "left" then screen:blit(positionX, positionY, marioleft)".
للتحم في الاتجاهات... اما باقي المفردات فقد تعرضنا اليها .....



رمز:

if pad:left() then
screen:blit(positionX, positionY, marioright)
x = x+3
end



عندما نضغط على زر التوجيه الايسر mario يقوم بالتحرك يسارا و هكذا و عندم نكف عن الضغط يتوقف
عندما تحاولون مع لعبتكم mario الآن يستطيع mario ان يتحرك يمينا و شمالا
و لكن سنعترض بعض المشاكل و هي ان شقهخ يتوقف عن التحرك عندما يصل الى
نهاية الشاشة و ذلك لعدم توفر خلفيات اخرى

سنحاول اصلاح هذا الخطا ب :



رمز:

if pad:left() then
statut = "left"
x = x+3

if positionX>10 then
positionX=positionX-1
end
end

if pad:right() then
statut = "right"
x = x-3

if positionX<462 then
positionX=positionX+1
end
end



ناخذ هذا السطر من الكتابة لنحلله



رمز:

if positionX>10 then
positionX=positionX-1



و من خلال هذا السطر نفهم ان mario سيتوقف عند 10 بيكسالات من حافة الشاشة .و اذا اردتم 3 بيكسالات فقط عوضوا 10 ب 3 و هكذا


و الان نحاو ل اصلاح خطا آخر



رمز:

screen:blit(x, 0, background)
screen:blit(x+480, 0, background)
screen:blit(x-480, 0, background)
if x == -480 or x == 480 then x = 0 end



هذه الاربع سطور تعني سيكون هناك توقف للخلفية عند بعد معين

اليكم الصورة النهائية للعبة



كالعادة مع الحصريات << تعلم البرمجة على الpsp بلغة lua>> 9copysv0


تحميل الكود كاملا من هنا


كالعادة مع الحصريات << تعلم البرمجة على الpsp بلغة lua>> Kn3iipx8443505mk2
الرجوع الى أعلى الصفحة اذهب الى الأسفل
 
كالعادة مع الحصريات << تعلم البرمجة على الpsp بلغة lua>>
الرجوع الى أعلى الصفحة 
صفحة 1 من اصل 1
 مواضيع مماثلة
-

صلاحيات هذا المنتدى:لاتستطيع الرد على المواضيع في هذا المنتدى
 :: PlayStation World :: قسم الـPSP-
انتقل الى: