「java生成纸牌」java互换纸牌
本篇文章给大家谈谈java生成纸牌,以及java互换纸牌对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、JAVA中随机生成各有13张扑克牌(每张牌从“A”到“K”)的两组,比较两组数对应位置上牌点数大小的程序?
- 2、java怎样从54张扑克牌中随机产生五张 不重复的
- 3、求助:用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互换纸牌的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-11-22,除非注明,否则均为
原创文章,转载请注明出处。