Java扑克牌洗牌代码


public class p18 {

	public static void main(String[] args) {
		//扑克牌洗牌 52张
		//数组下标就是值
		//0--12   13--25  26--38    39--51
		//黑桃,       红心,      方块,      梅花
		
		//每组13个元素, 元素 / 13 =花色
		//元素 % 13 = 牌面数值
		
		//生成一个0--51的随机数字 然后交换值就洗牌了
		
		//牌的花色数组
		String[] cardcolor = {"黑桃", "红心", "方块", "梅花"};
		//牌面数值
		String[] cardvalue = {"A","2","3","4","5","6","7","8","9","10","K","Q","J"};

		final int n = 52;   //52张牌
		int[] cards = new int[n];

		//把cards数组赋值 新牌
		for (int i = 0; i < cards.length; i++) {
			cards[i] = i;	
		}
		
		

		//洗牌前的打印出来
		System.out.println("洗牌前: ");
		for (int i = 0; i < cards.length; i++) {
			  
			System.out.printf("[%d] %s-%s  ,",cards[i],cardcolor[i / 13],cardvalue[i%13]);
		}
		System.out.println("");
		System.out.println("洗牌后: ");
		
		
		//进行洗牌
		//随机生成0--51之间的数字newIndex; cards[i]和cards[newIndes]交换
		for (int i = 0; i < cards.length; i++) {
			int newIndex = (int)(Math.random() * n); //生成随机数
			int temp = cards[i];
			cards[i] = cards[newIndex];  //交换牌的位置
			cards[newIndex] = temp;
		} 
		
		//洗牌后打印出来
		for (int i = 0; i < cards.length; i++) {
			
					
			System.out.printf("[%d] %s-%s  ,",cards[i],cardcolor[cards[i]/ 13],cardvalue[cards[i]%13]);
		}
	}

}


  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个简单的 Java 扑克牌游戏的示例代码: ```java import java.util.ArrayList; import java.util.Collections; // 定义扑克牌类 class Card { private String suit; // 花色 private String rank; // 点数 public Card(String suit, String rank) { this.suit = suit; this.rank = rank; } public String getSuit() { return suit; } public String getRank() { return rank; } @Override public String toString() { return suit + rank; } } // 定义扑克牌游戏类 class PokerGame { private ArrayList<Card> deck; // 扑克牌 public PokerGame() { deck = new ArrayList<>(); // 初始化扑克牌 String[] suits = {"♠", "♥", "♣", "♦"}; String[] ranks = {"A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"}; for (String suit : suits) { for (String rank : ranks) { Card card = new Card(suit, rank); deck.add(card); } } } // 洗牌 public void shuffleCards() { Collections.shuffle(deck); } // 发牌 public void dealCards(int numPlayers) { int totalCards = numPlayers * 5; // 每个玩家发5张牌 if (totalCards > deck.size()) { System.out.println("扑克牌不足!"); return; } for (int i = 0; i < numPlayers; i++) { System.out.print("玩家 " + (i+1) + ": "); for (int j = 0; j < 5; j++) { Card card = deck.remove(0); System.out.print(card + " "); } System.out.println(); } } } // 测试扑克牌游戏 public class Main { public static void main(String[] args) { PokerGame game = new PokerGame(); game.shuffleCards(); game.dealCards(4); } } ``` 这个代码中,`Card` 类表示扑克牌,有花色和点数两个属性。`PokerGame` 类表示扑克牌游戏,包括初始化扑克牌洗牌和发牌等操作。在 `main` 方法中,创建一个 `PokerGame` 对象,然后调用 `shuffleCards` 方法洗牌,最后调用 `dealCards` 方法发牌给4个玩家(每个玩家发5张牌)。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值