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

مشاهدة النسخة كاملة : [درس] عمل عدادات رقمية بالسبرايتات على الجيم ميكر



سامي.خ
09-02-2008, 02:40 AM
السلام عليكم
اليوم عندنا درس جديد، مو صعب لكن فكرته جديدة

مليت من شكل الأرقام التقليدية
أو عندك صورة أرقام سويتها
http://www.mortalkombatwarehouse.com/mk2/props/versus/02.gif

وتبغى تحطها في لعبتك للدرجات أو للصحة أو لأي متغير

الطريقة سهلة
أول شيء سوي سبرايت وحط فيه أرقامك من 0 إلى 9 في كل فريم رقم زي كذا
http://www.upload2world.com/pic73/upload2world_9c16c.gif

لاحظ ان كل رقم فريم هو نفس رقم الصورة

طيب
بعدين نجي للكود
نحط الكود في الحدث draw

قبل ما اكتب الكود لازم نشرح بعض الأشياء

الدالة floor
هذي الدالة تستخدم عشان أي رقم عشري يحذف الأعداد العشرية وتصير عادد صحيح
يعني 10.37 تصير 10
طبعاً فيه فرق بين Floor و Round
round يستخدم لتقريب أي رقم عشري لعدد صحيح
10.37 تصير 10 و 10.77 تصير 11

لذالك بنستخدم floor وليس round
بتعرفون إلحين ليش وكيف ولماذا نستخدمها

إذا كان عندنا متغير قيمته 7 مثلاُ
وخلينا السبرايت رقم الفريم حقه هو المتغير هذا
بتلاقيه حط لك الصورة رقم 7
شيء معروف
طيب
لو كان عندنا 70
وقلنا للسبرايت يعرف الفريم 70
بيعرض الفريم رقم 0
كيف نخليه يعرض خانة العشرات؟؟؟
70/10=7
يعني نقسم العدد على رقم الخانة حقته
أتمنى انكم فهمتوني، أدري ان شرحي زي وجهي بس وش اسوي

طيب نجي للكود

draw_sprite(spr_num_1,floor(health),60,50)//الأحاد
if health>9 {draw_sprite(spr_num_1,floor(health/10),40,50)}//العشرات
if health>99 {draw_sprite(spr_num_1,floor(health/100),20,50)}//المئات
المتغير إلي انا حطيته هو متغير الصحة Health
تقدرون تستخدمون أي متغير تبغونه
أظن ما فيه داعي اشرح الكود لأنه معروف
إلي مو فاهم يسأل مو مشكلة

ودمتم سالمين
أوه! نسيت أرفق لكم ملف المثال
الشاطر هو إلي يقدر يطبق الدرس بدون ما يشوف المثال

أبواب السلام
09-02-2008, 12:20 PM
تسلم اخوي سامي جاري التطبيق .... :)

d.a.m.h
09-02-2008, 12:36 PM
لم اكن استخدم من قبل floor او round ....يمكن لأنى لم اتعامل مع ارقام عشرية من قبل....شكرا على الدرس وجارى تطبيقه

من التراب
10-02-2008, 12:57 AM
درس مميز ورائع
لأنه يجعل للعبة طابع خاص فيها تتميز به عن غيرها ^_^
--
شرح جميل ووافي إن شاء الله
لكن هل هناك طريقة لجعل الكود فعال بطريقة تلقائية مع أي رقم مهما كان حجمة ؟؟
^..^
--
شكرًا على الدرس الجميل

سامي.خ
10-02-2008, 03:58 AM
لم اكن استخدم من قبل floor او round ....يمكن لأنى لم اتعامل مع ارقام عشرية من قبل....شكرا على الدرس وجارى تطبيقه
هذي من زمان وانا احاول ألاقي لها حل لكن الحمد لله عرفت لها


