「java编写发牌」用java编写一个扑克牌的程序

博主:adminadmin 2023-01-18 22:42:07 283

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

本文目录一览:

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编程 做一个发牌的程序

哈哈哈,又是一个不想写作业的,先占个位置,我去看看先

密歇根科大,这个学校的cs怎么样啊,在芝加哥吗

import java.util.ArrayList;

import java.util.Collections;

import java.util.Iterator;

import java.util.List;

public class CardShuffler {

class CardArray{

ListCard cards;

Iterator itCard;

public CardArray() {

super();

}

public CardArray(ListCard cards) {

super();

this.cards = Collections.synchronizedList(new ArrayListCard());

this.cards.addAll(cards);

itCard = this.cards.iterator();

}

public CardArray initialCards(int numberOfDeck){

int xNumberOfDeck = numberOfDeck%6+1;

cards = new ArrayListCard();

for(int i=0;ixNumberOfDeck;i++){

cards.addAll(createOneDeck());

}

itCard = cards.iterator();

return this;

}

public ArrayListCard createOneDeck(){

ArrayListCard result= new ArrayListCard();

for(int j=2;j15;j++){ result.add(new Card('S',j)); }

for(int j=2;j15;j++){ result.add(new Card('H',j)); }

for(int j=2;j15;j++){ result.add(new Card('D',j)); }

for(int j=2;j15;j++){ result.add(new Card('C',j)); }

return result;

}

public CardArray CardcargetFirstHalf(){

return new CardArray(cards.subList(0, cards.size()/2));

}

public CardArray CardcargetSecondHalf(){

return new CardArray(cards.subList(cards.size()/2+1, cards.size()));

}

public synchronized ListCard getThefollowingXCards(int numberOfCard){

ListCard result = Collections.synchronizedList(new ArrayListCard());

while(getItCard().hasNext()numberOfCard0){

Card x = (Card)getItCard().next();

result.add(x);

numberOfCard--;

}

return result;

}

public String toString(){

StringBuffer sb = new StringBuffer();

for(int i = 0 ; i getCards().size() ; i++){

sb.append(getCards().get(i));

}

return sb.toString();

}

public boolean isEmpty(){

return getCards().isEmpty();

}

public void addCards(ListCard cards){

getCards().addAll(cards);

}

public void addCards(CardArray cardArray){

getCards().addAll(cardArray.getCards());

}

//getters and setters

public Iterator getItCard() {

return itCard;

}

public void setItCard(Iterator itCard) {

this.itCard = itCard;

}

public ListCard getCards() {

return cards;

}

public void setCards(ListCard cards) {

this.cards = cards;

}

}

class Card{

char type='S';//Spade,Dimond,Heart,C...

int rank=2;//A=14,K=13,Q=12,....2=2

public int getRank() {

return rank;

}

public void setRank(int rank) {

this.rank = rank;

}

public char getType() {

return type;

}

public void setType(char type) {

this.type = type;

}

public Card(char type, int rank) {

super();

this.type = type;

this.rank = rank;

}

public String toString(){

return String.valueOf(getType())+String.valueOf(getRank());

}

}

public static int calculateNextX(int lastX){

return (5*lastX)%16 + 1;

}

public void testCreateAllCards(int numberOfDeck){

CardArray tmp = new CardArray();

tmp.initialCards(numberOfDeck);

System.out.println(tmp);

}

public void halfCards(){

int numberOfDeck = 1;

CardArray tmp = new CardArray();

tmp.initialCards(numberOfDeck);

System.out.println("the first half:\n"+tmp.CardcargetFirstHalf());

System.out.println("the second half:\n"+tmp.CardcargetSecondHalf());

}

public static CardArray shuffle(CardArray cardArray,int seed){

CardArray first = cardArray.CardcargetFirstHalf();

CardArray second = cardArray.CardcargetSecondHalf();

CardArray total = null;

int numberOfCard = calculateNextX(seed);

if(first!=null!first.isEmpty()second!=null!second.isEmpty()){

total = new CardShuffler().new CardArray(first.getThefollowingXCards(numberOfCard));

total.addCards(second.getThefollowingXCards(numberOfCard));

}

while(first.getItCard().hasNext()second.getItCard().hasNext()){

numberOfCard = calculateNextX(numberOfCard);

total.addCards(first.getThefollowingXCards(numberOfCard));

total.addCards(second.getThefollowingXCards(numberOfCard));

}

/*while(first.getItCard().hasNext()){

numberOfCard = calculateNextX(numberOfCard);

total.addCards(first.getThefollowingXCards(numberOfCard));

}

while(second.getItCard().hasNext()){

numberOfCard = calculateNextX(numberOfCard);

total.addCards(first.getThefollowingXCards(numberOfCard));

}//it is not quite possible to occur the situation that one deck is more or less than the other one*/

System.out.println("shuffled cards:\n"+total.toString());

return total;

}

public static void main(String arg[]){

System.out.println(shuffle(new CardShuffler().new CardArray().initialCards(1), 23));

}

}

JAVA 编写一个发牌小程序 如何避免同一花色统一大小的牌出现

给你说说算法思路吧。(C#,不会java,不过他俩有区别么)

首先,按顺序把一副牌放入一个数组里pai[] a = new pai[54]。

然后用循环随机交换牌:

random rm = new random();

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

{

int r = rm.next(27,55);

pai tmp = a[i];

a[i] = a[r];

a[r] = a[i];

}

然后在顺次分发出去,应该可以看成分发给1个2维数组

int n;//玩家数

pai[,] wanjia = new pai[n,54/n+1];

int k=0;

for(int i=0;i54/n;i++)

{

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

{

wanjia[j,i]=a[k++];

}

}

这样就分发完成了

java如何写斗地主,只有发牌,出牌动作即可

可以采用JLabel控件,然后把控件显示为相应的图片,设一个结构体,保存各个图片控件的坐标,鼠标点击后,改变相应的图片控件的坐标,然后弄一个结构体数组储存整个牌组的的纸牌信息,调用一个封装好的显示函数,来更新一整个牌组。不知道能不能对单个牌进行鼠标响应,不过我没有想出来要怎么实现,只好每次改变都把整个牌组重绘一下。

用java程序编写一个发牌的程序。。。跪求了。。。。

1、设计二维数组a[13][4],13代表2,3,4,5,...,K,A , 4代表红黑方梅 13*4=52

2、这样a[0][0]就是红桃2,a[12][3]就是梅花A

按照这么来随机发牌就很简单了,直接随机个一个a[i][j]就可以了。i和j都分别在13和4以内

思路明确了,代码还是自己写比较好

用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编写发牌和用java编写一个扑克牌的程序的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。