Export topic as markdown

Veamos. Incluiré un bloque de código aquí con una buena cantidad de código y veré cómo se ve impreso:

import java.util.Scanner;

/**
 * Juego de AceyDucey
 * <p>
 * Basado en el juego básico de AceyDucey aquí
 * https://github.com/coding-horror/basic-computer-games/blob/main/01%20Acey%20Ducey/aceyducey.bas
 * Nota: La idea era crear una versión del juego Basic de los años 70 en Java, sin introducir
 * nuevas características - no se ha añadido texto adicional, comprobación de errores, etc.
 */
public class AceyDucey {

    // Cantidad actual de dinero del jugador
    private int playerAmount;

    // Primera carta repartida por el crupier
    private Card firstCard;

    // Segunda carta repartida por el crupier
    private Card secondCard;

    // Carta repartida al jugador
    private Card playersCard;

    // Se usa para mostrar la introducción/instrucciones del juego
    private boolean firstTimePlaying = true;

    // Estado del juego para determinar si ha terminado
    private boolean gameOver = false;

    // Se usa para la entrada del teclado
    private final Scanner kbScanner;

    // Valor constante para las cartas de una baraja - 2 la más baja, 14 (As) la más alta
    public static final int LOW_CARD_RANGE = 2;
    public static final int HIGH_CARD_RANGE = 14;

    public AceyDucey() {
        // Inicializar el dinero del jugador
        playerAmount = 100;

        // Inicializar el escáner del teclado
        kbScanner = new Scanner(System.in);
    }

    // Método para jugar de nuevo - método público llamado desde la clase que invoca el juego
    // Si el jugador introduce SÍ, el juego se puede volver a jugar (devuelve verdadero)
    // de lo contrario no (falso)
    public boolean playAgain() {
        System.out.println();
        System.out.println("LO SIENTO, AMIGO, PERO TE HAS QUEDADO SIN DINERO.");
        System.out.println();
        System.out.println();
        System.out.print("¿QUIERES JUGAR OTRA VEZ (SÍ O NO)? ");
        String playAgain = kbScanner.next().toUpperCase();
        System.out.println();
        System.out.println();
        if (playAgain.equals("SÍ")) {
            return true;
        } else {
            System.out.println("¡DE ACUERDO, ESPERO QUE TE HAYAS DIVERTIDO!");
            return false;
        }
    }

    // método del bucle del juego

    public void play() {

        // Seguir jugando manos hasta que el jugador se quede sin dinero
        do {
            if (firstTimePlaying) {
                intro();
                firstTimePlaying = false;
            }
            displayBalance();
            drawCards();
            displayCards();
            int betAmount = getBet();
            playersCard = randomCard();
            displayPlayerCard();
            if (playerWon()) {
                System.out.println("¡HAS GANADO!!");
                playerAmount += betAmount;
            } else {
                System.out.println("LO SIENTO, HAS PERDIDO");
                playerAmount -= betAmount;
                // ¿Se ha quedado el jugador sin dinero?
                if (playerAmount <= 0) {
                    gameOver = true;
                }
            }

        } while (!gameOver); // Seguir jugando hasta que el jugador se quede sin dinero
    }

    // Método para determinar si el jugador ganó (devuelve verdadero) o perdió (devuelve falso)
    // para ganar, la carta del jugador debe estar en el rango de la primera y la segunda carta del crupier
    // repartidas, incluidas la primera y la segunda carta.
    private boolean playerWon() {
        // ganador
        return (playersCard.getValue() >= firstCard.getValue())
                && playersCard.getValue() <= secondCard.getValue();

    }

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

    // Obtener la apuesta del jugador y devolver la cantidad
    // 0 se considera una apuesta válida, pero más de lo que el jugador tiene disponible no lo es
    // el método se repetirá hasta que se introduzca una apuesta válida.
    private int getBet() {
        boolean validBet = false;
        int amount;
        do {
            System.out.print("¿CUÁL ES TU APUESTA? ");
            amount = kbScanner.nextInt();
            if (amount == 0) {
                System.out.println("¡GALLINA!");
                validBet = true;
            } else if (amount > playerAmount) {
                System.out.println("LO SIENTO, AMIGO, PERO HAS APOSTADO DEMASIADO.");
                System.out.println("SOLO TIENES " + playerAmount + " DÓLARES PARA APOSTAR.");
            } else {
                validBet = true;
            }
        } while (!validBet);

        return amount;
    }

    private void displayBalance() {
        System.out.println("AHORA TIENES " + playerAmount + " DÓLARES.");
    }

    private void displayCards() {
        System.out.println("AQUÍ ESTÁN TUS DOS PRÓXIMAS CARTAS: ");
        System.out.println(firstCard.getName());
        System.out.println(secondCard.getName());
    }

    // Repartir dos cartas del crupier y guardarlas para su uso posterior.
    // asegurarse de que la primera carta tenga un valor menor que la segunda
    private void drawCards() {

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

    // Crea una carta aleatoria
    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("JUEGO DE CARTAS ACEY DUCEY");
        System.out.println("CREATIVE COMPUTING  MORRISTOWN, NEW JERSEY");
        System.out.println();
        System.out.println();
        System.out.println("ACEY-DUCEY SE JUEGA DE LA SIGUIENTE MANERA");
        System.out.println("EL CRUPIER (ORDENADOR) REPARTE DOS CARTAS BOCA ARRIBA");
        System.out.println("TIENES LA OPCIÓN DE APOSTAR O NO APOSTAR DEPENDIENDO");
        System.out.println("DE SI SIENTES QUE LA CARTA TENDRÁ");
        System.out.println("UN VALOR ENTRE LAS DOS PRIMERAS.");
        System.out.println("SI NO QUIERES APOSTAR, INTRODUCE: 0");
    }
}

Tenga en cuenta que tenemos un soporte de accesibilidad bastante completo, por lo que me interesaría saber específicamente qué no funciona para su usuario ciego @thresholdpeople .

Además, el bloque de código anterior me parece bien en la versión impresa. Simplemente presioné “imprimir” en Chrome y luego “guardar como PDF” para generar una versión en PDF de este mismo tema:

Exportar tema como markdown - característica - Discourse Meta.pdf (249.9 KB)

No veo ningún problema. Por favor, señale áreas específicas del PDF que no sean correctas si ve algún problema. ¡Gracias!