Export topic as markdown

Vamos ver. Incluirei um bloco de código aqui com bastante código e verei como ele fica impresso:

import java.util.Scanner;

/**
 * Jogo de AceyDucey
 * <p>
 * Baseado no jogo básico de AceyDucey aqui
 * https://github.com/coding-horror/basic-computer-games/blob/main/01%20Acey%20Ducey/aceyducey.bas
 * Nota: A ideia era criar uma versão do jogo Basic dos anos 1970 em Java, sem introduzir
 * novos recursos - nenhum texto adicional, verificação de erros, etc. foi adicionado.
 */
public class AceyDucey {

    // Quantidade atual de dinheiro do jogador
    private int playerAmount;

    // Primeira carta do dealer sorteada
    private Card firstCard;

    // Segunda carta do dealer sorteada
    private Card secondCard;

    // Carta sorteada do jogador
    private Card playersCard;

    // Usado para exibir introdução/instruções do jogo
    private boolean firstTimePlaying = true;

    // estado do jogo para determinar se o jogo acabou
    private boolean gameOver = false;

    // Usado para entrada do teclado
    private final Scanner kbScanner;

    // Valor constante para cartas de um baralho - 2 mais baixo, 14 (Ás) mais alto
    public static final int LOW_CARD_RANGE = 2;
    public static final int HIGH_CARD_RANGE = 14;

    public AceyDucey() {
        // Inicializa o dinheiro do jogador
        playerAmount = 100;

        // Inicializa o scanner do teclado
        kbScanner = new Scanner(System.in);
    }

    // Método para jogar novamente - método público chamado da classe que invoca o jogo
    // Se o jogador digitar SIM, o jogo pode ser jogado novamente (retorna true)
    // caso contrário, não (retorna false)
    public boolean playAgain() {
        System.out.println();
        System.out.println("DESCULPE, AMIGO, MAS VOCÊ GASTOU TODO O SEU DINHEIRO.");
        System.out.println();
        System.out.println();
        System.out.print("TENTAR NOVAMENTE (SIM OU NÃO) ");
        String playAgain = kbScanner.next().toUpperCase();
        System.out.println();
        System.out.println();
        if (playAgain.equals("SIM")) {
            return true;
        } else {
            System.out.println("OK, ESPERO QUE TENHA SE DIVERTIDO!");
            return false;
        }
    }

    // método do loop do jogo

    public void play() {

        // Continua jogando mãos até o jogador ficar sem dinheiro
        do {
            if (firstTimePlaying) {
                intro();
                firstTimePlaying = false;
            }
            displayBalance();
            drawCards();
            displayCards();
            int betAmount = getBet();
            playersCard = randomCard();
            displayPlayerCard();
            if (playerWon()) {
                System.out.println("VOCÊ GANHOU!!");
                playerAmount += betAmount;
            } else {
                System.out.println("DESCULPE, VOCÊ PERDEU");
                playerAmount -= betAmount;
                // Jogador ficou sem dinheiro?
                if (playerAmount <= 0) {
                    gameOver = true;
                }
            }

        } while (!gameOver); // Continua jogando até o jogador ficar sem dinheiro
    }

    // Método para determinar se o jogador ganhou (retorna true) ou perdeu (retorna false)
    // para ganhar, a carta do jogador deve estar no intervalo da primeira e segunda carta do dealer
    // incluindo a primeira e a segunda carta.
    private boolean playerWon() {
        // vencedor
        return (playersCard.getValue() >= firstCard.getValue())
                && playersCard.getValue() <= secondCard.getValue();

    }

    private void displayPlayerCard() {
        System.out.println(playersCard.getName());
    }

    // Obtém a aposta do jogador e retorna o valor
    // 0 é considerado uma aposta válida, mas mais do que o jogador tem disponível não é
    // o método irá repetir até que uma aposta válida seja inserida.
    private int getBet() {
        boolean validBet = false;
        int amount;
        do {
            System.out.print("QUAL É A SUA APOSTA ");
            amount = kbScanner.nextInt();
            if (amount == 0) {
                System.out.println("MEDROSO!!");
                validBet = true;
            } else if (amount > playerAmount) {
                System.out.println("DESCULPE, MEU AMIGO, MAS VOCÊ APOSTOU DEMAIS.");
                System.out.println("VOCÊ TEM APENAS " + playerAmount + " DÓLARES PARA APOSTAR.");
            } else {
                validBet = true;
            }
        } while (!validBet);

        return amount;
    }

    private void displayBalance() {
        System.out.println("VOCÊ AGORA TEM " + playerAmount + " DÓLARES.");
    }

    private void displayCards() {
        System.out.println("AQUI ESTÃO SUAS PRÓXIMAS DUAS CARTAS: ");
        System.out.println(firstCard.getName());
        System.out.println(secondCard.getName());
    }

    // Sorteia duas cartas do dealer e as salva para uso posterior.
    // garante que a primeira carta tenha um valor menor que a segunda
    private void drawCards() {

        do {
            firstCard = randomCard();
            secondCard = randomCard();
        } while (firstCard.getValue() >= secondCard.getValue());
    }

    // Cria uma carta aleatória
    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("JOGO DE CARTAS ACEY DUCEY");
        System.out.println("CREATIVE COMPUTING  MORRISTOWN, NEW JERSEY");
        System.out.println();
        System.out.println();
        System.out.println("ACEY-DUCEY É JOGADO DA SEGUINTE MANEIRA");
        System.out.println("O DEALER (COMPUTADOR) DISTRIBUI DUAS CARTAS VIRADAS PARA CIMA");
        System.out.println("VOCÊ TEM A OPÇÃO DE APOSTAR OU NÃO APOSTAR DEPENDENDO");
        System.out.println("SE A CARTA TERÁ OU NÃO");
        System.out.println("UM VALOR ENTRE AS DUAS PRIMEIRAS.");
        System.out.println("SE VOCÊ NÃO QUISER APOSTAR, INSIRA: 0");
    }
}

Note que temos suporte de acessibilidade bastante completo, então eu estaria interessado em saber especificamente o que não está funcionando para seu usuário cego @thresholdpeople.

Além disso, o bloco de código acima parece bom na versão impressa para mim. Acabei de pressionar “imprimir” no Chrome e depois “salvar como PDF” para gerar uma versão em PDF deste tópico:

Export topic as markdown - feature - Discourse Meta.pdf (249,9 KB)

Não estou vendo um problema. Por favor, aponte áreas específicas no PDF que não estão corretas, se você vir um problema. Obrigado!