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

مشاهدة النسخة كاملة : اصنع آلة حاسبة فلاشية بكل سهولة ويسر.. مدعم بصور+ الملف المفتوح



salima
10-30-2013, بتوقيت غرينيتش 08:01 PM
السلام عليكم
قد يعتقد البعض عندما يرى آلة حاسبة فلاشية انها امر معقد يحتاج الى الكثر من البرمجة
انا كنت اعتقد ذلك
لكن عندما جربت ان اعملها وجدت كم هي سهلة

اول شي ارسم 12 زر ورتبهم بشكل الازرار المعتاد
10 ازرار للارقام مع وضع زر اسمه (.) للفاصلة العشرية وزر (-/+) للتحويل من سالب الى موجب
وهذي صورة توضيحية

http://www.post4host.org/attach/cal/1.gif

(ملاحظة الاشكال والحركات لاتعنينا الان.. انت بعدين تفنن في الحركات والمؤثرات الفلاشية)
قم باضافة ثلاثة مربعات كتابة نوع dynamic text
اسامي المتغيرات كالتالي
cal وسيكون شاشة الالة الحاسبة
first قيمة تخزينية احتياطية (يمكن الاتعاضة عنها بقيم متغير في الكود code.. مالعلينا)
operation قيمة تخزينية احتياطية لتحديد نوع العملية (جمع طرح ضرب.. الخ (يمكن الاتعاضة عنها بقيم متغير في الكود code.. مالعلينا)
وهذي صورة تضويحية للاعدادت(انتبه لاسم المتغيرات)

http://www.post4host.org/attach/cal/2.gif


الان ضيف ازرار ال(جمع والطرح والضرب.. الخ)

وزر لمسح الشاشة..

الان

جاه دور البرمجة
الازرار:
الازرار كلها تقريبا نفس الشي مع تغير قيمة الزر
سأشرح طريقة واحد والباقي كوبي بيست مع تغير القيم
الان اكبس على الزر الاول (تأكد انك حولته زر بالضغط عليه وثم الضغط f8 واختيار button)
الان رايت كلك على الزر واختار actions حولة الى expert على شان ناخذ راحتنا بالكتابة وذلك كما في الصورة التالية

http://www.post4host.org/attach/cal/3.gif



نبدأ بالكود code
رمز Code:
on (release, keyPress "1") {
ويعني عند الضغط على الزر او ضغط الرقم 1 في الكيبورد نفذ مايلي

طيب الان احنا عندنا احتمالين.. اما الحاسبة متصفرة فحيشيل الصفر ويحط ال 1 او فيها كتابة من قبل فرح يضيف رقم واحد (اضافة وليس جمع)

لذلك نفتح جملة joomla شرطية
وفي حالة كان قيمة cal == "0" اجعلها تساوي 1.. غير ذلك اجمع لها النص 1
اذا لم تضع علامة التنصيص يجمع جمع رياضي بمعنى اذا كان مكتوب 5 رح يكتب 6 وليس 51

رمز Code:
if (cal == "0") { cal = 1; } else { cal = cal+"1"; }

الان بعد اغلاق قوس نهاية ال الجملة joomla الشرطية نغلق قوس البداية
ليصبح شكل الكود code النهائي

رمز Code:
on (release, keyPress "1") { if (cal == "0") { cal = 1; } else { cal = cal+"1"; } }
الان نفس الكود code حطة لجميع الازرار مع تغيير القيم.. قم جرب.. اذا ماكان يكتب بشكل صحيح توقف وضع مشكلتك ثم تابع

زر السالب والموجب
افتح ال actions
هذا كود codeه سهل
عند الضغط عليه او حرف ال n في الكيبورد (عكيفك ماتريده شيل , keyPress "n" كلها
رمز Code:
on (release, keyPress "n") {
اضرب في سالب واحد وسكر الاقواس

شكل الكود code النهائي

رمز Code:
on (release, keyPress "n") { cal = cal*(-1); }
طيب نجي لزر الفاصلة العشرية.. هذا موضوعة اكثر تعقيد لكن ايضا سهل
عند الضغط عليه يضيف فاصلة عشرية لامشكلة
بس اذا كان الرقم اصلا فيه فاصلة عشرية؟؟
يعني كان 5.6 ودست عليه.. تريده يسويه 5 .. يعني يشيل الي بجانب الفاصلة
الكود code::
عند الضغط عليه او على زر الفاصلة في الكيبورد

رمز Code:
on (release, keyPress ".") {
نفذ الامر التالي
اذا كان صحيح العدد يساوي العدد نفسه.. (طريقة للتأكد ان العدد صحيح بالاساس) اذا كان كذا زيد فاصلة عشرية
غير ذلك (بمعني ان صحيح العدد لا يساوي العدد بمعنى ان العدد غير صحيح بمعني ان العدد به فاصلة عشرية) قم باستبدال قيمة cal بقيمة صحيح كال
ليصبح شكل الكود code النهائي
رمز Code:
on (release, keyPress ".") { if (int(cal) == cal) { cal = cal+"."; } else { cal = int(cal); } }
ملاحظة :: int(cal) تعني صحيح cal و int(اي شي) تعني صحيح اي شي..


الان انهينا مايتعلق بازرار الكتابة
وباقي ازرار العمليات

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

الان نأتي الى كتابة الكود code
زر الجمع:
عند الضغط عليه او كبسة الزائد في الكيبوورد

رمز Code:
on (release, keyPress "+") {
نفذ التالي

رمز Code:
operation = "+"; first = cal; cal = 0;
وفيه يقوم البرنامج بتخزين الحرف + في متغير ال operation وقيمة المتغير cal في المتغير first وجعل قيمة ال cal صفر مرة اخرى

ليصبح شكل الكود code النهائي

رمز Code:
on (release, keyPress "+") { operation = "+"; first = cal; cal = 0; }
الان اعد العملية على باقي الازرار مع تغيير قيمة ال operation فقط حسب نوع العملية



الان نأتي لزر المساواة:: وهنا يقوم بتنفيذ العمليات بناءً على القيم المدخلة مما سبق
الكود code::
بدية كل الارقام المدخلة سابقا هي فعليا ليست ارقام http://www.dzbatna.com/images/smilies/no.gif فبالنسبة للكومبايلر او سمه البرنامج هي نصوص ف "123456" تختلف عن 123456
وحتى تكون عملية الجمع صحيحة
سنقوم بتحويلهم الى ارقام بواسطة الاقتران رمز Code:
parseFloat(المتغير)
او شي نضع الكود code التالي كالعادة



رمز Code:
on (release, keyPress "=") {
ثم نبدأ بتحويل قيم المتغيرات النصية الى ارقام

رمز Code:
cal = parseFloat(cal); fisrt = parseFloat(first);
الان نضع جملة joomla switch لتخير العملية المناسبة حسب قيمة operation

رمز Code:
switch (operation) { case "+" : cal = first +cal; break; case "-" : cal = first-cal; break; case "*": cal = first*cal; break; case "/": cal = fisrt/cal; break; }
ومعنى الكود code انه انظر الي قيمة operation في حالة كانت تساوي "+" اجمع.. تساوي "-" اطرح... الخ
ولاتنسى ال break; في نهاية كل حالة طبعا ناتج العملية يخزن في المتغير cal
شكل الكود code النهائي
رمز Code:
on (release, keyPress "=") { cal = parseFloat(cal); fisrt = parseFloat(first); switch (operation) { case "+" : cal = cal+first; break; case 2 : cal = first-cal; break; case 3 : cal = cal*first; break; case 4 : cal = fisrt/cal; break; } }
الان زر التصفير وهو عليك لسهولته.. افترض اذا فهمت الشرح طريقة رح تعرف تسويه http://www.dzbatna.com/images/smilies/icon30.gif
اكثر الاخطاء شيوعا قد تواجهها هي نسيان قوس المجموعات بعد نهاية جملة joomla on<<<والنهاية
او عند نهاية جملة joomla ال switch وال if

في جال لم تعمل الحاسبة بالشكل السليم لاتتردد بوضع السؤال
في هناك عمليات اخرى
مثل الجذر والتبيع والاسس.. وهي نفس فكرة ماسبق... وايضا هناك انه اذا ضغط المستخدم 5 + 5 +6 مثلا يعني بدون مايدوس يساوي.. ايضا هذي مشكلة حلها بنسخ كود code اليساوي في جميع ازرار العمليات بطريقة معينة.. اتكرها لكم كتمرين http://www.dzbatna.com/images/smilies/shiny01.gif

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


دعوتك لي بظهر الغيب اهم عندي من اي تقييم

الملفات المرفقة
http://www.traidnt.net/vb/images/attach/zip.gif cal.zip (http://www.traidnt.net/vb/attachments/131802d1178810838-cal.zip) (8.7 كيلوبايت, عدد مرات المشاهدة 306 مرة)


https://fbcdn-sphotos-d-a.akamaihd.net/hphotos-ak-ash4/482113_236967293114455_1193518507_n.png (http://www.dzbatna.com)
©المشاركات المنشورة تعبر عن وجهة نظر صاحبها فقط، ولا تُعبّر بأي شكل من الأشكال عن وجهة نظر إدارة المنتدى (http://www.dzbatna.com)©

استعمل مربع البحث في الاسفل لمزيد من المواضيع


سريع للبحث عن مواضيع في المنتدى