Vediamo. Includerò un blocco di codice qui con un bel po’ di codice e vedrò come appare stampato:
import java.util.Scanner;
/**
* Gioco di AceyDucey
*
* Basato sul gioco base di AceyDucey qui
* https://github.com/coding-horror/basic-computer-games/blob/main/01%20Acey%20Ducey/aceyducey.bas
* Nota: L'idea era di creare una versione del gioco Basic degli anni '70 in Java, senza introdurre
* nuove funzionalità - non sono stati aggiunti testi aggiuntivi, controlli degli errori, ecc.
*/
public class AceyDucey {
// Importo attuale in contanti del giocatore
private int playerAmount;
// Prima carta del mazziere pescata
private Card firstCard;
// Seconda carta del mazziere pescata
private Card secondCard;
// Carta pescata dal giocatore
private Card playersCard;
// Utente per visualizzare l'introduzione/istruzioni del gioco
private boolean firstTimePlaying = true;
// Stato del gioco per determinare se il gioco è finito
private boolean gameOver = false;
// Usato per l'input da tastiera
private final Scanner kbScanner;
// Valore costante per le carte da un mazzo - 2 il più basso, 14 (Asso) il più alto
public static final int LOW_CARD_RANGE = 2;
public static final int HIGH_CARD_RANGE = 14;
public AceyDucey() {
// Inizializza i contanti del giocatore
playerAmount = 100;
// Inizializza lo scanner da tastiera
kbScanner = new Scanner(System.in);
}
// Metodo per giocare di nuovo - metodo pubblico chiamato dalla classe che invoca il gioco
// Se il giocatore inserisce SÌ, il gioco può essere giocato di nuovo (restituisce true)
// altrimenti no (false)
public boolean playAgain() {
System.out.println();
System.out.println("MI DISPIACE, AMICO, MA HAI FINITO I TUOI SOLDI.");
System.out.println();
System.out.println();
System.out.print("RIPROVI (SÌ O NO) ");
String playAgain = kbScanner.next().toUpperCase();
System.out.println();
System.out.println();
if (playAgain.equals("SÌ")) {
return true;
} else {
System.out.println("OK, SPERO CHE TI SIA DIVERTITO!");
return false;
}
}
// Metodo del ciclo di gioco
public void play() {
// Continua a giocare mani finché il giocatore non finisce i contanti
do {
if (firstTimePlaying) {
intro();
firstTimePlaying = false;
}
displayBalance();
drawCards();
displayCards();
int betAmount = getBet();
playersCard = randomCard();
displayPlayerCard();
if (playerWon()) {
System.out.println("HAI VINTO!!");
playerAmount += betAmount;
} else {
System.out.println("MI DISPIACE, HAI PERSO");
playerAmount -= betAmount;
// Il giocatore ha finito i soldi?
if (playerAmount <= 0) {
gameOver = true;
}
}
} while (!gameOver); // Continua a giocare finché il giocatore non finisce i contanti
}
// Metodo per determinare se il giocatore ha vinto (restituisce true) o perso (restituisce false)
// per vincere una carta del giocatore deve essere nell'intervallo della prima e della seconda carta del mazziere
// pescate comprese le prime e le seconde carte.
private boolean playerWon() {
// vincitore
return (playersCard.getValue() >= firstCard.getValue())
&& playersCard.getValue() <= secondCard.getValue();
}
private void displayPlayerCard() {
System.out.println(playersCard.getName());
}
// Ottiene la puntata del giocatore e restituisce l'importo
// 0 è considerato una puntata valida, ma meglio più di quanto il giocatore abbia a disposizione non lo è
// il metodo si ripeterà finché non verrà inserita una puntata valida.
private int getBet() {
boolean validBet = false;
int amount;
do {
System.out.print("QUAL È LA TUA PUNTATA ");
amount = kbScanner.nextInt();
if (amount == 0) {
System.out.println("POLLICINO!!");
validBet = true;
} else if (amount > playerAmount) {
System.out.println("MI DISPIACE, AMICO MIO, MA HAI PUNTATO TROPPO.");
System.out.println("HAI SOLO " + playerAmount + " DOLLARI DA PUNTALE.");
} else {
validBet = true;
}
} while (!validBet);
return amount;
}
private void displayBalance() {
System.out.println("ORA HAI " + playerAmount + " DOLLARI.");
}
private void displayCards() {
System.out.println("ECCO LE TUE PROSSIME DUE CARTE: ");
System.out.println(firstCard.getName());
System.out.println(secondCard.getName());
}
// Pesca due carte del mazziere e le salva per un uso successivo.
// assicurati che la prima carta abbia un valore inferiore alla seconda
private void drawCards() {
do {
firstCard = randomCard();
secondCard = randomCard();
} while (firstCard.getValue() >= secondCard.getValue());
}
// Crea una carta casuale
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("GIOCO DI CARTE ACEY DUCEY");
System.out.println("CREATIVE COMPUTING MORRISTOWN, NEW JERSEY");
System.out.println();
System.out.println();
System.out.println("ACEY-DUCEY SI GIOCA NEL SEGUENTE MODO");
System.out.println("IL MAZZIERE (COMPUTER) DISTRIBUISCE DUE CARTE A FACCIA IN SU");
System.out.println("HAI LA POSSIBILITÀ DI PUNTALE O NON PUNTALE A SECONDA");
System.out.println("CHE TU PENSI CHE LA CARTA AVRÀ");
System.out.println("UN VALORE COMPRESO TRA LE PRIME DUE.");
System.out.println("SE NON VUOI PUNTALE, INSERISCI: 0");
}
}
Nota che abbiamo un supporto di accessibilità abbastanza completo, quindi sarei interessato a sapere specificamente cosa non funziona per il tuo utente non vedente @thresholdpeople .
Inoltre, il blocco di codice sopra mi sembra a posto nella versione stampata. Ho appena premuto “stampa” in Chrome, quindi “salva come PDF” per generare una versione PDF di questo argomento:
Esporta argomento come markdown - funzionalità - Discourse Meta.pdf (249,9 KB)
Non vedo un problema. Per favore, indica le aree specifiche nel PDF che non sono corrette se vedi un problema. Grazie!