add start game
import java.util.Random; import java.util.Scanner;
public class Durak { public enum Player { HUMAN("Человек"), COMPUTER("Компьютер");
final String value;
Player(String value) {
this.value = value;
}
}
public enum CardSuit {
HEARTS("Червы"),//Червы
DIAMONDS("Бубны"),//Бубны
CLUBS("Трефы"),//Трефы
SPADES("Пики");//Пики
final String suit;
CardSuit(String suit) {
this.suit = suit;
}
}
public enum CardRank {
SIX("6"),
SEVEN("7"),
EIGHT("8"),
NINE("9"),
TEN("10"),
JACK("Валет"),
QUEEN("Дама"),
KING("Король"),
ACE("Туз");
final String rank;
CardRank(String rank) {
this.rank = rank;
}
}
public enum GameState {
START("Начало"),//начало
IN_PROGRESS("В процессе"),//время игры
FINISHED("Конец");//конец
final String state;
GameState(String state) {
this.state = state;
}
}
public static void main(String[] args) {
String greetingMessage = """
"Дурак" — карточная игра для двоих игроков, в которой цель — избавиться от всех своих
"карт. Игроки по очереди делают ходы, используя карты из своей руки. Игра продолжается
"до тех пор, пока один из игроков не останется с картами.
""";
System.out.println(greetingMessage);
int cardsPlayer = 6;
GameState globalState = GameState.START;
int allCards = CardSuit.values().length * CardRank.values().length;
String[] totalDeck = new String[allCards];//иницилизация колоды
int index = 0;
for (CardRank rank : CardRank.values()) {
for (CardSuit suit : CardSuit.values()) {
totalDeck[index++] = rank.rank + " " + suit.suit;
}
}
//перетасовка колоды
for (int k = 0; k < allCards; k++) {
int r = k + (int) (Math.random() * (allCards - k)); // случайная карта в колоде
String temp = totalDeck[r];
totalDeck[r] = totalDeck[k];
totalDeck[k] = temp;
}
// раздача карт игроку и компьютеру
String[] playerDeck = new String[cardsPlayer];
String[] compDeck = new String[cardsPlayer];
for (int i = 0; i < cardsPlayer; i++) {
playerDeck[i] = totalDeck[i];
compDeck[i] = totalDeck[cardsPlayer + i];
totalDeck[i] = null;
totalDeck[cardsPlayer + i] = null;
}
// определение того, кто ходит первый
Random random = new Random();
CardSuit trumpSuit = CardSuit.values()[random.nextInt(CardSuit.values().length)]; // Случайный козырь
System.out.println("Козырь: " + trumpSuit.suit);
boolean isPlayerFirst = random.nextBoolean();
System.out.println("Первый ходит игрок " + (isPlayerFirst ? Player.HUMAN : Player.COMPUTER));
System.out.println();
// вывод карт игрока
System.out.println("Ваши карты:");
for (int i = 0; i < cardsPlayer; i++) {
System.out.print(playerDeck[i] + ", ");
}
GameState gameStatus = GameState.IN_PROGRESS;
while (gameStatus == GameState.IN_PROGRESS) {
//ход игрока
if (isPlayerFirst) {
Scanner scanner = new Scanner(System.in);
System.out.print("Введите название карты из вашей колоды,чтобы сделать ход: ");
String cardIndex = scanner.nextLine();
boolean foundCard = false;
for (int i = 0; i < cardsPlayer; i++) {
if (playerDeck[i] != null && playerDeck[i].equalsIgnoreCase(cardIndex.trim())) {
playerDeck[i] = null;
foundCard = true;
isPlayerFirst = false;//переход
break;
}
}if (!foundCard){
System.out.println("Нет такой карты");
}
// в конце проверяем, у кого колода пустая - тот и победитель
} else {//отбив от пк
if (lastDiscardedCard != null) {
boolean canDefend = false;
for (int i = 0; i < cardsPlayer; i++) {
if (compDeck[i] != null) {
String card1Rank = compDeck[i].substring(0, compDeck[i].indexOf(' '));
String card1Suit = compDeck[i].substring(compDeck[i].indexOf(' ') + 1);
String card2Rank = lastDiscardedCard.substring(0, lastDiscardedCard.indexOf(' '));
String card2Suit = lastDiscardedCard.substring(lastDiscardedCard.indexOf(' ') + 1);
if (card1Suit.equals(trumpSuit.suit) && !card2Suit.equals(trumpSuit.suit)) {
canDefend = true;
} else if (card1Suit.equals(card2Suit)) {
switch (card1Rank) {
case "6":
if (card2Rank.equals("7") || card2Rank.equals("8") || card2Rank.equals("9") || card2Rank.equals("10") || card2Rank.equals("Валет") || card2Rank.equals("Дама") || card2Rank.equals("Король") || card2Rank.equals("Туз")) {
canDefend = true;
}
break;
case "7":
if (card2Rank.equals("8") || card2Rank.equals("9") || card2Rank.equals("10") || card2Rank.equals("Валет") || card2Rank.equals("Дама") || card2Rank.equals("Король") || card2Rank.equals("Туз")) {
canDefend = true;
}
break;
case "8":
if (card2Rank.equals("9") || card2Rank.equals("10") || card2Rank.equals("Валет") || card2Rank.equals("Дама") || card2Rank.equals("Король") || card2Rank.equals("Туз")) {
canDefend = true;
}
break;
case "9":
if (card2Rank.equals("10") || card2Rank.equals("Валет") || card2Rank.equals("Дама") || card2Rank.equals("Король") || card2Rank.equals("Туз")) {
canDefend = true;
}
break;
case "10":
if (card2Rank.equals("Валет") || card2Rank.equals("Дама") || card2Rank.equals("Король") || card2Rank.equals("Туз")) {
canDefend = true;
}
break;
case "Валет":
if (card2Rank.equals("Дама") || card2Rank.equals("Король") || card2Rank.equals("Туз")) {
canDefend = true;
}
break;
case "Дама":
if (card2Rank.equals("Король") || card2Rank.equals("Туз")) {
canDefend = true;
}
break;
case "Король":
if (card2Rank.equals("Туз")) {
canDefend = true;
}
break;
case "Туз":
canDefend = true;
break;
default:
break;
}
} else if (card1Suit.equals(trumpSuit.suit) && card2Suit.equals(trumpSuit.suit)) {
switch (card1Rank) {
case "6":
if (card2Rank.equals("7") || card2Rank.equals("8") || card2Rank.equals("9") || card2Rank.equals("10") || card2Rank.equals("Валет") || card2Rank.equals("Дама") || card2Rank.equals("Король") || card2Rank.equals("Туз")) {
canDefend = true;
}
break;
case "7":
if (card2Rank.equals("8") || card2Rank.equals("9") || card2Rank.equals("10") || card2Rank.equals("Валет") || card2Rank.equals("Дама") || card2Rank.equals("Король") || card2Rank.equals("Туз")) {
canDefend = true;
}
break;
case "8":
if (card2Rank.equals("9") || card2Rank.equals("10") || card2Rank.equals("Валет") || card2Rank.equals("Дама") || card2Rank.equals("Король") || card2Rank.equals("Туз")) {
canDefend = true;
}
break;
case "9":
if (card2Rank.equals("10") || card2Rank.equals("Валет") || card2Rank.equals("Дама") || card2Rank.equals("Король") || card2Rank.equals("Туз")) {
canDefend = true;
}
break;
case "10":
if (card2Rank.equals("Валет") || card2Rank.equals("Дама") || card2Rank.equals("Король") || card2Rank.equals("Туз")) {
canDefend = true;
}
break;
case "Валет":
if (card2Rank.equals("Дама") || card2Rank.equals("Король") || card2Rank.equals("Туз")) {
canDefend = true;
}
break;
case "Дама":
if (card2Rank.equals("Король") || card2Rank.equals("Туз")) {
canDefend = true;
}
break;
case "Король":
if (card2Rank.equals("Туз")) {
canDefend = true;
}
break;
case "Туз":
canDefend = true;
break;
default:
break;
}
}
}
}
}
}
}
}
}
Edited by vsevolod Oc