「java生成纸牌」java互换纸牌

博主:adminadmin 2022-11-22 11:27:06 74

本篇文章给大家谈谈java生成纸牌,以及java互换纸牌对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

JAVA中随机生成各有13张扑克牌(每张牌从“A”到“K”)的两组,比较两组数对应位置上牌点数大小的程序?

package card;

import java.util.Hashtable;

public class Card {

/**

* 0:方块 3:黑桃 4:王

*/

public static final int DIAMODE=0;

/**1:梅花*/

public static final int CLUB=1;

/**2:红桃*/

public static final int HEART=2;

/**3:黑桃*/

public static final int SPADE=3;

/**4:王*/

static final int WANG=4;

/**0:方块 3:黑桃 4:王*/

private static String[] SUIT_NAMES=new String[]{"方块","梅花","红桃","黑桃","王"};

public static final int THREE=0;

public static final int FOUR=1;

public static final int FIVE=2;

public static final int SIX=3;

public static final int SEVEN=4;

public static final int EIGHT=5;

public static final int NINE=6;

public static final int TEN=7;

public static final int JACK=8;

public static final int QUEEN=9;

public static final int KING=10;

public static final int ACE=11;

public static final int DUCK=12;

public static final int BALCK=13;

public static final int COLOR=14;

public static String[] RANK_NAMES=new String[]{"3","4","5","6","7"

,"8","9","10","J","Q","K","A","2","小","大"};

private int suit,rank;

// private static class Entry{

// private String name;

// private int value;

// public Entry(String name,int value) {

// this.name=name;

// this.value=value;

// }

// public int getValue() {

// return value;

// }

// public void setValue(int value) {

// this.value = value;

// }

// @SuppressWarnings("unused")

// public String getName() {

// return name;

// }

// @SuppressWarnings("unused")

// public void setName(String name) {

// this.name = name;

// }

// }

//public static Entry[] table = new Entry[120];

static HashtableString, Integer table = new HashtableString,Integer();

static{

for (int i = 0; i SUIT_NAMES.length; i++) {

// Entry entry = new Entry(SUIT_NAMES[i],i);

// table[SUIT_NAMES[i].hashCode()%120]=entry;

table.put(SUIT_NAMES[i], i);

}

for (int i = 0; i RANK_NAMES.length; i++) {

//Entry entry = new Entry(RANK_NAMES[i],i);

//table[RANK_NAMES[i].hashCode()%120]=entry;

table.put(RANK_NAMES[i], i);

}

}

public int getSuit() {

return suit;

}

public void setSuit(int suit) {

this.suit = suit;

}

public int getRank() {

return rank;

}

public void setRank(int rank) {

this.rank = rank;

}

public Card(int suit,int rank) {

setSuit(suit);

setRank(rank);

}

public Card(String strName){

String suitName;

String rankName;

if(strName.endsWith("王")){

suitName=strName.substring(1);

rankName=strName.substring(0,1);

}else{

suitName=strName.substring(0,2);

rankName=strName.substring(2);

}

setSuit(findSuit(suitName));

setRank(findRank(rankName));

}

private int findSuit(String suitName) {

//return table[suitName.hashCode()%120].getValue();

return table.get(suitName);

}

private int findRank(String rankName) {

return table.get(rankName);

}

@Override

public String toString() {

if(suit==Card.WANG)

return RANK_NAMES[rank]+SUIT_NAMES[suit];

return SUIT_NAMES[suit]+RANK_NAMES[rank];

}

@Override

public boolean equals(Object obj) {

if(obj==null)

return false;

if(obj==this)

return true;

if(obj instanceof Card){

Card other=(Card)obj;

return other.rank==rank other.suit==suit;

}

return false;

}

@Override

public int hashCode() {

return rank*10+suit;

}

}

/*************************************************************************************/

package card;

import java.util.ArrayList;

import java.util.Collections;

import java.util.Iterator;

import java.util.List;

