題目:模擬撲克牌發牌,每位玩家發兩張牌。
public class TestPoker {
//存取出現過幾次的陣列
int[][] poker =new int[4][13];
//四種花色的陣列
String[] pokersign = {“Spade","Heart","Diamond","Club"};
//發牌方法
public void Go() {
//重複發牌(for迴圈)
for(int i =1;i<=4;i++) { //i為玩家人數
if(i<=26) { //至多只能26位玩家
int sign = (int)(Math.random()4); //花色隨機
int sign2 = (int)(Math.random()4);//花色隨機
int number = (int)(Math.random()13); //數字隨機
int number2 = (int)(Math.random()13); //數字隨機
if(sign!=sign2||number!=number2) { //同時發出的兩張牌不能相等
if((poker[sign][number]==0)&&(poker[sign2][number2]==0)) {
//二維陣列上記數0的兩張牌才能發出
System.out.printf(“發給玩家%d的撲克牌花色為%s%2d 和%s%2d\n",i,pokersign[sign],number+1,pokersign[sign2],number2+1);
poker[sign][number]++; //發過的在二維陣列上記數
poker[sign2][number2]++; //發過的在二維陣列上記數
}else {
i–; //出現二維陣列上記數過的牌時迴圈倒回去重做
}
}else {
i–; //出現兩張一樣的牌時迴圈倒回去重做
}
}else { //超過26位的玩家
System.out.printf(“第%2d位玩家沒牌了不准玩!\n",i);
}
}
}
public static void main(String[] args) {
TestPoker test1 = new TestPoker();
test1.Go();
}
Output:
發給玩家1的撲克牌花色為Club11和Diamond10
發給玩家2的撲克牌花色為Club 5和Club13
發給玩家3的撲克牌花色為Club 1和Club 6
發給玩家4的撲克牌花色為Spade10和Heart10