Collection The root interface in the hierarchy. Collection represents a set of objects, also called elements of collection. Some collections allow duplicate elements, while others do not. Some collections are ordered, while others are disordered. The JDK does not provide any direct implementation of this interface: it provides more specific subinterfaces (such as Set and List) implementations. This interface is usually used to pass collections and operate these collections where the maximum universality is required.
Main content: Here we use the collection collection to simulate the poker game played by the big guys in Hong Kong movies.
1. Game rules: Each of the two players deals two cards in their hands and compares them. Compare the maximum points of each player's card, the size is A-2, the one with the largest points wins. If the points are the same, the color of the suit is compared, the size is black (4), red (3), plum (2), square (1), and the color of the suit is the winner.
2. Implementation steps:
Create a deck of playing cards A-2, with four colors of black (4), red (3), plum (2), and square (1) totaling 52 cards;
Create two players including player ID and name and licensed Card information;
Shuffle the cards and deal two cards to both players;
Compare the size of the card in the player's hand to get the winner;
3. Program implementation
Card category: contains the numbers and colors of the cards
package collectiontest.games;public class Card { private Integer id; //Size of the card private Integer type;//The color of the card public Card(Integer id, Integer type) { this.id = id; this.type = type; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public Integer getType() { return type; } public void setType(Integer type) { this.type = type; } @Override public String toString() { return "Card [id=" + id + ", type=" + type + "]"; } } Poker Poker Class: Includes Poker Card A-2
package collectiontest.games;public class Poker { private Card id2 ; private Card id3 ; private Card id4 ; private Card id5 ; private Card id6 ; private Card id7 ; private Card id8 ; private Card id9 ; private Card id10 ; private Card J ; private Card Q ; private Card K ; private Card A ; public Poker() { } //Four types: black--4, red--3, plum--2, square--1 public Poker(Integer type) { this.id2 = new Card(2, type); this.id3 = new Card(3, type); this.id4 = new Card(4, type); this.id5 = new Card(5, type); this.id6 = new Card(6, type); this.id7 = new Card(7, type); this.id8 = new Card(8, type); this.id9 = new Card(9, type); this.id10 = new Card(10, type); this.J = new Card(11, type); this.Q = new Card(12, type); this.K = new Card(13, type); this.A = new Card(14, type); } public Card getId2() { return id2; } public void setId2(Card id2) { this.id2 = id2; } public Card getId3() { return id3; } public void setId3(Card id3) { this.id3 = id3; } public Card getId4() { return id4; } public void setId4(Card id4) { this.id4 = id4; } public Card getId5() { return id5; } public void setId5(Card id5) { this.id5 = id5; } public Card getId6() { return id6; } public void setId6(Card id6) { this.id6 = id6; } public Card getId7() { return id7; } public void setId7(Card id7) { this.id7 = id7; } public Card getId8() { return id8; } public void setId8(Card id8) { this.id8 = id8; } public Card getId9() { return id9; } public void setId9(Card id9) { this.id9 = id9; } public Card getId10() { return id10; } public void setId10(Card id10) { this.id10 = id10; } public Card getJ() { return J; } public void setJ(Card j) { J = j; } public Card getQ() { return Q; } public void setQ(Card q) { Q = q; } public card getK() { return K; } public void setK(Card k) { K = k; } public Card getA() { return A; } public void setA(Card a) { A = a; }} Player class: contains player ID and name, card information held
package collectiontest.games;import java.util.ArrayList;import java.util.List;public class Player { //Player's ID private String id ; //Player's name private String name ; //Player's license held by the player Private List<Card> pokerType ; public Player() { } public Player(String id, String name, List<Card> pokerType) { this.id = id; this.name = name; this.pokerType = new ArrayList<>(); } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public List<Card> getPokerType() { return pokerType; } public void setPokerType(List<Card> pokerType) { this.pokerType = pokerType; } } Poker game main category: including 1) Poker creation 2) Player creation 3) Shrink 4) Discount 5) Compare the winners and losses
package collectiontest.games;import java.util.ArrayList;import java.util.Arrays;import java.util.Collections;import java.util.HashMap;import java.util.HashSet;import java.util.List;import java.util.Map;import java.util.Scanner;import java.util.Set;public class GamsBegin { // Create playing cards public Set<Poker> cPoker() { System.out.println("************ Start creating poker cards**********"); // Create a deck of poker // Four types: black--4, red--3, plum--2, square--1 Set<Poker> pokers = new HashSet<>(); Poker[] poker = { new Poker(1), new Poker(2), new Poker(3), new Poker(4) }; /* * Use of Collections tool classes* Collections.addAll(pokers, new Poker(1), new Poker(2), new Poker(3), new Poker(4)); * * */ pokers.addAll(Arrays.asList(poker)); System.out.println("****************** Poker card creation successfully****************"); return pokers; } // Create two players public Map<String, Player> cPlayer() { System.out.println("************ Start creating player****************"); Map<String, Player> map = new HashMap<String, Player>(); // Control the number Integer control = 0; System.out.println("Create two players, create according to the prompt"); Scanner console = new Scanner(System.in); while (true) { System.out.println("Please enter the "+(control+1)+" player ID: "); String courseId = console.next(); if (isNumeric(courseId)) { System.out.println("Please enter the "+(control+1)+" player name: "); String courseName = console.next(); Player players = new Player(courseId, courseName, null); //Save data map.put(courseId, players); System.out.println("Add" + (control + 1) + "Players" + courseName + "Success"); //Add control++ by number; } else { System.out.println("******Please enter the numeric ID*******"); continue; } if (control == 2) { break; } } System.out.println("************ Player created successfully****************"); return map; } // Determine whether the input is a number, Character.isDigit() is a java method public boolean isNumeric(String str) { for (int i = 0; i < str.length(); i++) { if (!Character.isDigit(str.charAt(i))) { return false; } } return true; } /** * Shuffle: 52 different random numbers can also be generated to achieve shuffle* **/ public List<Card> wPoker(Set<Poker> pokers) { System.out.println("********* start shuffle**********"); //Use the orderly sort of List, and save the order after the shuffle. List<Card> listCard = new ArrayList<>(); //Use the unorderly sort of Set set to achieve shuffle Set<Card> listSet = new HashSet<>(); //Save to the Set set, unordered for (Poker pk : pokers) { listSet.add(pk.getId2()); listSet.add(pk.getId3()); listSet.add(pk.getId4()); listSet.add(pk.getId5()); listSet.add(pk.getId5()); listSet.add(pk.getId6()); listSet.add(pk.getId7()); listSet.add(pk.getId8()); listSet.add(pk.getId9()); listSet.add(pk.getId10()); listSet.add(pk.getJ()); listSet.add(pk.getQ()); listSet.add(pk.getK()); listSet.add(pk.getK()); listSet.add(pk.getA()); } //Save in List collection, ordered for (Card cd : listSet) { listCard.add(cd); System.out.println(cd); } System.out.println("********************* Successfully reshuffled**********"); return listCard; } // Dealing public Map<String, Player> pushPoker(List<Card> listCard, Map<String, Player> pMap) { System.out.println("*********************Take deal****************"); // Control each person to deal two cards int control = 0; for (Map.Entry<String, Player> entry : pMap.entrySet()) { if (control == 0) { for (int i = 0; i < 3; i = i + 2) { // Distribution entry.getValue().getPokerType().add(listCard.get(i)); } // Update map object pMap.put(entry.getKey(), entry.getValue()); control++; } else if (control == 1) { for (int i = 1; i < 4; i = i + 2) { // Distribution entry.getValue().getPokerType().add(listCard.get(i)); } // Update map object pMap.put(entry.getKey(), entry.getValue()); control++; } else { break; } } System.out.println("****************** successful deal**********"); return pMap; } public void compareMatch(Map<String, Player> newMap) { /*Compare wins and losses* 1. First get the ID and suit ID of the largest card in the hands of each player. * 2. Compare the ID sizes of the largest card in the hands of two players, and the bigger one wins. * 3. If the IDs of the two cards are equal, when comparing the suit IDs of the two cards, the suit ID will be greater and the victory will be achieved. * * */ List<Player> players = new ArrayList<>(); // Get two players for (Map.Entry<String, Player> entry : newMap.entrySet()) { players.add(entry.getValue()); } // Player one information and license list<Card> playerOne = players.get(0).getPokerType(); // Get the ID and suit of the largest card Integer oneMaxId = Math.max(playerOne.get(0).getId(), playerOne.get(1) .getId()); Integer oneMaxType = (oneMaxId!=playerOne.get(0).getId()) ? playerOne.get(1).getType() : playerOne.get(0).getType() ; // Player two information and license list<Card> playerTwo = players.get(1).getPokerType(); // Get the ID and suit of the largest card Integer twoMaxId = Math.max(playerTwo.get(0).getId(), playerTwo.get(1) .getId()); Integer twoMaxType = (twoMaxId!=playerTwo.get(0).getId()) ? playerTwo.get(1).getType() : playerTwo.get(0).getType() ; if (oneMaxId > twoMaxId) { System.out.println("Player: " + players.get(0).getName() + " Win!!"); } else if (oneMaxId == twoMaxId) { if (oneMaxType > twoMaxType) { System.out.println("Player: " + players.get(0).getName() + " Win!!"); } else { System.out .println("Player: " + players.get(1).getName() + " Win! ! "); } } else { System.out.println("Player: " + players.get(1).getName() + " Win!!"); } System.out.println("***************************************************************"); System.out.println("Player: " + players.get(0).getName() + "The card of "is: " + showName(playerOne.get(0).getType(), 0) + "--" + showName(playerOne.get(0).getId(), 1) + " " + showName(playerOne.get(1).getType(), 0) + "--" + showName(playerOne.get(1).getId(), 1)); System.out.println("Player: " + players.get(1).getName() + "The card of "is: " + showName(playerTwo.get(0).getType(), 0) + "--" + showName(playerTwo.get(0).getId(), 1) + " " + showName(playerTwo.get(1).getType(), 0) + "--" + showName(playerTwo.get(1).getId(), 1)); } // The name of the display card private String showName(Integer i, Integer type) { String str = ""; // Show suit if (type == 0) { switch (i) { case 1: { str = "cube"; break; } case 2: { str = "Plum Blossom"; break; } case 3: { str = "Heart"; break; } case 4: { str = "str = "Spads"; break; } default: { break; } } } // Show the number if (type == 1) { if (i < 11) { return i.toString(); } else { switch (i) { case 11: { str = "J"; break; } case 12: { str = "Q"; break; } case 13: { str = "K"; break; } case 14: { str = "A"; break; } default: { break; } } } return str; } public static void main(String[] args) { GamsBegin gb = new GamsBegin(); // 1. Create playing cards Set<Poker> pokers = gb.cPoker(); // 2. Create two players Map<String, Player> pMap = gb.cPlayer(); // 3. Shuffle List<Card> listCard = gb.wPoker(pokers); // 4. Discount Map<String, Player> newMap = gb.pushPoker(listCard, pMap); // 4. CompareMatch(newMap); }} Running results:
********* Start creating poker cards**********
*************Poker card creation successfully*************
********* Start creating players*************
To create two players, please enter the 1st player ID according to the prompts:
Please enter the first player name:
Stephen Chow added the first player. Stephen Chow succeeded. Please enter the second player ID:
Please enter the second player name:
Chow Yun-fat added the second player, Chow Yun-fat successfully
**********Player creation successfully*************
************Start shuffle**********
Card [id=9, type=3]
Card [id=11, type=4]
Card [id=13, type=3]
Card [id=8, type=3]
Card [id=5, type=2]
Card [id=6, type=1]
Card [id=4, type=3]
Card [id=5, type=4]
Card [id=2, type=3]
Card [id=9, type=2]
Card [id=9, type=4]
Card [id=14, type=2]
Card [id=9, type=1]
Card [id=2, type=1]
Card [id=2, type=4]
Card [id=7, type=4]
Card [id=11, type=1]
Card [id=10, type=1]
Card [id=14, type=4]
Card [id=14, type=3]
Card [id=12, type=2]
Card [id=2, type=2]
Card [id=10, type=2]
Card [id=7, type=1]
Card [id=7, type=3]
Card [id=8, type=2]
Card [id=4, type=4]
Card [id=13, type=4]
Card [id=14, type=1]
Card [id=12, type=1]
Card [id=5, type=1]
Card [id=6, type=4]
Card [id=12, type=4]
Card [id=11, type=2]
Card [id=10, type=3]
Card [id=3, type=4]
Card [id=12, type=3]
Card [id=4, type=2]
Card [id=4, type=1]
Card [id=6, type=2]
Card [id=5, type=3]
Card [id=8, type=4]
Card [id=3, type=2]
Card [id=13, type=2]
Card [id=7, type=2]
Card [id=3, type=3]
Card [id=3, type=1]
Card [id=6, type=3]
Card [id=8, type=1]
Card [id=11, type=3]
Card [id=13, type=1]
Card [id=10, type=4]
*************Successful reshuffle**********
*************Charge deal begins************
*************Successful deal*************
Player: Stephen Chow won! !
***************************************************
Player: Stephen Chow's card is: Red Peach-9 Red Peach-K
Player: Chow Yun-fat's card is: Spades-J Red-8
The above is all the content of this article. I hope it will be helpful to everyone's learning and I hope everyone will support Wulin.com more.