Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package ca.sheridancollege.project;
- import java.util.ArrayList;
- import java.util.Collections;
- import java.util.LinkedList;
- import java.util.List;
- import java.util.Random;
- /**
- * @author Rich Smith at ZenOfProgramming.com
- */
- public class StartTheWar
- {
- public static void main (String[] args)
- {
- System.out.println("Let the War begin!!!nnWe will now deal the cards. Best of luck to both playersn ");
- List<Card> cardDeck = new ArrayList<>();
- for (int x = 0; x < 4; x++) { //for loop using the 4 suits
- for (int y = 2; y < 15; y++) { // for loop for 13 for cards 2-10 and faced cards1
- cardDeck.add(new Card(x, y)); //create new card then use add method to combine to array list
- } //end cards for loop
- }//end suit for
- Collections.shuffle(cardDeck, new Random()); //deck shuffler
- //using our newly learnt knowledge on Linked lists to create 2 - one for each player. player 1/player2
- LinkedList<Card> deck1 = new LinkedList<>();
- LinkedList<Card> deck2 = new LinkedList<>();
- //found interesting Java operation called List which can be broken down into sublists to store information. Just add the total # of cards needed in each sublist
- deck1.addAll(cardDeck.subList(0, 26)); //26 cards for p1
- deck2.addAll(cardDeck.subList(26, cardDeck.size()));//26 cards for p2
- //Array for player objects to be held
- ArrayList<Player> p3 = new ArrayList<>();
- Player p1 = new Player(deck1);
- Player p2 = new Player(deck2);
- p3.add(p1);
- p3.add(p2);
- War game = new War(p3);
- game.play();
- }
- }
- /**
- * SYST 17796 Project Winter 2019 Base code.
- * Students can modify and extend to implement their game.
- * Add your name as a modifier and the date!
- */
- package ca.sheridancollege.project;
- public class Card
- {
- private int rank; //initialize the rank (2,3,4...King, Ace)
- private int suit; //initialize the suit (spades, hearts...)
- public Card (int suit, int rank)
- {
- this.rank = rank;
- this.suit = suit;
- }//end construcor
- //getter method
- public int getCard ()
- {
- return rank;
- }//end getCard
- //setter method
- public void setCard (int rank)
- {
- this.rank = rank;
- }//end setCard
- @Override
- public String toString ()
- {
- //combine rank and suit together into a single string(ex: Ace of Diamonds)
- //suing StringBuilder for modifiability later on
- StringBuilder displayCard = new StringBuilder();
- //personal choice to use switch
- switch (rank) {
- //since rank is int type, now match int 11 to String jack...14 to Ace
- case 11:
- displayCard.append("Jack");
- break;
- case 12:
- displayCard.append("Queen");
- break;
- case 13:
- displayCard.append("King");
- break;
- case 14:
- displayCard.append("Ace");
- break;
- default:
- displayCard.append(rank); //number from 2 to 10 does not need to modify
- break;
- }//end rank switch
- displayCard.append(" of "); //setting the format of the output
- switch (suit) {
- case 0:
- displayCard.append("Spades");
- break;
- case 1:
- displayCard.append("Hearts");
- break;
- case 2:
- displayCard.append("Clubs");
- break;
- case 3:
- displayCard.append("Diamonds");
- break;
- default: //anything else, do nothing
- break;
- }//end suit switch
- //return the result of an entire cmombined string
- return displayCard.toString();
- }//end toString
- }
- package ca.sheridancollege.project;
- /**
- * @author Rich Smith at ZenOfProgramming.com
- */
- import java.util.ArrayList;
- import java.util.List;
- public class War extends Game
- {
- public War (ArrayList<Player> players)
- {
- super(players);
- }
- public void play ()
- {
- while (true) {
- //use pop to remove card from top of Linked List- thank god for Rich teaching us all this lol
- //this is where error is
- Card p1Card = this.getPlayers().get(0).getDeck().pop(); //each player place one card face up
- Card p2Card = this.getPlayers().get(1).getDeck().pop();
- //display the face up card
- System.out.println("Player 1 plays: " + p1Card.toString());
- System.out.println("Player 2 plays: " + p2Card.toString());
- //rank comparation between two cards
- //
- if (p1Card.getCard() > p2Card.getCard()) {//if player 1 win
- this.getPlayers().get(0).getDeck().pop(); //higher rank wins both cards and
- this.getPlayers().get(0).getDeck().pop(); //places them at the bottom of his deck.
- System.out.println("Player 1 wins the round and Player 2's cards: " + p2Card.toString());
- System.out.println();
- }//end if
- else if (p1Card.getCard() < p2Card.getCard()) {//if player 2 win
- this.getPlayers().get(1).getDeck().pop();
- this.getPlayers().get(1).getDeck().pop();
- System.out.println("Player 2 wins the round and Player 1's card : " + p1Card.toString());
- System.out.println();
- }//end else if
- // test
- else { //war happens while both players draw the same car
- System.out.println("War!! Each player places 3 cards face down and flips the 4th! Winner take all!n");
- //creating new temp array for tie
- List<Card> war1 = new ArrayList<>();
- List<Card> war2 = new ArrayList<>();
- //checking do players have enough (4)cards to play war / if not game is over
- for (int x = 0; x < 4; x++) {
- //either one player runs out of card is game over
- if (this.getPlayers().get(0).getDeck().isEmpty() || getPlayers().get(1).getDeck().isEmpty()) {
- break;
- }//end if
- System.out.println("War card for Player 1 is xxnWar card for Player 2 is xxn");
- war1.add(this.getPlayers().get(0).getDeck().pop()); //place additional card for war
- war2.add(this.getPlayers().get(1).getDeck().pop());
- }//end for
- //only compare result when both players have enough cards for war
- if (war1.size() == 4 && war2.size() == 4) {
- //display the war cards from each player
- System.out.println("War card for Player 1 is " + war1.get(3).toString());
- System.out.println("War card for Player 2 is " + war2.get(3).toString());
- System.out.println();
- //if player 1 wins the war round
- if (war1.get(3).getCard() > war2.get(3).getCard()) {
- this.getPlayers().get(0).getDeck().addAll(war1); //player1 get all 10 cards
- this.getPlayers().get(0).getDeck().addAll(war2);
- System.out.println("Player 1 wins the battle! But as they say, winning the battle does not guarantee winning the War!n");
- }//end if
- //otherwise player 2 wins the war round
- else {
- getPlayers().get(1).getDeck().addAll(war1); //player2 get all 10 cards
- getPlayers().get(1).getDeck().addAll(war2);
- System.out.println("Player 2 wins the battle! But as they say, winning the battle does not guarantee winning the War!n");
- }//end else
- }//end if
- }//end war round else
- }
- }
- }
- /**
- * SYST 17796 Project Winter 2019 Base code.
- * Students can modify and extend to implement their game.
- * Add your name as a modifier and the date!
- */
- package ca.sheridancollege.project;
- import java.util.LinkedList;
- public class Player
- {
- private LinkedList<Card> deck;
- public Player (LinkedList<Card> deck)
- {
- this.deck = deck;
- }
- public LinkedList<Card> getDeck ()
- {
- return this.deck;
- }
- }
- at java.util.LinkedList.removeFirst(LinkedList.java:270)
- at java.util.LinkedList.pop(LinkedList.java:801)
- at ca.sheridancollege.project.War.play(War.java:23)
- at ca.sheridancollege.project.StartTheWar.main(StartTheWar.java:43)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement