「java扑克牌游戏」Java扑克牌游戏代码

博主:adminadmin 2023-03-22 10:40:10 896

今天给各位分享java扑克牌游戏的知识,其中也会对Java扑克牌游戏代码进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

JAVA,扑克牌游戏,我用循环从54个数中随机拿到了3组不重复的数,每组17个

提供一个我处理的思路,

1,声明一个String 的标示, String index= ""; 主要是记录出来的数,

index.contains() 方法来判断包含不, 如果包含,继续随机,直到不包含为止,然后把数字拼入到index变量去

声明一个key 的标示

2.建立数组吧 建map吧, 然后现在就开始放入不包含的,并判断下数组等于17不, 等于就用规律升级key 然后又开始放数字

3.用同样的方法, 做一个小数组, 只判断三个就可以了

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("发牌完毕,当前手牌为:");

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("黑桃")0  lost.indexOf("红心")0  lost.indexOf("梅花")0  lost.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;

}

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=itr  itr=13){

return "黑桃"+itr;

} else if(14=itr  itr=26){

return "红心"+(itr-13);

} else if(27=itr  itr=39){

return "梅花"+(itr-26);

} else if(40=itr  itr=52){

return "方块"+(itr-39);

} else if(itr==53){

return "小王";

} else if(itr==54){

return "大王";

}

return "";

}

}

测试运行结果:

java语言编程扑克牌

一:import java.util.Scanner;

public class Play {

/**

* 玩牌

*/

public static void main(String[] args) {

Poker poker = new Poker();

boolean over = false;

Scanner cin=new Scanner(System.in);

while(!over){

System.out.println("打牌输入1,展示剩余牌输入其他字符:");

String c=cin.nextLine();

if("1".equals(c)){

int index = (int) (Math.random()*poker.getSize());

poker.remove(index);

}else{

poker.ShowPages();

}

}

/*for(int i = 0;i54;i++){

int index = (int) (Math.random()*poker.getSize());

poker.remove(index);

poker.ShowPages();

}

*/

}

}二://牌

public class Page { private String huase = "";

private String haoma = "";

public Page(String huase,String haoma){

this.huase = huase;

this.haoma = haoma;

}

public String show(){

return this.huase+this.haoma;

}

}三:import java.util.ArrayList;

import java.util.Iterator;

import java.util.List;

/**

* 一副扑克

*/

public class Poker {

private List pages = new ArrayList();

public Poker(){

String huase[] = new String[]{"黑桃","红桃","草花","方块"};

String haoma[] = new String[]{"A","2","3","4","5","6","7","8","9","10"

,"J","Q","K"};

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

for(int j = 0;jhuase.length;j++){

pages.add(new Page(huase[j],haoma[i]));

}

}

pages.add(new Page("","大王"));

pages.add(new Page("","小王"));

}

public void ShowPages(){

System.out.println("展示剩余牌:");

for(Iterator i = pages.iterator();i.hasNext();){

System.out.println(((Page)i.next()).show());

}

}

//打牌

public void remove(int index){

pages.remove(index);

}

//剩余牌数

public int getSize(){

return pages.size();

}

}

JAVA扑克牌编程

1.定义扑克的对象 有两个参数a。花色,b数字Poke{ int number, String color, Poker(String color,int number) { this.color=color; this.number=number; }} 2.每一张牌都实例化一个扑克对象。 poke1= new Poke("红桃","10");poke2=new Poke("黑桃","9"); 3.定义游戏规则类,类里定义一个方法,用来比较大小。public comparePoke(Poke poke1,Poke poke2){ if(花色比较){ return 结果; } if(数字比较){ return 结果; }}。调用方法就能比较

java--card games

随便写点,不是很满意,也是因为对题目有点莫名。其实有些牌不是每个人一样多牌的,比如斗地主。但是题目既然要求一个int来记录每个玩家牌的数量,那也行。但是这样就可以让父类来处理所有的发牌操作,又何必将deal写作抽象方法

enum Suit {

SPADE { public String toString() { return "Spade"; } },

HEART { public String toString() { return "Heart"; } },

CLUB { public String toString() { return "Club"; } },

DIAMOND { public String toString() { return "Diamond"; } }

}

enum Face {

ACE { public String toString() { return "A"; } },

DEUCE { public String toString() { return "2"; } },

THREE { public String toString() { return "3"; } },

FOUR { public String toString() { return "4"; } },

FIVE { public String toString() { return "5"; } },

SIX { public String toString() { return "6"; } },

SEVEN { public String toString() { return "7"; } },

EIGHT { public String toString() { return "8"; } },

NINE { public String toString() { return "9"; } },

TEN { public String toString() { return "10"; } },

JACK { public String toString() { return "J"; } },

QUEEN { public String toString() { return "Q"; } },

KING { public String toString() { return "K"; } }

}

class Card {

private final Suit suit;

private final Face face;

public Card(Suit suit, Face face) {

this.suit = suit;

this.face = face;

}

public String toString() {

return suit.toString() + " " + face.toString();

}

}

class Deck {

private Card[] cards = new Card[52];

private int currentCardIndex = 0;

public Deck() {

int index = 0;

for (Suit suit : Suit.values()) {

for (Face face : Face.values()) {

cards[index++] = new Card(suit, face);

}

}

}

public void shuffle() {

java.util.Random random = new java.util.Random();

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

ArrayUtilities.swap(cards, i, random.nextInt(cards.length));

}

}

public Card deal() {

if (currentCardIndex cards.length)

return null;

Card card = cards[currentCardIndex];

cards[currentCardIndex++] = null;

return card;

}

}

class CardPlayer {

private java.util.ListCard cards;

public CardPlayer() {

cards = new java.util.ArrayListCard();

}

public void getCard(Card card) {

cards.add(card);

}

public void showCards() {

System.out.println(cards);

}

}

abstract class CardGame {

protected Deck deck;

protected int numberOfCard;

protected int numberOfPlayer;

protected CardGame(int numberOfCard, int numberOfPlayer) {

deck = new Deck();

this.numberOfCard = numberOfCard;

this.numberOfPlayer = numberOfPlayer;

}

public void shuffle() {

deck.shuffle();

}

public abstract void displayDescription();

public abstract void deal(CardPlayer player);

}

class CardGameA extends CardGame {

protected CardGameA() {

super(5, 4);

}

public void deal(CardPlayer player) {

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

player.getCard(deck.deal());

}

}

public void displayDescription() {

System.out.println("Card Game A");

}

}

class CardGameB extends CardGame {

protected CardGameB() {

super(13, 4);

}

public void deal(CardPlayer player) {

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

player.getCard(deck.deal());

}

}

public void displayDescription() {

System.out.println("Card Game B");

}

}

public class PlayCardGames {

public static void main(String[] args) {

testCardGame(new CardGameA());

testCardGame(new CardGameB());

}

static void testCardGame(CardGame game) {

CardPlayer[] players = {new CardPlayer(), new CardPlayer(),

new CardPlayer(), new CardPlayer(), };

game.shuffle();

for (CardPlayer player : players) {

game.deal(player);

}

game.displayDescription();

for (CardPlayer player : players) {

player.showCards();

}

}

}

class ArrayUtilities {

public static T void swap(T[] array, int i1, int i2) {

T temp = array[i1];

array[i1] = array[i2];

array[i2] = temp;

}

}

关于java扑克牌游戏和Java扑克牌游戏代码的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。