通过java集合

阅读: 评论:0

通过java集合

通过java集合

在这里值模拟得到斗地主的洗牌,发牌,看牌的功能

先来个Card里来定义一张牌

public class Card {// 每一张牌都是由点数和花色组成的(除大小王外)private String color;private String point;public Card(String color, String point) {super();lor = color;this.point = point;}@Overridepublic String toString() {return color + point;}public String getColor() {return color;}public void setColor(String color) {lor = color;}public String getPoint() {return point;}public void setPoint(String point) {this.point = point;}
}

然后在来一个比较器,便于每个人在看牌的时候牌都是排好序的

import java.util.Comparator;public class ListCompare implements Comparator<Card> {@Overridepublic int compare(Card o1, Card o2) {// TODO Auto-generated method stub//先比较点数,点数如果比不出来,则比较花色Point().Point())) {return getColors(o1)-getColors(o2);	}else {return getPoint(o1)-getPoint(o2);			}}//穿进去一张牌,取他点数对应的一个数字,方便排序public static int getPoint(Card o1) {int count=0;switch (o1.getPoint()) {case "J":count =11;break;case "Q":count =12;break;case "K":count =13;break;case "A":count =14;break;case "2":count =15;break;case "S":count =30;break;case "M":count =40;break;default:count=Integer.Point());}return count;}public int getColors(Card o1) {int count=0;switch (o1.getColor()) {case "♣":count=4;break;case "♥":count=3;break;case "♠":count=2;break;default:count=1;break;}return count;}}

主函数和操作类

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;/*** 模拟斗地主 洗牌 发牌 看牌* * @author lenovo**/
public class Test {String[] player = new String[3];// 存放玩家,一共三个人String[] color = { "♣", "♠", "♥", "♦" };// 定义花色// 定义一个数组用于存放底牌Card[] bottomCard = new Card[3];// 定义点数String[] point = { "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A" };// 定义一个牌盒集合,存放所有的牌List<Card> cards = new ArrayList<Card>();// 定义一个map集合,用于存放每个玩家的牌Map<String, List<Card>> maps = new HashMap<String, List<Card>>();// 定义3个list集合存放每个玩家手中的牌List<Card> playerCard1 = new ArrayList<Card>();List<Card> playerCard2 = new ArrayList<Card>();List<Card> playerCard3 = new ArrayList<Card>();ListCompare l = new ListCompare();// 1.添加玩家public void  names) {/*** 本次只需要三个玩家,加入的玩家大于3则只取前三个,小于3则给添加一个电脑玩家*/// 给定的人数大于3个if (names.length >= player.length) {// 将names的前三个值赋给player数组for (int i = 0; i < player.length; i++) {player[i] = names[i];}} else {// 如果names里的内容少于3个,则给其添加电脑,达到3人for (int i = 0; i < names.length; i++) {player[i] = names[i];}// 此时play集合里的元素还没有满for (int i = names.length; i < player.length; i++) {player[i] = "电脑" + (int) (Math.random() * 10000);}}}// 2.洗牌public void mixCard() {// A:先将牌全部放到牌盒中,然后打乱顺序for (int i = 0; i < color.length; i++) {for (int j = 0; j < point.length; j++) {cards.add(new Card(color[i], point[j]));}}// 最后将大小王放进牌盒中cards.add(new Card("大王", "S"));cards.add(new Card("小王", "M"));// 利用collections里的方法,将集合里的顺序进行打乱Collections.shuffle(cards);}// 3.发牌public void sendCard() {// A:先发底牌bottomCard[0] = (cards.size() - 1);bottomCard[1] = (cards.size() - 2);bottomCard[2] = (cards.size() - 3);for (int i = 0; i < cards.size() - 3; i += 3) {playerCard1.(i));playerCard2.(i + 1));playerCard3.(i + 2));}Collections.sort(playerCard1, l);Collections.sort(playerCard2, l);Collections.sort(playerCard3, l);maps.put(player[0], playerCard1);maps.put(player[1], playerCard2);maps.put(player[2], playerCard3);}// 4.看牌public void showCard() {Set<String> ks = maps.keySet();for (String m : ks) {System.out.println(m + "---" + (m));}System.out.println("---------");System.out.println("底牌t" + bottomCard[0].toString() + "t" + bottomCard[1].toString() + "t" + bottomCard[2].toString());}public static void main(String[] args) {Test t = new Test();t.addPlayer("张三");t.mixCard();t.sendCard();t.showCard();}
}

本文发布于:2024-01-30 23:45:41,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170662954523700.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:java
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23