المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : تصميم لعبة ذكاء ببساطة بالاوتوبلاي


عبد الهادي بهاب
23-11-2017, 09:55 AM
السلام عليكم

اليوم سنقوم لتعلم تصميم لعبة ذكاء بسيطة جدا تعتمد على تدوير مجموعة اشكال للوصول الى تطابق افقي او عمودي

الفكرة مستقامة من لعبى تسمى hisimantiki

http://u.damasgate.com/001/4/anc86o1mu7y00cdhaf96.png

رابط اللعبة
http://www.b30b.com/up//view.php?file=bb52549e0d

الان مع البرمحة بالاوتوبلاي :
سنركز على شيئين تدوير الاشكال و ايضا كيف نعلن ان اللاعب نجح في الللعب

- افتح مشروع جديد
- في الصفحة ضع 2 من paragraph و ضع لهما لون واحدا لكليهما او ممكن تخد صورة كخلفية ما
- حمل صور لاشكال بسيطة مختلفة اللون مثلا الاشكال التالية
http://u.damasgate.com/001/4/rr2owgc23iv7e4jc8cb9.png

http://u.damasgate.com/001/4/26di8932y58kpaon1unf.png

http://u.damasgate.com/001/4/hjzrbdguwty4pwdj1z1u.png

http://u.damasgate.com/001/4/hw7e2snkl96sjybzpl3f.png

http://u.damasgate.com/001/4/cozi23fbc7srdf1qercj.png

http://u.damasgate.com/001/4/qb42xwn0w0ospi9ba6qc.png

http://u.damasgate.com/001/4/vcg0ty8bnbt7ya8d9dhk.png

http://u.damasgate.com/001/4/2z3a2vqf0p28cvn56h5x.png

http://u.damasgate.com/001/4/midd6zf1azz1erlvkwdl.png


- الان نضع الصور بشكل موزع على حواف الخلفيتين بهذا الشكل :
http://u.damasgate.com/001/4/ab3grl4nnbr5dzex8qf9.png

الان سنفترض ان المشكل في الصورتين المتقابلتين يجب ان يكونا من نفس النوع
لذلك سنجعل كود التصحيح هو ان يعرف مصدر الصورتين لمتقابلتين
فان وجد انهما من نفس النوع يعلنك لاعيا ناجحا
اذن اولا سنحفظ مكان الصورتين المتقابلتين و في مشروعنا هما الصورة رقم 3 من المربع الاول
و الصورة 5 من المربع 2
و لنتفرض متغيرين هما sol 1 ; sol2 وهما موقع الصورتين باستخدام الكود التالي :

sol1 = Image.GetPos("Image3");
sol2 = Image.GetPos("Image5");

ثم نضع متغيرين اين نحفظ فيهما مصدر الصورتين الموجدتين في الموقع 3 و 5 و نسميهما obj1: obj2
بداية نعطيهما مصدر الصورتين في الشكل الاول بواسطة الكود

obj1 = Image.GetFilename("Image3");
obj2 = Image.GetFilename("Image5");

الان كيف نجعل المربع يدور ؟
نحن لن نجعله يدور بل سنجعل الصور التي في وسطه تدور ...و بالاحرى تغيير مواقعها تباعا من اليمين الى اليسار او العكس بوضع موقع الصور بالشكل التالي :

http://u.damasgate.com/001/4/eveuapfxepw6enb86y2x.png

تضع في الخلفية للمربع الاول مهما كان صورة او paragraph نضغ في الحدث On click الكود التالي :
نحفظ موقع الصور من 1 الى 4 في مصفوفة ... ثم نجعل الصورة الاولى تاخد موقع الصورة 2 و الصورة 2 تنتقل الى موقع الصورة 3 و هكذا

pos1={}; for i=1,4 do pos1[i] = Image.GetPos("Image"..i) end

for i=1,4 do
if i== 4 then p=1; else p=i+1 end
Image.SetPos("Image"..i , pos1[p].X, pos1[p].Y);
end

