按照斗地主的规则,完成洗牌发牌的动作。
具体规则:使用54张牌打乱顺序,三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌。
准备牌: 牌可以设计为一个ArrayList,每个字符串为一张牌。 每张牌由花色 数字两部分组成,可以使用 花色集合 与 数字集合 嵌套迭代完成每张牌的组装。
牌由Collections类的shuffle方法进行随机排序。
发牌 : 将每个人以及底牌设计为ArrayList集合,将最后3张牌直接存放于底牌,剩余牌通过对3取模依次发牌。
看牌 : 直接打印每个集合。
package Demo09
import java.util.ArrayList
import java.util.Collections
public class Poker {
public static void main(String[] args) {
/*
* 1: 准备牌操作
*/
//1.1 创建一个装牌的容器 将来存储每一张牌的
ArrayListString pokerBox = new ArrayListString()
//1.2 创建花色的集合
ArrayListString flowers = new ArrayListString()
//1.3 创建数字的集合 为什么是String不是Integer 因为扑克里的JQKA没用数字表示
ArrayListString numbers = new ArrayListString()
//1.4 分别给花色 以及 数字集合添加元素
flowers.add("♥")
flowers.add("♦")
flowers.add("♠")
flowers.add("♣")
for(int i = 2i=10i++){
numbers.add(i+" ")//这里将2~10用字符串表示即加“ ”
}
//数字集合添加J,Q,K,A
numbers.add("J")
numbers.add("Q")
numbers.add("K")
numbers.add("A")
//1.5 创造牌即拼接牌,将花色和数字拼接组建每一张牌
// 拿出每一个花色 然后跟每一个数字 进行结合 存储到装牌的容器中
//用增强for循环,数字循环在里在外都可以
for (String flower : flowers) {
//flower每一个花色
//遍历数字集合
for(String number : numbers){
//结合
String card = flower+number
//存储到装牌的容器中
pokerBox.add(card)
}
}
//用普通的for循环来实现
/* for (int i = 0 i flowers.size() i++) {
for (int j = 0 j numbers.size() j++) {
String card= flowers.get(i)+numbers.get(j)
pokerBox.add(card)
}
}*/
//1.6添加大王小王
pokerBox.add("小☺")
pokerBox.add("大☠")
// System.out.println(pokerBox)
//2:洗牌 将容器里的牌的索引打乱
Collections.shuffle(pokerBox)
//3 发牌
//3.1 创建 三个 玩家集合 再创建一个底牌集合
ArrayListString player1 = new ArrayListString()
ArrayListString player2 = new ArrayListString()
ArrayListString player3 = new ArrayListString()
ArrayListString dipai = new ArrayListString()
//遍历装牌容器 必须知道索引
for(int i = 0ipokerBox.size()i++){
//获取 每一张牌
String card = pokerBox.get(i)
//留出三张底牌 存到 底牌集合中
if(i=51){//存到底牌集合中,一定要把判断底牌放在前面
dipai.add(card);
} else {
//玩家1 %3 ==0
if(i%3==0){
player1.add(card);
}else if(i%3==1){//玩家2
player2.add(card);
}else{//玩家3
player3.add(card);
}
}
}
//看看
System.out.println("刘备:"+player1);
System.out.println("关羽:"+player2);
System.out.println("张飞:"+player3);
System.out.println("底牌:"+dipai);
}
}运行结果:
————————————————
版权声明:本文为CSDN博主「DearNingning」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:java小游戏之斗地主_DearNingning的博客-CSDN博客
游戏问答
原文标题:java小游戏之斗地主
|