Advertisement
dariocode2017

wojna/rozgrywka

Mar 21st, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.39 KB | None | 0 0
  1. package warcards;
  2.  
  3. import java.util.Scanner;
  4.  
  5. public class CardWar {
  6.     DeckOfCards deck;
  7.     Card[] player1Cards;
  8.     Card[] player2Cards;
  9.     String nextRound = "";
  10.     boolean isGameActive = true;
  11.     int roundsCounter = 1;
  12.     int warInRowFactor = 0;
  13.    
  14.     public CardWar() {
  15.         startGame();       
  16.     }
  17.    
  18.     public void startGame() {
  19.         deck = new DeckOfCards();
  20.         deck.printAllCards();
  21.         deck.mixDeckOfCards();
  22.         player1Cards = new Card[deck.deckOfCards.length/2];
  23.         player2Cards = new Card[deck.deckOfCards.length - player1Cards.length];
  24.         player1Cards = deck.dealTheCards(player1Cards.length );
  25.         player2Cards = deck.dealTheCards(player2Cards.length);
  26.         printPlayerCards(player1Cards);
  27.         printPlayerCards(player2Cards);
  28.        
  29.         System.out.println("The game starts. Are you ready for it? (press enter)");
  30.         Scanner sc = new Scanner(System.in);
  31.         String nextRound = sc.nextLine();
  32.        
  33.         while (isGameActive) {
  34.             if (roundsCounter > 1) {
  35.                 roundsCounter++;
  36.                 if (checkPlayersStatus(1)) {
  37.                     break;
  38.                 }
  39.                 System.out.println("_____________________________________________________________________________________________________________");
  40.                 System.out.println("Round " + roundsCounter + ". Would you like to see another Round? (press enter to proceed, type 'exit' to abort game)");
  41.                 nextRound = sc.nextLine();
  42.                 if (!(nextRound.equals("exit"))) {
  43.                     showPlayersCards();
  44.                 } else {
  45.                     isGameActive = false;
  46.                     break;
  47.                 }
  48.             } else {
  49.                 roundsCounter++;
  50.                 showPlayersCards();
  51.             }
  52.         }
  53.     }
  54.    
  55.     public void printPlayerCards(Card[] player) {
  56.         for (int i=0; i<player.length; i++) {
  57.             System.out.print(player[i].getCardName() + " ");
  58.         }
  59.         System.out.println();
  60.     }
  61.  
  62.     public void showPlayersCards() {
  63.         System.out.println(player1Cards.length + " cards  ////   " + player2Cards.length + " cards");
  64.         System.out.println("\n Player 1    vs     Player 2\n" + "   " + player1Cards[0].getCardName() + "    vs    " + player2Cards[0].getCardName());
  65.         changePlayersDeck(deck.strongerCard(player1Cards[0], player2Cards[0]));
  66.         System.out.println("Player 1 dlugosc: " + player1Cards.length);
  67.         System.out.println("Player 2 dlugosc: " + player2Cards.length);
  68.         printPlayerCards(player1Cards);
  69.         printPlayerCards(player2Cards);
  70. //      isGameActive = false;
  71.     }
  72.    
  73.     public void changePlayersDeck(Card win) {
  74.         if (win == null) {
  75.             checkPlayersStatus(3);
  76.             makeWar();
  77.         } else if (win.equals(player1Cards[0])) {
  78.             player1Cards = addCards(player1Cards, player2Cards[0]);
  79.             player2Cards = subtractCards(player2Cards);
  80.             System.out.println("");
  81.             System.out.println();
  82.         } else if (win.equals(player2Cards[0])) {
  83.             player2Cards = addCards(player2Cards, player1Cards[0]);
  84.             player1Cards = subtractCards(player1Cards);
  85.             System.out.println();
  86.             System.out.println();
  87.         }
  88.     }
  89. //  adds card for the winner player
  90.     public Card[] addCards(Card[] winner, Card cardWon) {
  91.         Card[] tempArr = new Card[winner.length];
  92.         for (int i=0; i<winner.length; i++) {
  93.             tempArr[i] = winner[i];
  94.         }
  95.         winner = new Card[tempArr.length + 1];
  96.         for (int i=0; i<tempArr.length; i++) {
  97.             if (i < tempArr.length -1) {
  98.                 winner[i] = tempArr[i+1];
  99.             }
  100.         }
  101.         winner[winner.length-2] = tempArr[0];
  102.         winner[winner.length-1] = cardWon;
  103.         return winner;
  104.     }
  105.  
  106. // adds cards for the winner player in a war (adds his 3 cards to the end of his deck and 3 cards taken from the loser)
  107.     public Card[] addCards(Card[] winner, Card cardWon1, Card cardWon2, Card cardWon3) {
  108.         Card[] tempArr = new Card[winner.length];
  109.         for (int i=0; i<tempArr.length; i++) {
  110.             tempArr[i] = winner[i];
  111.         }
  112.         winner = new Card[tempArr.length + 3];
  113.         for (int i=0; i<tempArr.length; i++) {
  114.             if (i < tempArr.length - 3) {
  115.                 winner[i] = tempArr[i+3];
  116.             }
  117.         }
  118.         winner[winner.length-6] = tempArr[0];
  119.         winner[winner.length-5] = tempArr[1];
  120.         winner[winner.length-4] = tempArr[2];
  121.         winner[winner.length-3] = cardWon1;
  122.         winner[winner.length-2] = cardWon2;
  123.         winner[winner.length-1] = cardWon3;
  124.         return winner;
  125.     }
  126.    
  127. //  subtracts lost card from a loser's deck
  128.     public Card[] subtractCards(Card[] loser) {
  129.         Card[] tempArr = new Card[loser.length];
  130.         for (int i=0; i<tempArr.length; i++) {
  131.             tempArr[i] = loser[i];
  132.         }
  133.         loser = new Card[tempArr.length -1];
  134.         for (int i=0; i<loser.length; i++) {
  135.             if (i < loser.length) {
  136.                 loser[i] = tempArr[i+1];
  137.             }
  138.         }
  139.         return loser;
  140.     }
  141.    
  142. //  subtracts lost 3 cards from a loser's deck after war
  143.     public Card[] subtractCards(Card[] loser, int numberOfLostCards) {
  144.         Card[] tempArr = new Card[loser.length];
  145.         for (int i=0; i<tempArr.length; i++) {
  146.             tempArr[i] = loser[i];
  147.         }
  148.         loser = new Card[tempArr.length - numberOfLostCards];
  149.         for (int i=0; i<loser.length; i++) {
  150.             loser[i] = tempArr[i+3];
  151.         }
  152.         return loser;
  153.     }
  154.    
  155.     public void makeWar() {
  156.         warInRowFactor += 2;
  157.         System.out.println("Player puts another two cards on the table");
  158.         System.out.println(player1Cards[warInRowFactor].getCardName() + "   vs   " + player2Cards[warInRowFactor].getCardName());
  159.         if (player1Cards[warInRowFactor].getCardValue() == player2Cards[warInRowFactor].getCardValue()) {
  160.             System.out.println("We have another tie, Time for next war!");
  161.             makeWar();
  162.         } else if (player1Cards[warInRowFactor].getCardValue() > player2Cards[warInRowFactor].getCardValue()) {
  163.             System.out.println("Player 1 is stronger");
  164.             player1Cards = addCards(player1Cards, player2Cards[0], player2Cards[1], player2Cards[2]);
  165.             player2Cards = subtractCards(player2Cards, warInRowFactor+1);
  166.             warInRowFactor = 0;
  167.         } else if (player1Cards[warInRowFactor].getCardValue() < player2Cards[warInRowFactor].getCardValue()) {
  168.             System.out.println("Player 2 is stronger");
  169.             player2Cards = addCards(player2Cards, player1Cards[0], player1Cards[1], player1Cards[2]);
  170.             player1Cards = subtractCards(player1Cards, warInRowFactor+1);
  171.             warInRowFactor = 0;
  172.         }
  173.     }
  174.    
  175.     public boolean checkPlayersStatus(int amountOfCards) {
  176.         if (amountOfCards < player1Cards.length) {
  177.             System.out.println("Player 1 has not enough card to play game");
  178.             System.out.println("PLAYER 2 IS WINNER!!!!");
  179.             isGameActive = false;
  180.             return true;
  181.         } else if (amountOfCards < player2Cards.length) {
  182.             System.out.println("Player 2 has not enough card to play game");
  183.             System.out.println("PLAYER 1 IS WINNER!!!!");
  184.             isGameActive = false;
  185.             return true;
  186.         }
  187.         return false;
  188.     }
  189.    
  190.    
  191.     public boolean exitGame() {
  192.         return isGameActive = false;
  193.     }
  194.    
  195. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement