用java写发牌程序 a.108张牌发给6个人 b.找出6个人中对子数最多的人 简洁清晰的代码
用java写发牌程序a.108张牌发给6个人b.找出6个人中对子数最多的人简洁清晰的代码最好有注释...
用java写发牌程序 a.108张牌发给6个人 b.找出6个人中对子数最多的人 简洁清晰的代码最好有注释
展开
1个回答
展开全部
import java.util.Arrays;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.Random;
public class Licensing {
public static void main(String[] args) {
LinkedList<Integer> card = new LinkedList<Integer>();
int max = 108;
Random r = new Random();
/*下边的代码是定义一副牌*/
for(int i = 0;i < 8;++i)
for(int j = 1;j <= 13;++j)
card.add(j);
for(int k = 0;k < 2;++k){
card.add(14);
card.add(15);
}
Player[] p = new Player[6];//定义六个玩家
for(int i = 0;i<6;++i){
p[i] = new Player();
}
while(max > 0){//发牌
for(int m = 0;m<6;++m){
int index = r.nextInt(max);
max--;
if(max < 0)
break;
Integer a = card.get(index);
card.remove(a);
p[m].myCard.add(a);
}
}
int[] pp = new int[6];
for(int w = 0;w<6;++w)
pp[w] = p[w].pairs();
Arrays.sort(pp);
for(int e = 0;e<6;++e){
if(p[e].pairs()==pp[5])
System.out.println("第"+e+"位玩家获胜了");
}
}
}
class Player{
public LinkedList<Integer> myCard;
public String name;
public Player(){
myCard = new LinkedList<Integer>();
}
public int pairs(){
int sum = 0;
if(myCard != null){
LinkedList<Integer> tempCard = myCard;
Iterator<Integer> it = tempCard.iterator();
int in = 0;
if(myCard != null){
while(it.hasNext()){
it.next();
++in;
}
int c =-1;
for(int i = 0;i < in;++i){
if(i == c)
continue;
for(int j = i+1;j<in;++j){
if((int)tempCard.get(i) == (int)tempCard.get(j)){
++sum;
c = j;
break;
}
}
}
}
}
return sum;
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询