package card;
創(chuàng)新互聯(lián)主營(yíng)達(dá)茂旗網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,成都App制作,達(dá)茂旗h5小程序設(shè)計(jì)搭建,達(dá)茂旗網(wǎng)站營(yíng)銷(xiāo)推廣歡迎達(dá)茂旗等地區(qū)企業(yè)咨詢
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]);
}
}
}
import?java.util.*;
public?class?Main?{
public?static?void?main(String[]?args)?{
Scanner?scanner?=?new?Scanner(System.in);
ListString?list?=?new?ArrayListString();
while?(scanner.hasNextLine())?{
String?string?=?scanner.nextLine();
list.add(string);
if?(list.size()?==?5)?{
int?r?=?getCard(list);
System.out.println(r);
list.clear();
}
}
}
private?static?int?getCard(ListString?list)?{
int?temp?=?7;
int?size?=?list.size();
ListString?numList?=?new?ArrayListString();
SetString?numSet?=?new?TreeSetString();
ListString?colourList?=?new?ArrayListString();
SetString?colourSet?=?new?TreeSetString();
for?(int?i?=?0;?i??list.size();?i++)?{
String?num?=?list.get(i).split("?")[0];
String?colour?=?list.get(i).split("?")[1];
if?(num.equals("J"))?{
numList.add("11");
numSet.add("11");
}?else?if?(num.equals("Q"))?{
numList.add("12");
numSet.add("12");
}?else?if?(num.equals("K"))?{
numList.add("13");
numSet.add("13");
}?else?if?(num.equals("A"))?{
numList.add("14");
numSet.add("14");
}?else?{
numList.add(num);
numSet.add(num);
}
colourList.add(colour);
colourSet.add(colour);
}
//?同花順,或者同花
if?(colourSet.size()?==?1)?{
Collections.sort(numList);
for?(int?i?=?0;?i??numList.size()?-?1;?i++)?{
if?(Integer.parseInt(numList.get(i?+?1))?-?Integer.parseInt(numList.get(i))?==?1)?{
if?(i?==?numList.size()?-?2)?{
temp?=?1;
}
continue;
}?else?{
if?(temp??4)?{
temp?=?4;
}
}
}
}
//?四條或者葫蘆
if?(numSet.size()?==?2)?{
Collections.sort(numList);
//?四條
if?(!numList.get(0).equals(numList.get(1))?||?!numList.get(size?-?1).equals(numList.get(size?-?2)))?{
if?(temp??2)?{
temp?=?2;
}
}?else?{
if?(temp??3)?{
temp?=?3;
}
}
}
//?三條
if?(numSet.size()?==?3)?{
if?(temp??6)?{
temp?=?6;
}
}
//?順子
if?(colourSet.size()??1)?{
Collections.sort(numList);
for?(int?i?=?0;?i??numList.size()?-?1;?i++)?{
if?(Integer.parseInt(numList.get(i?+?1))?-?Integer.parseInt(numList.get(i))?==?1)?{
if?(i?==?numList.size()?-?2)?{
if(temp5){
temp?=?5;
}
}
}?else?{
break;
}
}
}
return?temp;
}
}
撲克牌有兩個(gè)屬性,花色和牌面大小,可以分別比較花色和牌面大小是否遞增或遞減來(lái)確定是不是同花順.但是由于撲克牌會(huì)有JQKA,所以牌面大小最好以數(shù)組或者字符串的方式實(shí)現(xiàn),通過(guò)比較下標(biāo)來(lái)比較大小,以下是大概的代碼
public?class?PuKe?{
private?String?color;
private?String?num;
public?String?getColor()?{
return?color;
}
public?void?setColor(String?color)?{
this.color?=?color;
}
public?String?getNum()?{
return?num;
}
public?void?setNum(String?num)?{
this.num?=?num;
}
public?PuKe(String?color,?String?num)?{
super();
this.color?=?color;
this.num?=?num;
}
public?static?void?main(String[]?args)?{
ListPuKecard?=?new?ArrayListPuKe();
card.add(new?PuKe("black",?"2"));
card.add(new?PuKe("black",?"3"));
card.add(new?PuKe("black",?"4"));
card.add(new?PuKe("black",?"5"));
card.add(new?PuKe("black",?"6"));
//這里因?yàn)?0是兩位數(shù)且牌面里面用不到1,所以直接用1代替10
String?check?=?"234567891JQKA";
boolean?flage?=true;
//自定義比較器,用num在check里的下標(biāo)大小作為比較依據(jù)排序
Collections.sort(card,?new?ComparatorObject()?{
@Override
public?int?compare(Object?o1,?Object?o2)?{
PuKe?er1?=?(PuKe)?o1;
PuKe?er2?=?(PuKe)?o2;
Integer?org1?=?(int)(er1.getNum()?==?null???0.0?:?check.indexOf(er1.getNum()));
Integer?org2?=?(int)(er1.getNum()?==?null???0.0?:?check.indexOf(er2.getNum()));
return?org1.compareTo(org2);
}
});
for?(int?i?=?0;?i??card.size()-1;?i++)?{
//遍歷所有的牌,如果顏色不一樣直接跳出循環(huán),不是同花順
if(!card.get(i).getColor().equals(card.get(i+1).getColor())){
flage?=false;
break;
}
//如果上一張減去下一張的差值不是1,說(shuō)明牌面不是順子,也不是同花順,跳出循環(huán)
if((int)check.indexOf(card.get(i+1).getNum())-(int)check.indexOf(card.get(i).getNum())!=1){
flage?=?false;
break;
}
}
if(flage){
System.out.println("牌面是同花順");
}else{
System.out.println("牌面不是同花順");
}
}
}
不過(guò)這種方法唯一不好的地方是check中不能直接用10,將來(lái)展示的時(shí)候需要判定,展示的是1時(shí)直接改成10.
其實(shí)實(shí)現(xiàn)方法很多,我這么寫(xiě)是因?yàn)樽罱趶?fù)習(xí),這么寫(xiě)用到的知識(shí)點(diǎn)相對(duì)會(huì)多一點(diǎn).
本文題目:紙牌比大小java代碼 撲克牌比大小java編程
標(biāo)題網(wǎng)址:http://muchs.cn/article20/doeiijo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、網(wǎng)站維護(hù)、靜態(tài)網(wǎng)站、、營(yíng)銷(xiāo)型網(wǎng)站建設(shè)、網(wǎng)站排名
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容