欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 锐评 > 斗地主小游戏练习

斗地主小游戏练习

2026/2/2 18:23:27 来源:https://blog.csdn.net/2401_89225716/article/details/145409015  浏览:    关键词:斗地主小游戏练习

测试类

package com.itheima.demo4test;public class Game {public static void main(String[] args) {//目标: 开发斗地主游戏// 1、准备牌,每张牌都是一个对象,所以需创建牌类// 2、需进入房间,所以需要创建房间类,房间也是对象Room r = new Room();r.start();}
}

牌类

package com.itheima.demo4test;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;@Data
@AllArgsConstructor
@NoArgsConstructor
public class Card {private String size;private String color;private int num;@Overridepublic String toString() {return size + " " + color;}
}

房间类 (重点)

package com.itheima.demo4test;import java.util.*;// shift+f6:批量重命名
public class Room {// 1、准备好54张牌,定义一个集合容器,用来存储54张牌private List<Card> allCards = new ArrayList<>();// 2、初始化54张牌{  //实例代码块// 3、准备点数String[] sizes = { "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2"};// 4、准备花色String[] colors = {"红心", "方片", "草花", "黑桃"};// 5、组合点数和花色成为牌对象,添加到集合中int num = 0;for (String size : sizes) {num++;for (String color : colors) {//6、创建牌对象,并添加到集合中allCards.add(new Card(size, color, num));}}//        allCards.add(new Card("", "小王"));//        allCards.add(new Card("", "大王"));Collections.addAll(allCards, new Card("", "小王", ++num), new Card("", "大王", ++num));System.out.println("新牌是:"+allCards);}public void start() {//8、洗牌,随机打乱集合中元素的顺序Collections.shuffle(allCards);System.out.println("洗牌后:"+allCards);//9、发牌:定义三个玩家,令狐冲=[],令狐白=[],令狐紫=[]Map<String, List<Card>> players = new HashMap<>();List<Card> lhc = new ArrayList<>();List<Card> lhb = new ArrayList<>();List<Card> lhz = new ArrayList<>();players.put("令狐冲", lhc);players.put("令狐白", lhb);players.put("令狐紫", lhz);//只发出51张牌,因为最后三张牌是底牌for (int i = 0; i < allCards.size() - 3; i++) {//获得当前遍历到的牌Card card = allCards.get(i);if (i < 51) {if (i % 3 == 0) {//第一个人接牌lhc.add(card);} else if (i % 3 == 1) {//第二个人接牌lhb.add(card);}else if(i % 3 == 2){//第三个人接牌lhz.add(card);}}}//10、拿最后三张牌: subList方法,获取集合中指定范围的子集合。包左不包右List<Card> lastCards = allCards.subList(51, 54);System.out.println("底牌是:"+lastCards);//抢地主: 把这个集合直接扔给玩家lhz.addAll(lastCards);//11、对牌 排序sortCards(lhc);sortCards(lhb);sortCards(lhz);//12、看牌,遍历Map集合for (Map.Entry<String, List<Card>> entry : players.entrySet()) {// 获取玩家名称,也就是键String name = entry.getKey();//获取玩家牌,也就是值List<Card> cards = entry.getValue();//遍历玩家牌System.out.println(name + "的牌是" + cards);}}private void sortCards(List<Card> cards) {//        Collections.sort(cards, new Comparator<Card>() {//            @Override//            public int compare(Card o1, Card o2) {//                return o2.getNum() - o1.getNum();//            }//        });Collections.sort(cards, ( o1,  o2) -> o2.getNum() - o1.getNum());}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词