模拟洗扑克牌!!

用java完成洗扑克牌的程序 (不考虑大小王)

首先用一个car[51]数组来存
数组下标  [0]..[12]   [13]..[25]   [26]..[38]   [39]..[51]
数组元素    0..12       13..25       26..38       39..51

相当于一组有13个元素,分别代表A、2、3、4、5、6、7、8、9、10、J、O、K、
接着第一组代表黑桃♠,第二组代表红心,第三组代表方块,第四组代表梅花♣

小提示:每组13个元素,则/13可以取得花色,%13可以取牌面  数的时候从0开始
计数,因为数组元素是0-51,所以/的结果只可能是0、1、2、3 与四组对应

如数组元素24: 24 / 13 == 1 所以花色是红心  24 % 13 == 11  所以牌面是11
14 15 16 17 18 19 20 21 22 23 24 25 26
A   2  3  4  5  6  7  8  9  10 J  O  K

如数组元素32: 32 / 13 == 2 所以花色是方块  32 % 13 == 6   所以牌面是6
39 40 41 42 43 44 45 46 47 48 49 50 51
k   1  2  3  4  5  6  7  8  9 10  j  O

如数组元素39:39 / 13 ==3 所以花色是梅花   39 % 13 == 0   所以牌面是K

定义牌面数组 和 花色数组
String[] cardsColors = {"黑桃","红心","方块","梅花"};
String[] cardsValues {"A","2","3","4","5","6","7","8","9","10","J","O","K"};

核心算法思想:car[51]数组随机生成0-51的随机数字(下标)newindex,现在的i和刚生
成的随机数字交换。即cards[newIndex] 和 cards[i]交换

具体代码如下:
/**
 * 
 * 用java模拟实现洗牌的过程
 * @author Monster丶ZF
 * @version1.8
 * @data 2019年4月11日
 * @remakeTODO
 */
public class ShuffleCardsDemo {
	public static void main(String[] args) {
		//牌的花色数组
				String[] cardsColors = {"黑桃","红心","方块","梅花"};
				//牌面数组
				String[] cardsValues = {
						"A","2","3","4","5","6","7","8","9","10","J","O","K"
				};
		final int N = 52;
		//52张牌
		int[] cards = new int[N];
		for (int i = 0; i < cards.length; i++) {
			cards[i] = i;      //牌面与循环变量的值一致,0-51之间	
		}
		System.out.println("洗牌前:");
		for (int i = 0; i < cards.length; i++) {
			//System.out.print(cards[i]);	
			System.out.printf("%s-%s",cardsColors[cards[i] / 13],cardsValues[cards[i] % 13] );
			if((i + 1) % 13 == 0){
				System.out.println();
			}else{
				System.out.print("\t");
			}
		}
		System.out.println();
		
		//洗牌:随机生成一个0-51之间的数字(数字下标)newIndex,	cards[i]和cards[newIndex]
		for (int i = 0; i < cards.length; i++) {
			int newIndex = (int)(Math.random()*1000) % N;  //  0-51之间的随机数字
			int temp = cards[i];
			cards[i] = cards[newIndex];
			cards[newIndex] = temp;     //地址不会变,就是数字变了,牌面就变了	
		}
		
		System.out.println("洗牌后:");
		for (int i = 0; i < cards.length; i++) {
			//System.out.print(cards[i]);
			System.out.printf("%s-%s",cardsColors[cards[i] / 13],cardsValues[cards[i] % 13] );
			if((i + 1) % 13 == 0){
				System.out.println();
			}else{
				System.out.print("\t");
			}
			
		}
		

	}

}

猜你喜欢

转载自blog.csdn.net/w15977858408/article/details/89203038