دعنا نرى. سأدرج كتلة تعليمات برمجية هنا مع قدر كبير من التعليمات البرمجية وأرى كيف ستبدو عند الطباعة:
import java.util.Scanner;
/**
* لعبة AceyDucey
* <p>
* بناءً على لعبة AceyDucey الأساسية هنا
* https://github.com/coding-horror/basic-computer-games/blob/main/01%20Acey%20Ducey/aceyducey.bas
* ملاحظة: كانت الفكرة هي إنشاء نسخة من لعبة Basic في السبعينيات بلغة Java، دون تقديم
* ميزات جديدة - لم تتم إضافة أي نصوص إضافية أو التحقق من الأخطاء، إلخ.
*/
public class AceyDucey {
// المبلغ الحالي لنقود اللاعب
private int playerAmount;
// أول بطاقة موزع تم سحبها
private Card firstCard;
// ثاني بطاقة موزع تم سحبها
private Card secondCard;
// بطاقة اللاعب المسحوبة
private Card playersCard;
// المستخدم لعرض مقدمة اللعبة/التعليمات
private boolean firstTimePlaying = true;
// حالة اللعبة لتحديد ما إذا كانت اللعبة قد انتهت
private boolean gameOver = false;
// يستخدم لإدخال لوحة المفاتيح
private final Scanner kbScanner;
// قيمة ثابتة للبطاقات من مجموعة أوراق اللعب - 2 الأدنى، 14 (الآس) الأعلى
public static final int LOW_CARD_RANGE = 2;
public static final int HIGH_CARD_RANGE = 14;
public AceyDucey() {
// تهيئة نقود اللاعب
playerAmount = 100;
// تهيئة ماسح لوحة المفاتيح
kbScanner = new Scanner(System.in);
}
// طريقة إعادة اللعب - طريقة عامة يتم استدعاؤها من الفئة التي تستدعي اللعبة
// إذا أدخل اللاعب "نعم" فيمكن إعادة تشغيل اللعبة (يتم إرجاع true)
// بخلاف ذلك لا (يتم إرجاع false)
public boolean playAgain() {
System.out.println();
System.out.println("آسف يا صديقي، لكنك أتلفت كل أموالك.");
System.out.println();
System.out.println();
System.out.print("هل تريد المحاولة مرة أخرى (نعم أم لا)؟ ");
String playAgain = kbScanner.next().toUpperCase();
System.out.println();
System.out.println();
if (playAgain.equals("YES")) {
return true;
} else {
System.out.println("حسناً، أتمنى أن تكون قد استمتعت!");
return false;
}
}
// طريقة حلقة اللعبة
public void play() {
// استمر في لعب الجولات حتى ينفد مال اللاعب
do {
if (firstTimePlaying) {
intro();
firstTimePlaying = false;
}
displayBalance();
drawCards();
displayCards();
int betAmount = getBet();
playersCard = randomCard();
displayPlayerCard();
if (playerWon()) {
System.out.println("لقد فزت!!");
playerAmount += betAmount;
} else {
System.out.println("آسف، لقد خسرت");
playerAmount -= betAmount;
// هل نفد مال اللاعب؟
if (playerAmount <= 0) {
gameOver = true;
}
}
} while (!gameOver); // استمر في اللعب حتى ينفد مال اللاعب
}
// طريقة لتحديد ما إذا كان اللاعب قد فاز (يتم إرجاع true) أو خسر (يتم إرجاع false)
// للفوز، يجب أن تكون بطاقة اللاعب ضمن نطاق بطاقتي الموزع الأولى والثانية
// بما في ذلك البطاقتين الأولى والثانية.
private boolean playerWon() {
// الفائز
return (playersCard.getValue() >= firstCard.getValue())
&& playersCard.getValue() <= secondCard.getValue();
}
private void displayPlayerCard() {
System.out.println(playersCard.getName());
}
// احصل على رهان اللاعب، وأرجع المبلغ
// 0 يعتبر رهانًا صالحًا، ولكن أكثر من المبلغ المتاح للاعب ليس كذلك
// ستتكرر الطريقة حتى يتم إدخال رهان صالح.
private int getBet() {
boolean validBet = false;
int amount;
do {
System.out.print("ما هو رهانك؟ ");
amount = kbScanner.nextInt();
if (amount == 0) {
System.out.println("جبان!!");
validBet = true;
} else if (amount > playerAmount) {
System.out.println("آسف يا صديقي، لكنك راهنت بالكثير.");
System.out.println("لديك فقط " + playerAmount + " دولار للمراهنة.");
} else {
validBet = true;
}
} while (!validBet);
return amount;
}
private void displayBalance() {
System.out.println("لديك الآن " + playerAmount + " دولار.");
}
private void displayCards() {
System.out.println("هذه هي بطاقتاك التاليتان: ");
System.out.println(firstCard.getName());
System.out.println(secondCard.getName());
}
// اسحب بطاقتي موزع، واحفظهما للاستخدام لاحقًا.
// تأكد من أن البطاقة الأولى هي بطاقة ذات قيمة أقل من الثانية
private void drawCards() {
do {
firstCard = randomCard();
secondCard = randomCard();
} while (firstCard.getValue() >= secondCard.getValue());
}
// ينشئ بطاقة عشوائية
private Card randomCard() {
return new Card((int) (Math.random()
* (HIGH_CARD_RANGE - LOW_CARD_RANGE + 1) + LOW_CARD_RANGE));
}
public void intro() {
System.out.println("لعبة بطاقات ACEY DUCEY");
System.out.println("CREATIVE COMPUTING MORRISTOWN, NEW JERSEY");
System.out.println();
System.out.println();
System.out.println("تُلعب ACEY-DUCEY بالطريقة التالية");
System.out.println("يقوم الموزع (الكمبيوتر) بتوزيع بطاقتين مكشوفتين");
System.out.println("لديك خيار المراهنة أو عدم المراهنة اعتمادًا");
System.out.println("على ما إذا كنت تعتقد أن البطاقة ستكون لها");
System.out.println("قيمة بين البطاقتين الأوليين.");
System.out.println("إذا كنت لا ترغب في المراهنة، أدخل: 0");
}
}
لاحظ أن لدينا دعمًا كاملاً تقريبًا لإمكانية الوصول، لذا سأكون مهتمًا بمعرفة ما لا يعمل تحديدًا لمستخدمك الأعمى @thresholdpeople.
أيضًا، تبدو كتلة التعليمات البرمجية أعلاه جيدة في النسخة المطبوعة بالنسبة لي. لقد ضغطت للتو على “طباعة” في Chrome ثم “حفظ باسم PDF” لإنشاء نسخة PDF من هذا الموضوع نفسه:
Export topic as markdown - feature - Discourse Meta.pdf (249.9 KB)
أنا لا أرى مشكلة. يرجى الإشارة إلى مناطق محددة في ملف PDF غير صحيحة إذا كنت ترى مشكلة. شكرًا!