토픽을 마크다운으로 내보내기

한번 살펴볼게요. 여기 코드 블록을 하나 포함해서, 인쇄본에서 어떻게 보이는지 확인해 보겠습니다:

import java.util.Scanner;

/**
 * AceyDucey 게임
 * <p>
 * 여기 있는 AceyDucey Basic 게임에 기반함
 * https://github.com/coding-horror/basic-computer-games/blob/main/01%20Acey%20Ducey/aceyducey.bas
 * 참고: 1970년대 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);
    }

    // 다시 플레이하는 메서드 - 게임을 호출하는 클래스에서 호출되는 공개 메서드
    // 플레이어가 YES를 입력하면 게임을 다시 플레이할 수 있음 (true 반환)
    // 그렇지 않으면 안 됨 (false)
    public boolean playAgain() {
        System.out.println();
        System.out.println("SORRY, FRIEND, BUT YOU BLEW YOUR WAD.");
        System.out.println();
        System.out.println();
        System.out.print("TRY AGAIN (YES OR NO) ");
        String playAgain = kbScanner.next().toUpperCase();
        System.out.println();
        System.out.println();
        if (playAgain.equals("YES")) {
            return true;
        } else {
            System.out.println("O.K., HOPE YOU HAD FUN!");
            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("YOU WIN!!");
                playerAmount += betAmount;
            } else {
                System.out.println("SORRY, YOU LOSE");
                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("WHAT IS YOUR BET ");
            amount = kbScanner.nextInt();
            if (amount == 0) {
                System.out.println("CHICKEN!!");
                validBet = true;
            } else if (amount > playerAmount) {
                System.out.println("SORRY, MY FRIEND, BUT YOU BET TOO MUCH.");
                System.out.println("YOU HAVE ONLY " + playerAmount + " DOLLARS TO BET.");
            } else {
                validBet = true;
            }
        } while (!validBet);

        return amount;
    }

    private void displayBalance() {
        System.out.println("YOU NOW HAVE " + playerAmount + " DOLLARS.");
    }

    private void displayCards() {
        System.out.println("HERE ARE YOUR NEXT TWO CARDS: ");
        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 CARD GAME");
        System.out.println("CREATIVE COMPUTING  MORRISTOWN, NEW JERSEY");
        System.out.println();
        System.out.println();
        System.out.println("ACEY-DUCEY IS PLAYED IN THE FOLLOWING MANNER");
        System.out.println("THE DEALER (COMPUTER) DEALS TWO CARDS FACE UP");
        System.out.println("YOU HAVE AN OPTION TO BET OR NOT BET DEPENDING");
        System.out.println("ON WHETHER OR NOT YOU FEEL THE CARD WILL HAVE");
        System.out.println("A VALUE BETWEEN THE FIRST TWO.");
        System.out.println("IF YOU DO NOT WANT TO BET, INPUT: 0");
    }
}

상당한 수준의 접근성 지원을 갖추고 있으므로, @thresholdpeople 님의 시각 장애 사용자가 구체적으로 어떤 부분이 작동하지 않는지 듣고 싶습니다.

또한, 위 코드 블록은 인쇄본에서 저에게는 정상적으로 보입니다. Chrome에서 "인쇄"를 누른 다음 "PDF로 저장"을 눌러 이 주제 자체의 PDF 버전을 생성해 보았습니다:

Export topic as markdown - feature - Discourse Meta.pdf (249.9 KB)

문제를 발견하지 못했습니다. 만약 문제를 보신다면, PDF에서 정확히 어떤 부분이 올바르지 않은지 지적해 주십시오. 감사합니다!