لكن هل هناك طريقة لجعل الكود فعال بطريقة تلقائية مع أي رقم مهما كان حجمة ؟؟
ادري، عن طريق أمر التكرار، كنت بفكر فيها لكن ماني فايق لها
بشوف بعدين

The_source
10-02-2008, 08:03 AM
هذا متوقّع من الأخ سامي...............كذا المواضيع وإلابلاش

mujahedD555
10-02-2008, 02:26 PM
مشكور جدا جدا اخوي :biggthump

انا لما شفت المثال كان بسيط جدا حيث اني اتعلمت بسرعة
وطريقتك هذه سهلة جدا حيث يمكن استخدامها في الالعاب( طبعا:smashfreakB:)
وبالتوفيق انشاءالله

TheIslamFalcon
10-02-2008, 09:08 PM
مشكور أخي الكريم درس متعوب عليه الله يجزيك خير وأحسن الشي أنك عملت مثال.شكرأً لك

Elkfrawy
12-02-2008, 07:10 PM
السلام عليكم ورحمة الله وبركاته


- ماشاء الله درس مميرز صراحه أخي ، أنا كنت لاحظت عملك لها في لعبة " الفول والجره "وأعجبتني كثيراً ، ولم أكن أعلم أنها بهذه السهوله .



لكن هل هناك طريقة لجعل الكود فعال بطريقة تلقائية مع أي رقم مهما كان حجمة ؟؟



- أعتقد إن مثل هذا الكود يفي بالغرض :biggthump :



num_length=string_length(string(health))
dist=20
for (s=(num_length-1) ; s>=0 ; s-=1)
{
draw_sprite(spr_num_1,floor(health/(power(10,s))),dist,50)
dist+=20
}

Prince Of Pain
13-02-2008, 04:15 AM
والله الدرس رائع جدا جدا جدا جدا.....
............................واتمنى لك التوفيق والدروس القادمة...

سامي.خ
13-02-2008, 08:32 AM
- ماشاء الله درس مميرز صراحه أخي ، أنا كنت لاحظت عملك لها في لعبة " الفول والجره "وأعجبتني كثيراً ، ولم أكن أعلم أنها بهذه السهوله .

لا ما استخدمت هذي الحركة في لعبة الجرة والفول، استخدمت خطوط الرشيد إلي فيها الأرقام بالعربي بس

شكراً لك ^^
الطريقة نجحت، آخ منك كنت بحاول أسويها لكنك سبقتني، لكن فكرتك رهيبة

Prince Of Pain
24-02-2008, 03:42 AM
السلام عليكم ورحمة الله وبركاته


- ماشاء الله درس مميرز صراحه أخي ، أنا كنت لاحظت عملك لها في لعبة " الفول والجره "وأعجبتني كثيراً ، ولم أكن أعلم أنها بهذه السهوله .

- أعتقد إن مثل هذا الكود يفي بالغرض :biggthump :



num_length=string_length(string(health))
dist=20
for (s=(num_length-1) ; s>=0 ; s-=1)
{
draw_sprite(spr_num_1,floor(health/(power(10,s))),dist,50)
dist+=20
}


طبقت طريقتك بس كيف اجعل view داخل هذا الكود

سامي.خ
24-02-2008, 02:02 PM
طبقت طريقتك بس كيف اجعل view داخل هذا الكود
ماني فاهم سؤالك؟؟
وضح

Prince Of Pain
25-02-2008, 03:12 AM
يعني يتبع الشاشة ..... مع الشخصية ....

سامي.خ
25-02-2008, 09:24 PM
آها
سهله


x=view_xview[0]+500
y=view_yview[0]+100

يعني يحسب موقعه من بداية إحداثي الكاميرا

Prince Of Pain
26-02-2008, 02:55 AM
مشكوووووووور يا بطل^^

drow13
06-03-2008, 10:07 AM
تسلم اخي فارس العرب سامي ..........هذا متوقع منك ان شالله نشوف المزيد منك