/**
Java中List集合的用法,模拟斗地主
一、具体用的到的知识点:
toString
将对象以字符串的形式返回
equals
用来比较两个对象是否相等
hashCode
用来比较两个对象的内容是否相等
常量的定义方法
static和final联用,用来定义常量(常量的命名:字母都大写,多个单词并列用下划线连接)
集合的截取
subList(fromIndex,toIndex)方法
集合的乱序
使用Collections里面的shuffle方法
二、题目要求:
*/三、用代码实现对应的功能:
1.首先创建一个Card类:
public class Card { //定义花色 private int suit; //定义点数 private int rank; //添加无参构造方法 public Card() { super(); // TODO Auto-generated constructor stub } //添加有参构造器 public Card(int suit, int rank) { super(); this.suit = suit; this.rank = rank; } //添加get set方法 public int getSuit() { return suit; } public void setSuit(int suit) { this.suit = suit; } public int getRank() { return rank; } public void setRank(int rank) { this.rank = rank; } //重写toString方法 @Override public String toString() { // return "Card [suit=" + suit + ", rank=" + rank + "]"; return App.SUITS[suit]+App.RANKS[rank]; } //重写hashCord和equals方法 @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + rank; result = prime * result + suit; return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Card other = (Card) obj; if (rank != other.rank) return false; if (suit != other.suit) return false; return true; } } 2.创建玩家类 Player类:
import java.util.ArrayList; import java.util.List; public class Player { //玩家的姓名 private String name; //玩家手中的扑克牌 private List<Card> cards = new ArrayList<Card>(); //无参构造器 public Player() { super(); // TODO Auto-generated constructor stub } //有参构造器 public Player(String name, List<Card> cards) { super(); this.name = name; this.cards = cards; } //添加一个只有name属性的方法 public Player(String name) { super(); this.name = name; } //get方法 public String getName() { return name; } //set 方法 public void setName(String name) { this.name = name; } public List<Card> getCards() { return cards; } public void setCards(List<Card> cards) { this.cards = cards; } //重写toString @Override public String toString() { return "Player [name=" + name + ", cards=" + cards + "]"; } //重写hashCord @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((cards == null) ? 0 : cards.hashCode()); result = prime * result + ((name == null) ? 0 : name.hashCode()); return result; } //重写equals @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Player other = (Player) obj; if (cards == null) { if (other.cards != null) return false; } else if (!cards.equals(other.cards)) return false; if (name == null) { if (other.name != null) return false; } else if (!name.equals(other.name)) return false; return true; } } 3.定义一个工具类:用来存放常量:
public class App { //定义String类型的数组——>存放花色 public static final String[] SUITS= {"♥","♠","♣","♦",""}; //定义String类型的数组——>存放点数 public static final String[] RANKS= {"A","2","3","4","5","6","7","8","9","10","J","Q","K","大王","小王"}; } 4.创建一个测试类,用来实现对应的功能
import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Random; public class Test { //创建扑克牌 static List<Card> poker; //定义玩家的集合 static List<Player> players; //程序入口 public static void main(String[] args) { //生成一副扑克牌 poker = createPoker(); //输出扑克牌 System.out.println("生成的扑克牌:"+poker); //洗牌:用Collections里面的shuffle方法 Collections.shuffle(poker); //输出洗后的牌 System.out.println("洗后的牌为:"+poker); /**发牌**/ //初始化玩家 initPlayers(); //发牌 deal(); //遍历集合,展示玩家手里的牌 for(Player player:players) { System.out.println(player); } } /* * 发牌的方法 */ private static void deal() { //遍历扑克牌 for (int i = 0; i < poker.size()-3; ) {//留三张底牌 //发牌 for (int j = 0; j < players.size(); j++) { //获取三位玩家 Player player = players.get(j); //获取玩家手里的牌 List<Card> cards = player.getCards(); //把扑克牌给每一位玩家 cards.add(poker.get(i++)); } } //随机产生地主 Random rd = new Random(); //三个玩家里面随机 int index = rd.nextInt(players.size()); //选择地主 Player dzPlater = players.get(index); //获取地主手上的牌 List<Card> dzCards = dzPlater.getCards(); //截取最后的三张牌,使用subList List<Card> card = poker.subList(poker.size()-3, poker.size()); //将三张牌给地主 dzCards.addAll(card); } /* * 初始化玩家 */ private static void initPlayers() { players = new ArrayList<Player>(); //在集合中创建三个玩家 players.add(new Player("甜十七")); players.add(new Player("石头鱼")); players.add(new Player("代歌星")); } //生成扑克牌的方法 private static List<Card> createPoker() { List<Card> poker = new ArrayList<Card>(); //遍历扑克牌的集合 for (int i = 0; i < App.RANKS.length-2; i++) {//点数 for (int j = 0; j < App.SUITS.length-1; j++) {//花色 // System.out.println(App.SUITS[j]+App.RANKS[i]) //根据点数和花色创建扑克牌类 Card card = new Card(j,i); //将牌添加到poker里面 poker.add(card); } } //添加大小王 poker.add(new Card(App.SUITS.length-1,App.RANKS.length-2)); poker.add(new Card(App.SUITS.length-1,App.RANKS.length-1)); return poker; } 5.运行效果图:

今日就到这儿了,欢迎各位业界大佬提出宝贵意见!

本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算
官方软件产品操作指南 (170)