public class CardDemo {

/**

* @param args

*/

public static void main(String[] args) {

// Card c=new Card(Card.HEART,Card.THREE);

// System.out.println(c.toString());

// c=new Card("黑桃A");

// System.out.println(c.toString());

ListCard cards = new ArrayListCard();

for (int i = 0; i = Card.DUCK; i++) {

for (int j = 0; j = Card.SPADE; j++) {

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

}

}

cards.add(new Card("小王"));

cards.add(new Card("大王"));

// Random r = new Random();

// for (int i =1; i cards.size(); i++) {

// int j=r.nextInt(i);

// Card temp=cards.get(i);

// cards.set(i, cards.get(j));

// cards.set(j, temp);

// }

Collections.shuffle(cards);

System.out.println(cards.toString());

Player[] players = new Player[3];

players[0] = new Player(0, "萧炎");

players[1] = new Player(1, "罗峰");

players[2] = new Player(2, "小胖");

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

// players[i%players.length].add(cards.get(i));

// }

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

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

// }

IteratorCard ite = cards.iterator();

int c=0;

while(ite.hasNext()){

players[(c++)%players.length].add(ite.next());

ite.remove();

}

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

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

}

}

}

java怎样从54张扑克牌中随机产生五张 不重复的

例如:有数组a = [1,2,3,4,5,6,7,8,9,10],使用首先产生一个0~10(不包含10)的随机数,用来做数组下标。

Random r = new Random();

int rand = r.nextInt(10);//0~10之间的随机数,但不包含10。

假如rand=3。我们把a[3]放到之前创建好的数组里,你要取5张牌,这个数组就5个长。

然后把a[3]与a[9]的位置交换,交换之后的数组为a=[1,2,3,10,5,6,7,8,9,4]

再次获取随机数,但这里获取的是0~9之间的随机数。

int rand = r.nextInt(9);

rand的值不可能是9,那么下标为9的元素就不可能出现,也就不会重复。

假如这次rand=6,再把a[6]放到之前创建好的数组里。

再把a[6]与a[8]交换,交换之后的数组为a=[1,2,3,10,5,6,9,8,7,4]

再获取随机数时int rand = r.nextInt(8),那么rand就不可能是8或9。以此类推。

===========

import java.util.Arrays;

import java.util.Random;

public class Test {

public static void main(String[] args) {

int[] puKe = new int[54];

for(int i = 0; i puKe.length; i++) {

puKe[i] = i + 1;

}

int[] pai = faPai(puKe, 5);

Arrays.sort(pai);

System.out.println(Arrays.toString(pai));

}

public static int[] faPai(int[] puKe, int num) {

int[] pai = new int[num];//用来装载取出的牌,5个长。

int m = 0;//一共取5张,m表示当前取到第几张

int n = puKe.length;//随机数的范围,默认是0~n之间取随机数

Random r = new Random();

for(int i = 0; i num; i++, n--) {

int rand = r.nextInt(n);//rand为0~n之间的随机数

pai[m++] = puKe[rand];//用随机数做下标,把牌放到pai数组中,然后m++

// rand位置上的牌与n-1位置上的牌交换,因为n再自减,所以n-1也在自减。

int temp = puKe[n - 1];

puKe[n - 1] = puKe[rand];

puKe[rand] = temp;

}

return pai;

}

}

=============

如果你有扑克牌图片,那么就可以把获取到的int[]中的元素做为图片数组的下标了。

求助:用java实现的纸牌游戏

用一个list放这52个元素,每个人随机一个数作为list下标发牌,发掉的牌就从list中remove掉

小写了个来耍:

public static void main(String[] args) {

ArrayListString list = new ArrayListString();

for (int i = 1; i = 13; i++) {//生成牌堆

list.add("红心" + i);

list.add("黑桃" + i);

list.add("梅花" + i);

list.add("方块" + i);

}

ArrayListString lista = new ArrayListString();//生成牌友

ArrayListString listb = new ArrayListString();

ArrayListString listc = new ArrayListString();

ArrayListString listd = new ArrayListString();

while (list.size() 1) {

lista.add(find(list));

listb.add(find(list));

listc.add(find(list));

listd.add(find(list));

}

System.out.println("甲:" + lista.toString());

System.out.println("乙:" + listb.toString());

System.out.println("丙:" + listc.toString());

System.out.println("丁:" + listd.toString());

}

public static String find(ArrayListString list) {

Random random = new Random();

int m = list.size() - 1;//随机数范围为0到剩余牌数量-1

if (m == 0)//对最后一张牌处理

return list.get(0);

int index = Math.abs(random.nextInt()) % m;

String str = list.get(index);

list.remove(index);

return str;

}

关于java生成纸牌和java互换纸牌的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-11-22,除非注明,否则均为首码项目网原创文章,转载请注明出处。