[JAVA] [Progression de la production] Black Jack: 02

Ce progrès

C'est une continuation de Dernière fois.

C'est un peu plus. Les détails proviennent des éléments suivants.

Contenu

Expression d'une carte et calcul du score

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);

Expression de la main

--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);

Jugement de BJ ou Burst

--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;
		}

Voulez-vous frapper? Voulez-vous vous lever?

――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

à partir de maintenant

Après cela, je pense ajouter les actions du croupier.

À la fin

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.

Recommended Posts

[Progression de la production] Black Jack: 03
[Progression de la production] Black Jack: 01
[Progression de la production] Black Jack: 02
[Progression de la production] Black Jack: 04
Implémentation de "Black Jack".