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!