Export topic as markdown

让我们看看。我将在此处包含一个包含大量代码的代码块,看看它在打印时是什么样子:

import java.util.Scanner;

/**
 * AceyDucey 游戏
 * <p>
 * 基于此处的 Basic AceyDucey 游戏
 * https://github.com/coding-horror/basic-computer-games/blob/main/01%20Acey%20Ducey/aceyducey.bas
 * 注意:目的是在 Java 中创建 1970 年代 Basic 游戏的版本,而不引入
 * 新功能 - 未添加额外的文本、错误检查等。
 */
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(A)为最高
    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);
    }

    // 重新开始方法 - 由调用游戏的类调用的公共方法
    // 如果玩家输入 YES,则游戏可以重新开始(返回 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  新泽西州莫里斯敦");
        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 版本:

将主题导出为 markdown - 功能 - Discourse Meta.pdf (249.9 KB)

我没有看到问题。如果您确实看到了问题,请指出 PDF 中的具体区域。谢谢!