java扑克牌代码大全 java扑克牌顺子

java的问题(扑克牌)代码仅供参考java扑克牌代码大全 , 如有疑问java扑克牌代码大全,欢迎追问java扑克牌代码大全:
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
/**
* 随机扑克牌
* @author STONE
* @version 2015-10-28
*/
public class Poker {
//用于记录丢失的手牌数
private static Integer lostTotal = 0;
//用于存放已下发的扑克
private static Integer[] its1 = new Integer[54];
//用于存放当前的扑克
private static Integer[] its2 = new Integer[54];
private static ListInteger lostList = new ArrayListInteger();
public static void main(String[] args) {
Scanner scn = new Scanner(System.in);
for(int i=0;i54;i){
its1[i] = 0;
its2[i] = 0;
}
System.out.println("系统开始发牌...");
givePoker(5);
System.out.println("发牌完毕java扑克牌代码大全 , 当前手牌为:");
printPoker(its2);
Integer gameTotal = 0;
while(gameTotal10){//循环跑10次,请注意此处发牌没做限制 , 如果循环次数过大,会导致死循环
System.out.println("请输入需要丢弃的手牌(多张牌格式如下:黑桃1,黑桃2,黑桃3):");
String lost = scn.nextLine();
checkLost(lost);
System.out.println("丢失手牌完毕,当前手牌:");
printPoker(its2);
System.out.println("系统开始重发手牌...");
givePoker(lostTotal);
System.out.println("重发发牌完毕,当前手牌为:");
printPoker(its2);
gameTotal;
}
scn.close();
}
public static void givePoker(Integer num){//随机分发手牌
int total = 0;
while(totalnum){
int poke = (int)(Math.random()*54);
if(its1[poke] == 0){
its1[poke] = 1;
its2[poke] = 1;
total;
}
}
lostTotal = 0;
}
public static Boolean checkLost(String lost){//检查需要丢失的手牌
if(lost==null || lost.equals("")){
System.out.println("输入手牌错误,系统无法处理...");
return false;
}
if(lost.indexOf("黑桃")0lost.indexOf("红心")0lost.indexOf("梅花")0lost.indexOf("方块")0){
System.out.println("输入手牌错误,系统无法处理...");
return false;
}
String[] strs = lost.split(",");
Boolean bol = false;
for(String str : strs){
str = str.trim();
if(str==null || str.equals("")) continue;//去掉 , 防止空格
bol = getPokerNum(str);
}
if(bol){
losePoker();
}
return false;
}
public static void losePoker(){//丢掉手牌
lostTotal = lostList.size();
for(Integer itr : lostList){//丢掉手牌
its2[itr-1] = 0;
}
lostList = new ArrayListInteger();
}
public static Boolean getPokerNum(String str){//获取手牌点数并去掉
try{
Integer itr = 0;
if(str.indexOf("黑桃")==0){
str = str.replace("黑桃", "");
itr = Integer.parseInt(str);
if(itr13){
System.out.println("输入手牌不存在:黑桃" str);
return false;
}
if(its2[itr-1]==1){
lostList.add(itr);
}
} else if(str.indexOf("红心")==0){
str = str.replace("红心", "");
itr = Integer.parseInt(str);
if(itr13){
System.out.println("输入手牌不存在:红心" str);
return false;
}
if(its2[itr 12]==1){
lostList.add(itr 13);
}
} else if(str.indexOf("梅花")==0){
str = str.replace("梅花", "");
itr = Integer.parseInt(str);
if(itr13){
System.out.println("输入手牌不存在:梅花" str);
return false;
【java扑克牌代码大全 java扑克牌顺子】}
if(its2[itr 25]==1){
lostList.add(itr 26);
}
} else if(str.indexOf("方块")==0){
str = str.replace("方块", "");
itr = Integer.parseInt(str);
if(itr13){
System.out.println("输入手牌不存在:方块" str);
return false;
}
if(its2[itr 38]==1){
lostList.add(itr 39);
}
} else if(str.indexOf("小王")==0){
if(its2[52]==1){
lostList.add(53);
}
} else if(str.indexOf("大王")==0){
if(its2[53]==1){
lostList.add(54);
}
}
return true;
} catch( Exception e ){
System.out.println("输入手牌有误...");
return false;
}
}
public static void printPoker(Integer[] its){//打印当前手牌
String result = "";
for(int i=0;iits.length;i){
if(its[i]==1){//等于1表示当前手牌存在
result =pukerCheck(i 1) ",";
}
}
System.out.println(result);
}
public static String pukerCheck(Integer itr){//判断扑克类型
/**
* 1~13黑桃花色、14~26红心花色、27~39梅花花色
* 40~52方块花色、53小王、54大王
*/
if(1=itritr=13){
return "黑桃" itr;
} else if(14=itritr=26){
return "红心" (itr-13);
} else if(27=itritr=39){
return "梅花" (itr-26);
} else if(40=itritr=52){
return "方块" (itr-39);
} else if(itr==53){
return "小王";
} else if(itr==54){
return "大王";
}
return "";
}
}
测试运行结果:
急急急?。。∧歉鯦ava大神能帮我编一下这个代码,是关于扑克牌的问题?package zhidao;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.Scanner;
/**
* 发牌游戏
*/
public class PokerGame
{
/**
* 共有1幅扑克牌java扑克牌代码大全,不包括大王和小王共52张牌 。
*/
public static final int POKER_NUMBER = 52;
/**
* 特殊分隔符 _
*/
private static final String T = "_";
/**
* 52张牌br /
* 顺序为黑桃、红心、草花、方块
*/
public static final String[] POKERS =
{
"A"T"0", "A"T"1", "A"T"2", "A"T"3",
"2"T"0", "2"T"1", "2"T"2", "2"T"3",
"3"T"0", "3"T"1", "3"T"2", "3"T"3",
"4"T"0", "4"T"1", "4"T"2", "4"T"3",
"5"T"0", "5"T"1", "5"T"2", "5"T"3",
"6"T"0", "6"T"1", "6"T"2", "6"T"3",
"7"T"0", "7"T"1", "7"T"2", "7"T"3",
"8"T"0", "8"T"1", "8"T"2", "8"T"3",
"9"T"0", "9"T"1", "9"T"2", "9"T"3",
"10"T"0", "10"T"1", "10"T"2", "10"T"3",
"J"T"0", "J"T"1", "J"T"2", "J"T"3",
"Q"T"0", "Q"T"1", "Q"T"2", "Q"T"3",
"K"T"0", "K"T"1", "K"T"2", "K"T"3"
};
/**
* 原始java扑克牌代码大全的扑克牌
*/
public static final String[] ORIAL_POKERS = POKERS.clone ();
/**
* 发到哪张牌 0
*/
public static int currentIndex = 0;
/**
* 四种花色
*/
public static final String POKER_COLOR = "黑桃"T"红心"T"草花"T"方块";
/**
* 发牌
* @param n int 一共几个人玩牌
* @param results 储存发牌结果java扑克牌代码大全的数组
*/
public static void drawPoker (int n, String[][] results)
{
int m = n - 1;
if (n == 0)
{
return;
}
int number = (POKER_NUMBER - currentIndex) / n;
while (number0)
{
String current = POKERS[currentIndex];
String pk = current.split ("\\"T)[0].trim ();
int col = Integer.parseInt (current.split ("\\"T )[1].trim ());
if (null == results[m][col])
{
results[m][col] = pk" ";
}
else
{
results[m][col]= pk" ";
}
number--;
}
for ( int i = 0; iresults.length; i)
{
for ( int j = 0; jresults[i].length; j)
{
if (null == results[i][j])
{
results[i][j] = "";
}
}
}
drawPoker (--n, results);
}
/**
* 给牌排序
* @param orialPokers String 原始扑克牌
* @param temp String[] 每张花色的扑克牌数组
*/
private static void sortPokers ( final String orialPokers, String[] temp )
{
Arrays.sort (temp, new ComparatorString ()
{
@Override
public int compare ( String o1, String o2 )
{
int index1 = orialPokers.indexOf (o1T);
int index2 = orialPokers.indexOf (o2T);
if (index1index2)
{
return -1;
}
else if (index1index2)
{
return 1;
}
else
{
return 0;
}
}
});
}
/**
* 洗牌
*/
private static void shufflePokers ( String[] POKERS )
{
Collections.shuffle (Arrays.asList (POKERS));
}
public static void main ( String[] args )
{
System.out.print ("输入人数java扑克牌代码大全:");
Scanner scanner = new Scanner (System.in);
int n = scanner.nextInt ();
scanner.close ();
String[] pColors = POKER_COLOR.split ("\\"T );
String[][] results = new String[n][pColors.length];
shufflePokers (POKERS);
drawPoker (n, results);
final String poker = Arrays.toString (ORIAL_POKERS);
System.out.println ("\n输出如下java扑克牌代码大全:\n");
for (int i = 0; iresults.length; i)
{
System.out.println ("第"( i1 )"个人:");
for ( int j = 0; jresults[i].length; j)
{
String[] temp = results[i][j].trim ().split ("\\s ");
sortPokers (poker, temp);
System.out.println (pColors[j]":"Arrays.toString (temp).replaceAll ("[\\,\\[\\]]", ""));
}
System.out.println ();
}
}
}
用java如何判断扑克牌同花顺扑克牌有两个属性,花色和牌面大小,可以分别比较花色和牌面大小是否递增或递减来确定是不是同花顺.但是由于扑克牌会有JQKA,所以牌面大小最好以数组或者字符串的方式实现,通过比较下标来比较大小,以下是大概的代码
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"));
//这里因为10是两位数且牌面里面用不到1,所以直接用1代替10
String check = "234567891JQKA";
boolean flage =true;
//自定义比较器,用num在check里的下标大小作为比较依据排序
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; icard.size()-1; i) {
//遍历所有的牌,如果颜色不一样直接跳出循环,不是同花顺
if(!card.get(i).getColor().equals(card.get(i 1).getColor())){
flage =false;
break;
}
//如果上一张减去下一张的差值不是1,说明牌面不是顺子,也不是同花顺,跳出循环
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("牌面不是同花顺");
}
}
}
不过这种方法唯一不好的地方是check中不能直接用10,将来展示的时候需要判定,展示的是1时直接改成10.
其实实现方法很多,我这么写是因为最近在复习,这么写用到的知识点相对会多一点.
JAVA编程判断扑克牌大小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; ilist.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; inumList.size() - 1; i) {
if (Integer.parseInt(numList.get(i1)) - Integer.parseInt(numList.get(i)) == 1) {
if (i == numList.size() - 2) {
temp = 1;
}
continue;
} else {
if (temp4) {
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 (temp2) {
temp = 2;
}
} else {
if (temp3) {
temp = 3;
}
}
}
// 三条
if (numSet.size() == 3) {
if (temp6) {
temp = 6;
}
}
// 顺子
if (colourSet.size()1) {
Collections.sort(numList);
for (int i = 0; inumList.size() - 1; i) {
if (Integer.parseInt(numList.get(i1)) - Integer.parseInt(numList.get(i)) == 1) {
if (i == numList.size() - 2) {
if(temp5){
temp = 5;
}
}
} else {
break;
}
}
}
return temp;
}
}
高分急求java扑克出牌代码我不知道电脑出牌为什么要进行大小比较以及删牌操作? 我的是52张牌若干玩家,随机发牌给玩家 , 玩家收到电脑发的牌 。
这个是定义52张牌:Card.java
package com.etc.week4.day03;
public class Card {
//点数3---04112211 A13 小王 14 大王
public int rank;
public final static int THREE = 0;
public final static int FOUR = 1;
public final static int FIVE = 2;
public final static int SIX = 3;
public final static int SEVEN = 4;
public final static int EIGHT = 5;
public final static int NINE = 6;
public final static int TEN = 7;
public final static int JACK = 8;//J
public final static int QUEEN = 9;//Q
public final static int KING = 10;//K
public final static int ACE = 11;//A
public final static int DEUCE = 12; //2
public final static int BLACK = 13; //小王
public final static int COLOR = 14;//大王
//花色(suit=0suit=4)
private int suit;
public final static int CLUB = 0; //梅花
public static final int DIAMOND = 1; //方块(钻石)
public static final int HEART = 2; //红桃(红心)
public static final int SPADE = 3; //黑桃(花锄)
public static final int JOKER = 4; //王
public Card(int suit,int rank){
this.setSuit(suit);
this.setRank(rank);
}
public Card(){}
public int getRank() {
return rank;
}
public void setRank(int rank) {
if(rankCard.THREE||rankCard.COLOR){
throw new RuntimeException();
}
this.rank = rank;
}
public int getSuit() {
return suit;
}
public void setSuit(int suit) {
if(suitCard.CLUB || suitCard.JOKER){
thrownew RuntimeException();
}
this.suit = suit;
}
// 点数对应 名称
public final static String[] RANK_NAMES={
"3","4","5","6","7","8","9","10","J","Q",
"K","A","2","小王","大王"};
public final static String[] SUIT_NAMES={
"梅花","方块","红桃","黑桃",""};
@Override
public String toString() {
return SUIT_NAMES[this.suit] RANK_NAMES[this.rank];
}
public static void main(String[] args) {
Cardc=new Card(HEART, ACE);
System.out.println(c);
}
}
这个是定义若干玩家Player.java
package com.etc.week4.day03;
import java.util.Arrays;
public class Player {
String id;
String name;
Card cards[] ={};
public void addCards(Card card ){
// 每个玩家获取的牌
cards = Arrays.copyOf(cards, cards.length 1);
cards[cards.length-1] = card;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Card[] getCards() {
return cards;
}
public void setCards(Card[] cards) {
this.cards = cards;
}
public Player(String id, String name) {
this.id = id;
this.name = name;
}
public Player() {
super();
}
@Override
public String toString() {
return "Player:" name "cards="
Arrays.toString(cards)"]";
}
}
这个是电脑随机发牌给玩家,玩家收到电脑发的牌PlayDemo.java
package com.etc.week4.day03;
import java.util.Arrays;
import java.util.Random;
public class PlayerDemo {
public static void main(String[] args) {
//创建一副扑克牌
//方块:13张(THREE~DEUCE)
//梅花:13张(THREE~DEUCE)
//黑桃:13张(THREE~DEUCE)
//红桃:13张(THREE~DEUCE)
//王: BLACK COLOR
Card [] cards = new Card[54];
int i=0;
//构造52张普通的牌
for(int rank=Card.THREE;rank=Card.DEUCE;rank){
cards[i] = new Card(Card.DIAMOND, rank);
cards[i] = new Card(Card.CLUB, rank);
cards[i] = new Card(Card.SPADE, rank);
cards[i] = new Card(Card.HEART, rank);
}
// 添加 大小王
cards[i] = new Card(Card.JOKER, Card.BLACK);
cards[i] = new Card(Card.JOKER, Card.COLOR);
//将数组 变成集合 List
//List arr= Arrays.asList(cards);
//将集合里面的元素打乱...洗牌
//Collections.shuffle(arr);
//洗牌//
for(int n=cards.length-1;n=1;n--){
Random rd = new Random();
int index =rd.nextInt(n); //10
Card t = cards[n];
cards[n] = cards[index];
cards[index] = t;
}
// System.out.println("=====测试洗牌.....\n" Arrays.toString(cards));
// 组建玩家团队
Player[] players = new Player[4];
players[0]= new Player("1010", "张柏芝");
players[1]= new Player("1011", "曾志伟");
players[2]= new Player("1012", "谭咏麟");
// players[3]= new Player("1013", "郭德纲");
//发牌.....
for(int j =0;jcards.length;j){
players[j%players.length].addCards(cards[j]);
}
//显示各个玩家的牌
for(int m=0;mplayers.length;m){
System.out.println(players[m]);
}
}
}
Java四人扑克发牌 , 请教高手将代码进行更好的缩进 , 在简洁点,最主要性能 。扑克牌还是自己写个对象比较好吧属性就是花色跟牌值
至于发牌什么的还是用集合来吧数组操作起来比较麻烦
代码实在是懒得写了就提点建议
用集合的好处比如说洗牌直接就可以用 collections的静态方法还有就是 回复初始状态排序 也可以也可以自定义比较器来比较
关于java扑克牌代码大全和java扑克牌顺子的介绍到此就结束了 , 不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读