نفس الشي في المربع الثاني فقط نضيف i+4 لياخد موقع الصور 5-6-7-8

pos1={}; for i=1,4 do pos1[i] = Image.GetPos("Image"..i+4) end

for i=1,4 do
if i== 4 then p=1; else p=i+1 end
Image.SetPos("Image"..i+4 , pos1[p].X, pos1[p].Y);
end

جميل فلما تضغط على الصور تتنقل كالتالي :
http://u.damasgate.com/001/4/zxkcm0dqdmodouyair1l.gif


الان ناتي الى كود التصحيح :
بعد كل ضغطة سيحفظ الكود ماهو مصدر الصورة التي تحتل الموقع 3 في obj1
نفس الشيء في المربع الثاني يحفظ مصدر الصورة التي تحتل الموقع 5 و يحفظها في obj2

الان سيقارن القيمتين obj1 و obj2 فان كانا متساويتيم فان الشكلين كتطابقين و بالتالي نجح اللاعب
اذن في المربع الاول يصبح الكود كالاتي

pos1={}; for i=1,4 do pos1[i] = Image.GetPos("Image"..i) end

for i=1,4 do
if i== 4 then p=1; else p=i+1 end
Image.SetPos("Image"..i , pos1[p].X, pos1[p].Y);
end

for i=1,4 do
if Image.GetPos("Image"..i).X == sol1.X and Image.GetPos("Image"..i).Y == sol1.Y then
ala = i ;
end
end

obj1 = Image.GetFilename("Image"..ala);

if obj1 ~= "" and obj2 ~= "" and obj1 == obj2 then
Dialog.Message("bahab elhadi","gooooooooooooooooood");
end

و في المربع الثاني:

pos1={}; for i= 1,4 do pos1[i] = Image.GetPos("Image"..i+4) end

for i=1,4 do
if i== 4 then p=1; else p=i+1 end
Image.SetPos("Image"..i+4 , pos1[p].X, pos1[p].Y);
end

for i=1,4 do
if Image.GetPos("Image"..i+4).X == sol2.X and Image.GetPos("Image"..i+4).Y == sol2.Y then
ali = i+4 ;
end
end

obj2 = Image.GetFilename("Image"..ali);

if obj1 ~= "" and obj2 ~= "" and obj1 == obj2 then
Dialog.Message("bahab elhadi","gooooooooooooooooood");
end

و في الصفحة في on show

sol1 = Image.GetPos("Image3");
sol2 = Image.GetPos("Image5");
obj1 = Image.GetFilename("Image3");
obj2 = Image.GetFilename("Image5");

احفظ العمل ثم معاينة

بالتوفيق

عبد الهادي بهاب
23-11-2017, 09:56 AM
السلام عليكم
في الصفحة الثانية
سنضع الان اربع مربعات و في كل مريع اربع اشكال
بعذا الشكل

http://u.damasgate.com/001/4/e99v46rl7wwdr31q58zc.png

يجب ان تركز على الصور المتقابلة و نسجل ارقامها و هي التي ستلزمنا في كود التصحبح
في مشروعنا الارقام المتقابلة هي الكاتي
http://u.damasgate.com/001/4/j0qup2ff08i7b5fhddvi.png

سيكون نفس الكود لتدوير اشكال المربع الواحد و يسجل مصدر الصور التي نريدها في كل مربع
و بالتالي يصبح المشروع كالالتي

في الصفحة on show
sol1 = Image.GetPos("Image3");
sol2 = Image.GetPos("Image4");
obj1 = Image.GetFilename("Image3");
obj2 = Image.GetFilename("Image4");

sol3 = Image.GetPos("Image5");
sol4 = Image.GetPos("Image8");
obj3 = Image.GetFilename("Image5");
obj4 = Image.GetFilename("Image8");

sol5 = Image.GetPos("Image10");
sol6 = Image.GetPos("Image11");
obj5 = Image.GetFilename("Image10");
obj6 = Image.GetFilename("Image11");

sol7 = Image.GetPos("Image14");
sol8 = Image.GetPos("Image13");
obj7 = Image.GetFilename("Image14");
obj8 = Image.GetFilename("Image13");



