目标:斗地主游戏的案例开发
业务需求分析:
斗地主的做牌,洗牌,发牌。
业务:总共有54张牌。
点数: “3”,“4”,“5”,“6”,“7”,“8”,“9”,“10”,“J”,“Q”,“K”,“A”,“2”
花色: “♠”, “♥”, “♣”, “♦”
大小王: “?” , “?”
点数分别要组合4种花色,大小王各一张。
斗地主:发出51张牌,剩下3张作为底牌。
功能:
1.做牌。
2.洗牌
3.定义3个玩家。
4.发牌。
5.看牌。
public class GameDemo {
// a.定义一个集合存储做好的54张牌:♠3 ,♠4。
public static List<Card> cards = new ArrayList<>();
static {
/** 1.做牌。54张牌做好放到cards集合中去 */
// 定义点数:类型确定了,个数确定了。应该用数组
String[] sizes = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
// 定义花色:类型确定了,个数确定了。应该用数组
String[] colors = {"♠", "♥", "♣", "♦"};
// 先遍历点数,再遍历花色组合牌对象
for(String size : sizes){
for(String color : colors){
// 创建一个牌对象
Card card = new Card(size , color);
// 把这张牌放到集合中存储起来
cards.add(card);
}
}
// 单独创建大小王对象 :"?" , "?"
cards.add(new Card("","?" ));
cards.add(new Card("","?" ));
System.out.println("新牌:"+cards);
}
public static void main(String[] args) {
/** 2.洗牌:就是把牌的顺序打乱 */
// public static void shuffle(List<?> list) :打乱List集合的顺序。
Collections.shuffle(cards);
System.out.println("洗牌后:"+cards);
/** 3.定义3个玩家。*/
List<Card> linghuChong = new ArrayList<>();
List<Card> renYingYing = new ArrayList<>();
List<Card> dongFangBuBai = new ArrayList<>();
/** 4.发牌:把洗后的牌依次发出51张出去,剩余三张作为底牌 */
// cards = [♥3, ♠8, ♦8, ♠K, ♦7, ♥6, ♣6, ♣9, ♦4,....
// i 0 1 2 3 4 5 6 7 8 % 3
for(int i = 0 ; i < cards.size() - 3 ; i++ ){
Card c = cards.get(i);
if(i % 3 == 0 ) {
// 请令狐冲接牌
linghuChong.add(c);
}else if( i % 3 == 1){
// 请盈盈接牌
renYingYing.add(c);
}else if(i % 3 == 2){
// 请东方不败接牌
dongFangBuBai.add(c);
}
}
/** 5.看牌。*/
System.out.println("冲冲:"+linghuChong);
System.out.println("盈盈:"+renYingYing);
System.out.println("东方:"+dongFangBuBai);
// System.out.println("底牌:"+cards.get(53)+"->"+cards.get(52)+"->"+cards.get(51));
// 拓展:截取最后三张底牌!
List<Card> lastThreeCards = cards.subList(cards.size()-3 , cards.size());
System.out.println("底牌:"+lastThreeCards);
}
}
public class Card {
// 点数
private String size;
// 花色
private String color;
public Card() {
}
public Card(String size, String color) {
this.size = size;
this.color = color;
}
public String getSize() {
return size;
}
public void setSize(String size) {
this.size = size;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
@Override
public String toString() {
return color+size;
}
}