C'est une continuation de Dernière fois.
C'est un peu plus. Les détails proviennent des éléments suivants.
Jusqu'à la dernière fois, compte tenu du calcul du score, il était exprimé dans l'arrangement ["diamant", "A"], ["diamant", "2"] ... ["trèfle", "K"]. .. Par conséquent, j'ai décidé d'utiliser HasMap pour calculer le score. En utilisant la carte comme clé de l'arrangement associatif, une carte a été remplacée par les chaînes de caractères "Diamant A" et "Diamant 2". J'ai décidé de créer les factures du tableau de pont et les points du tableau associatif de calcul de score avec l'instruction For. J'ai utilisé Collection.shuffle pour mélanger et randomiser le deck au début du jeu.
BlackJack_main.java
//Liste des ponts
List<String> bills = new ArrayList<String>();
//Hash map pour le calcul du score
HashMap<String, Integer> points = new HashMap<String, Integer>();
//Tableau de génération de cartes
String[] strMark={"diamant","cœur","bêche","Trèfle"};
String[] strNumber={"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
//Créez une carte avec l'instruction For et ajoutez-la à la liste de deck
//Ajouter des cartes et des points à hashmap
for (int i=0;i<strMark.length;i++){
for (int j=0;j<strNumber.length;j++){
String card = strMark[i]+"de"+strNumber[j];
bills.add(card);
if(j>9) {
points.put(card, 10);
}else {
points.put(card, j+1);
}
}
}
//Mélange de deck
Collections.shuffle(bills);
--Exprimez les cartes de votre main sous forme de tableau en utilisant ArrayList
Lorsque je dessine une carte, je la retire une par une des factures, alors j'ai utilisé ArrayList pour stocker les cartes tirées dans une liste appelée handCard. J'ai utilisé des listes au lieu de tableaux car je ne sais pas combien de cartes je vais tirer. Nous avons également défini une variable cardPoitns de type int pour calculer le score à partir des points en utilisant les cartes de la main et le garder en commun. Les deux définissent également une liste / variable avec "_dealer" ajouté comme un revendeur.
BlackJack_main.java
//Commencer le jeu
//La main du joueur
ArrayList<String> handCard =new ArrayList<String>();
handCard.add(bills.get(0));
System.out.println("Votre première carte est["+handCard.get(0)+"]est");
int cardPoints = points.get(bills.get(0));
bills.remove(0);
handCard.add(bills.get(0));
System.out.println("Votre deuxième carte est["+handCard.get(1)+"]est");
cardPoints += points.get(bills.get(0));
bills.remove(0);
System.out.println("Votre main est"+handCard+"est");
System.out.println("Ton score est"+cardPoints+"Est un point");
//La main du concessionnaire
ArrayList<String> handCard_dealer = new ArrayList<String>();
handCard_dealer.add(bills.get(0));
System.out.println("La première carte du croupier est["+handCard_dealer.get(0)+"]est");
int cardPoints_dealer = points.get(bills.get(0));
bills.remove(0);
handCard_dealer.add(bills.get(0));
System.out.println("Je ne connais pas la deuxième carte du croupier");
cardPoints_dealer += points.get(bills.get(0));
bills.remove(0);
--Créez une classe JUDGE pour faire référence aux cardPoints et déterminer si BJ ou Burst
Je veux juger si c'est BJ ou Burst à chaque fois que le joueur et le croupier tirent une carte, j'ai donc créé une classe JUDGE et l'ai rendue disponible comme méthode. De plus, nous avons défini une variable globale result dans la classe JUDGE afin que le jeu puisse se terminer sous condition.
JUDGE.java
public class JUDGE {
public static String result = "";
public static void judge(int cardPoints,int cardPoints_dealer) {
if(cardPoints>=22) {
System.out.println("----Burst!!!----");
System.out.println("----Tu as perdu----");
result="lose";
} else if(cardPoints==21){
System.out.println("☆★☆★☆★☆★BLACKJACK!!!☆★☆★☆★☆★");
System.out.println("----Est ta victoire----");
result="win";
} else if(cardPoints_dealer>=22) {
System.out.println("----DEALER'S Burst!!!----");
System.out.println("Le score du croupier est"+cardPoints_dealer+"Parce que c'est un point, ça éclate");
System.out.println("----Vous gagnez----");
result="win";
} else if(cardPoints_dealer==21){
System.out.println("☆★☆★☆★☆★DEALER'S BLACKJACK!!!☆★☆★☆★☆★");
System.out.println("----Tu as perdu----");
result="lose";
}
} //juge méthode fermeture
} //serrage de classe
BlackJack_main.java
//Traitement BlackJack ou Burst
JUDGE.judge(cardPoints,cardPoints_dealer);
if(JUDGE.result!="") {
return;
}
――Une fois les deux mains terminées, le joueur choisit de frapper ou de se tenir debout. -Même lorsque vous piochez une carte, il juge si c'est BJ ou Burst
À partir de là, c'est la partie où le joueur choisit réellement l'action. Choisissez entre Hit (tirer une carte) ou Stand (passer le tour au croupier sans tirer de carte) en fonction de votre score. Lorsque Hit est sélectionné, une carte est retirée des factures, une carte à main est ajoutée et le score de la carte tirée est également ajouté aux cardPoints. Après cela, le jugement est également rendu en utilisant la méthode du juge ci-dessus. Enfin, la sélection d'action et le comportement Hit sont mis en boucle dans l'instruction While.
BlackJack_main.java
//Hit?Stand?
Scanner scanner = new Scanner(System.in);
int PlayerRoop = 0;
while(PlayerRoop==0) {
int choice_roop =0;
String choicePlay ="";
while (choice_roop==0) {
System.out.print("Voulez-vous frapper? Voulez-vous vous lever?(H/S?)>");
String choice = scanner.next();
if (choice.contains("H") || choice.contains("h")) {
System.out.println("J'ai choisi Hit");
choice_roop+=1;
choicePlay="Hit";
}else if(choice.contains("S") || choice.contains("s")){
System.out.println("J'ai choisi Stand");
choice_roop+=1;
choicePlay="Stand";
}else {
System.out.println("Veuillez sélectionner Hit ou Stand");
}
} //pendant la fermeture de la phrase
//Résultat de la sélection d'action
if (choicePlay.contains("Hit")) {
handCard.add(bills.get(0));
System.out.println("La carte que tu as dessinée["+handCard.get(handCard.size()-1)+"]est");
cardPoints += points.get(handCard.get(handCard.size()-1));
bills.remove(0);
System.out.println("Le score actuel est"+cardPoints+"Est un point");
System.out.println("Votre main est"+handCard+"est");
JUDGE.judge(cardPoints,cardPoints_dealer);
if(JUDGE.result != "") {
return;
}
}else {
System.out.println("Passez au tour du concessionnaire");
PlayerRoop+=1;
} //if clôture de l'instruction
} //pendant la fermeture de la phrase
Après cela, je pense ajouter les actions du croupier.
Le code est devenu assez long, mais je me sens soulagé lorsque la fin est visible. Cette fois, il y a eu trop de mises à jour et c'était assez long, mais j'aimerais avoir des conseils.