الان في المربع الاول اعلى بسار
pos1={}; for i=1,4 do pos1[i] = Image.GetPos("Image"..i) end

for i=1,4 do
if i== 4 then p=1; else p=i+1 end
Image.SetPos("Image"..i , pos1[p].X, pos1[p].Y);
end

for i=1,4 do
if Image.GetPos("Image"..i).X == sol1.X
and Image.GetPos("Image"..i).Y == sol1.Y then
ala = i ;
elseif Image.GetPos("Image"..i).X == sol2.X
and Image.GetPos("Image"..i).Y == sol2.Y then
ali = i ;
end
end

obj1 = Image.GetFilename("Image"..ala);
obj2 = Image.GetFilename("Image"..ali);


if obj1 == obj3 and obj2 == obj5
and obj6 == obj8 and obj4 == obj7 then
Dialog.Message("","gooooooooooooooooood");
end

في المربع الثاني اعلى على اليمسن
pos1={}; for i=1,4 do pos1[i] = Image.GetPos("Image"..i+4) end

for i=1,4 do
if i== 4 then p=1; else p=i+1 end
Image.SetPos("Image"..i+4 , pos1[p].X, pos1[p].Y);
end

for i=1,4 do
if Image.GetPos("Image"..i+4).X == sol3.X
and Image.GetPos("Image"..i+4).Y == sol3.Y then
ala = i+4 ;
elseif Image.GetPos("Image"..i+4).X == sol4.X
and Image.GetPos("Image"..i+4).Y == sol4.Y then
ali = i+4 ;
end
end

obj3 = Image.GetFilename("Image"..ala);
obj4 = Image.GetFilename("Image"..ali);


if obj1 == obj3 and obj2 == obj5
and obj6 == obj8 and obj4 == obj7 then
Dialog.Message("","gooooooooooooooooood");
end

في المربع الثالث اسفل بسار
pos1={}; for i=1,4 do pos1[i] = Image.GetPos("Image"..i+8) end

for i=1,4 do
if i== 4 then p=1; else p=i+1 end
Image.SetPos("Image"..i+8 , pos1[p].X, pos1[p].Y);
end

for i=1,4 do
if Image.GetPos("Image"..i+8).X == sol5.X
and Image.GetPos("Image"..i+8).Y == sol5.Y then
ala = i+8 ;
elseif Image.GetPos("Image"..i+8).X == sol6.X
and Image.GetPos("Image"..i+8).Y == sol6.Y then
ali = i+8 ;
end
end



obj5 = Image.GetFilename("Image"..ala);
obj6 = Image.GetFilename("Image"..ali);


if obj1 == obj3 and obj2 == obj5
and obj6 == obj8 and obj4 == obj7 then
Dialog.Message("","gooooooooooooooooood");
end

في المربع الرابع اسفل يمين
pos1={}; for i=1,4 do pos1[i] = Image.GetPos("Image"..i+12) end

for i=1,4 do
if i== 4 then p=1; else p=i+1 end
Image.SetPos("Image"..i+12 , pos1[p].X, pos1[p].Y);
end

for i=1,4 do
if Image.GetPos("Image"..i+12).X == sol7.X
and Image.GetPos("Image"..i+12).Y == sol7.Y then
ala = i+12 ;
elseif Image.GetPos("Image"..i+12).X == sol8.X
and Image.GetPos("Image"..i+12).Y == sol8.Y then
ali = i+12 ;
end
end


obj7 = Image.GetFilename("Image"..ala);
obj8 = Image.GetFilename("Image"..ali);


if obj1 == obj3 and obj2 == obj5
and obj6 == obj8 and obj4 == obj7 then
Dialog.Message("","gooooooooooooooooood");
end


لما تحفظ العمل يصبح لك العمل بهذا الشكل :
http://u.damasgate.com/001/4/0x9ya7ulfnzcvcygweko.gif

قم بالمعاينة و ارفعوا لنا تطبيقاتكم