黑马教程强化day2-4
目录
- 综合案例
综合案例
做一个简易版斗地主游戏
分析业务需求
- 1.总共有54张牌
- 2.点数:”3“,到”K”,“A”,“2“
- 3.花谢:四种
- 4.大小王
- 5.斗地主:发出51张牌,剩下三张做底牌
主类代码:
public class total1 {public static void main(String[] args) {//1.每张牌都是一个对象,定义牌类//2.游戏房间也是一个对象:定义房间类(54张牌,开始启动)Room room =new Room();room.start();}
}
Card类代码:
package com.item.totalExample;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;@Data
@NoArgsConstructor
@AllArgsConstructor
public class Card {private String size;private String color;private int num;//大小@Overridepublic String toString() {return size+color;}
}
Room类代码:
package com.item.totalExample;
import java.util.*;
public class Room {//1.准备好54张牌,给房间使用,定义一个集合容器装54张牌private List<Card> cards=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创建牌对象//7添加到集合中cards.add(new Card(color,size,num));}}cards.add(new Card("","🃏",++num));//小王cards.add(new Card("","👲",++num));//大王System.out.println("新牌是:"+cards);}public void start(){//8.洗牌,随机打乱集合中的顺序Collections.shuffle(cards);System.out.println("洗牌后:"+cards);//9.发牌:定义三个玩家Map<String,List<Card>> players=new HashMap<>();List< Card>lhc=new ArrayList<>();players.put("张三",lhc);List< Card>lhs=new ArrayList<>();players.put("李四",lhs);List< Card>lhz=new ArrayList<>();players.put("王五",lhz);//只发出51张,留三张for(int i=0;i<cards.size()-3;i++){Card card = cards.get(i);//判断当前这张牌发给谁if(i%3==0) {lhc.add(card);}else if(i%3==1){lhs.add(card);}else{lhz.add(card);}}//10.对牌排序,对牌对象进行排序sortCards(lhc);sortCards(lhs);sortCards(lhz);//11.拿走最后三种底牌List<Card> last=cards.subList(cards.size()-3,cards.size());//51,52,53System.out.println("底牌是:"+last);//12.抢地主;把集合直接给玩家lhz.addAll(last);//13.看牌,遍历Map集合for(Map.Entry<String,List<Card>> entry:players.entrySet()){//获取到玩家名称String name = entry.getKey();//获取到玩家牌List<Card> list = entry.getValue();//遍历玩家牌System.out.println(name+":"+list);}}private void sortCards(List<Card> cards) {Collections.sort(cards, new Comparator<Card>() {@Overridepublic int compare(Card o1, Card o2) {//1.先比较点数return o2.getNum()-o1.getNum();}});}
}