「java发牌」发牌java程序代码

博主:adminadmin 2023-03-19 06:02:05 608

今天给各位分享java发牌的知识,其中也会对发牌java程序代码进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

用java ArrayList集合编写扑克牌洗牌与发牌

import java.util.ArrayList;

import java.util.Random;

public class PokerDemo {

ArrayListCard poker = new ArrayListCard();

Player[] players;

int n = 4;

String[] name = {"Wang", "Zhang", "Li", "Yuan"};

public PokerDemo() {

players = new Player[n];

for(int i = 0; i players.length; i++)

players[i] = new Player(name[i]);

for(int i = 0; i 4; i++)

for(int j = 0; j 13; j++)

poker.add(new Card(i, j));

System.out.println("洗牌前: " + poker);

xipai();

System.out.println("洗牌后: " + poker);

fapai();

System.out.println("发牌后: ");

for(int i = 0; i players.length; i++)

System.out.println(players[i]);

}

public void xipai() {

Random r = new Random();

ArrayListCard tmp = new ArrayListCard();

while(!poker.isEmpty()) {

int index = r.nextInt(poker.size());

Card card = poker.get(index);

tmp.add(card);

poker.remove(index);

}

poker = new ArrayListCard(tmp);

}

public void fapai() {

int p = 0;

while(!poker.isEmpty()) {

Card card = poker.get(0);

players[p].add(card);

p = (p + 1) % n;

poker.remove(0);

}

}

public static void main(String[] args) {

new PokerDemo();

}

}

class Card {

int val, sty;

final String[] value = {"A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"};

final String[] style = {"黑桃", "红心", "梅花", "方块"};

public Card(int s, int v) {

sty = s;

val = v;

}

public String toString() {

return style[sty]+ " " + value[val];

}

}

class Player {

ArrayListCard cards = new ArrayListCard();

String name;

public Player(String n) {

name = n;

}

public void add(Card card) {

cards.add(card);

}

public String toString() {

return name + ":\t" + cards;

}

}

java斗地主发牌程序

DeckOfCards()构造函数里面,注释掉的

//deck[count]=new Card(faces[count%13],suits[count/13]);

是对的,下面那行除17是错的

另外,没有把大小王赋值到数组里

最后main函数里,打印方法错了。应该为,原本少了一个%-20s

System.out.printf("%-20s%-20s%-20s\n", myDeckOfCards.dealCard(), myDeckOfCards.dealCard(), myDeckOfCards.dealCard());

发牌完成以后剩下的3张牌就是保留的底牌

用java写发牌程序 a.108张牌发给6个人 b.找出6个人中对子数最多的人 简洁清晰的代码

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) {

LinkedListInteger card = new LinkedListInteger();

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;i6;++i){

p[i] = new Player();

}

while(max  0){//发牌

for(int m = 0;m6;++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;w6;++w)

pp[w] = p[w].pairs();

Arrays.sort(pp);

for(int e = 0;e6;++e){

if(p[e].pairs()==pp[5])

System.out.println("第"+e+"位玩家获胜了");

}

}

}

class Player{

public LinkedListInteger myCard;

public String name;

public Player(){

myCard = new LinkedListInteger();

}

public int pairs(){

int sum = 0;

if(myCard != null){

LinkedListInteger tempCard = myCard;

IteratorInteger 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;jin;++j){

if((int)tempCard.get(i) == (int)tempCard.get(j)){

++sum;

    c = j;

    break;

}

}

}

}

}

return sum;

}

}

java发牌的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于发牌java程序代码、java发牌的信息别忘了在本站进行查找喔。