البرمجة

تحسين برنامج السعر الصحيح في لغة Java: اضف ميزة اختيار الفائز بشكل فعال

في برنامج “السعر الصحيح” الخاص بك، يظهر أن لديك قاعدة تحديد الفائز هي اللاعب الذي قدم أعلى عرض ولكن يكون الاقتراح الخاص به أقرب قيمة إلى قيمة العنصر بدون تجاوزها. لإضافة هذه الخطوة إلى برنامجك، يمكنك تنفيذ الخطوات التالية:

  1. إنشاء دالة جديدة تقوم بحساب الاختلاف بين قيمة المزايدة وسعر العنصر.
  2. حدد الفائز باستناد إلى هذا الاختلاف وتحقق مما إذا كان الاقتراح قريبًا جدًا دون تجاوز القيمة الفعلية للعنصر.
  3. قم بتحديد الفائز الذي يحقق أقل فارق بين قيمة اقتراحه وسعر العنصر دون تجاوزه.

لتحقيق ذلك، يمكنك إجراء التعديلات التالية في برنامجك:

java
public class PriceisRight { // الكود الحالي public PriceisRight() { // الكود الحالي while (again == 'Y' || again == 'y') { String THING = item(); System.out.println("The item to bid on is a "+ THING +"."); System.out.println("The contestant who is the closest without going"); System.out.println("over wins. The maximum bid is $1000.\n"); int bid1 = IBIO.inputInt(name1 +", what is your bid? "); int bid2 = IBIO.inputInt(name2 +", what is your bid? "); int bid3 = IBIO.inputInt(name3 +", what is your bid? "); int bid4 = IBIO.inputInt(name4 +", what is your bid? "); determineWinner(name1, bid1, THING); determineWinner(name2, bid2, THING); determineWinner(name3, bid3, THING); determineWinner(name4, bid4, THING); again = IBIO.inputChar("Play again? (y/n) "); System.out.println(""); } } // دالة لتحديد الفائز private void determineWinner(String name, int bid, String item) { int itemPrice = getItemPrice(item); int difference = Math.abs(bid - itemPrice); if (bid <= 1000 && (winner == null || difference < winnerDifference)) { winner = name; winnerDifference = difference; } } // دالة للحصول على سعر العنصر private int getItemPrice(String item) { switch(item) { case "sofa": return 987; case "TV": return 560; case "bed": return 226; case "table": return 354; case "chair": return 70; default: return 0; } } }

قمت بإضافة دالة determineWinner لتحديد الفائز باستناد إلى الاختلاف بين المزايدة وسعر العنصر. وأيضاً، قمت بإضافة دالة getItemPrice للحصول على سعر العنصر بناءً على اسمه.

المزيد من المعلومات

بالطبع، دعنا نوسع على الأكواد التي تمت إضافتها ونشرح المزيد من المعلومات بشكل شامل:

  1. دالة determineWinner:

    • تقوم الدالة بتحديد الفائز باستناد إلى الاختلاف بين المزايدة وسعر العنصر.
    • يتم تمرير اسم اللاعب (name) وقيمة المزايدة (bid) واسم العنصر (item) إلى الدالة.
    • تقوم الدالة بحساب فارق المزايدة بين قيمة المزايدة وسعر العنصر.
    • إذا كانت المزايدة صالحة (أقل من أو تساوي 1000) وإذا كان لا يوجد فائز حاليًا أو إذا كان الفارق أقل من الفارق الحالي، يتم تحديد اللاعب كفائز وتحديث الفارق.
  2. دالة getItemPrice:

    • تقوم الدالة بإرجاع سعر العنصر بناءً على اسم العنصر.
    • يتم استخدام تعبير switch لتحديد العنصر وإرجاع قيمته المقابلة.
  3. متغيرات الفوز:

    • قمت بإضافة متغيرات لتتبع اللاعب الفائز والفارق الحالي.
    • winner تحتفظ باسم الفائز.
    • winnerDifference تحتفظ بالفارق بين مزايدته وسعر العنصر.

بهذا التعديل، يتم الآن تتبع الفائز في كل جولة من اللعب، وسيتم تحديد اللاعب الذي قدم المزايدة الأقرب دون تجاوز القيمة الفعلية للعنصر كفائز.

زر الذهاب إلى الأعلى