这篇文章主要介绍“如何使用Java代码实现一个简单的扑克牌游戏”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“如何使用Java代码实现一个简单的扑克牌游戏”文章能帮助大家解决问题。

功能描述

1、创建扑克牌。包括四种花色(黑桃,红心,梅花,方块),十三种点数(2-10,J,Q,K),不考虑大小王。

2、创建两个玩家。包括玩家id、姓名、手牌等集合,手牌为扑克牌的集合。

3、洗牌。将创建好的扑克牌打乱。

4、发牌。将洗牌之后的扑克牌集合,从第一张开始,发给两个玩家,安装一人 一张的方式,每人发两张。

5、游戏。比较两名玩家手中的扑克牌。规则为:去两名玩家手上点数最大的牌进行比较,点数大的赢,若点数一样大,就按照色花进行比较。

难点分析:

1、洗牌,如何将扑克牌进行打乱。(主要知识点Random,list.contains())

2、扑克牌如何进行大小比较。(主要知识点collections.sort() , comparable)

实现代码

Card.java(扑克牌类)

packagecom.betty.dome2;publicclassCardimplementsComparable<Card>{//牌面privateStringnum;//花色privateStringname;publicCard(){}publicCard(Stringnum,Stringname){this.num=num;this.name=name;}publicStringgetNum(){returnnum;}publicvoidsetNum(Stringnum){this.num=num;}publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}@OverridepublicinthashCode(){finalintprime=31;intresult=1;result=prime*result+((name==null)?0:name.hashCode());result=prime*result+((num==null)?0:num.hashCode());returnresult;}@Overridepublicbooleanequals(Objectobj){if(this==obj)returntrue;if(obj==null)returnfalse;if(getClass()!=obj.getClass())returnfalse;Cardother=(Card)obj;if(name==null){if(other.name!=null)returnfalse;}elseif(!name.equals(other.name))returnfalse;if(num==null){if(other.num!=null)returnfalse;}elseif(!num.equals(other.num))returnfalse;returntrue;}//获取牌面大小privateIntegergetNumValue(Stringnum){switch(num){case"A":return12;case"2":return13;case"3":return1;case"4":return2;case"5":return3;case"6":return4;case"7":return5;case"8":return6;case"9":return7;case"10":return8;case"J":return9;case"Q":return10;case"K":return11;}return-1;}//获取花色大小privateIntegergetNameValue(Stringname){switch(name){case"黑桃":return4;case"红心":return3;case"梅花":return2;case"方块":return1;}return-1;}@OverridepublicintcompareTo(Cardcard){//如果牌面相同就看花色intnumCompare=getNumValue(this.num).compareTo(getNumValue(card.num));if(numCompare==0){returngetNameValue(this.name).compareTo(getNameValue(card.name));}returnnumCompare;}}

Player.java(角色类)

packagecom.betty.dome2;importjava.util.ArrayList;importjava.util.List;publicclassPlayer{//角色idprivateIntegerID;//角色姓名privateStringname;//角色获得的牌List<Card>cardList;publicPlayer(){}publicPlayer(IntegerID,Stringname){this.ID=ID;this.name=name;this.cardList=newArrayList<Card>();}publicIntegergetID(){returnID;}publicvoidsetID(IntegeriD){ID=iD;}publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}}Welcome.java(主程序)packagecom.betty.dome2;importjava.util.ArrayList;importjava.util.Collections;importjava.util.List;importjava.util.Random;importjava.util.Scanner;publicclassWelcome{String[]nums={"2","3","4","5","6","7","8","9","10","J","Q","K","A"};String[]names={"黑桃","红心","梅花","方块"};List<Card>cardStartList;//开始创建扑克牌时的序列List<Card>cardEndList;//洗牌后的序列List<Player>playerList;//玩家列表publicWelcome(){this.cardStartList=newArrayList<Card>();this.cardEndList=newArrayList<Card>();this.playerList=newArrayList<Player>();}//创建扑克牌voidcreateCard(){System.out.println("-----------创建扑克牌---------------");for(Stringname:names){for(Stringnum:nums){cardStartList.add(newCard(num,name));}}System.out.println("---------扑克牌创建成功--------------");System.out.print("[");for(inti=0;i<cardStartList.size();i++){Cardcard=cardStartList.get(i);if(i%13!=0)System.out.print(",");if((i+1)%13==1&&i!=0){System.out.println("]");System.out.print("[");}System.out.print(card.getName()+card.getNum());}System.out.println("]");}//洗牌voidshuffleCard(){System.out.println("-----------开始洗牌---------------");Randomrandom=newRandom();IntegerlistSize=cardStartList.size();for(inti=0;i<listSize;i++){Cardcd=newCard();do{cd=cardStartList.get(random.nextInt(listSize));}while(cardEndList.contains(cd));cardEndList.add(cd);}System.out.println("-----------洗牌结束---------------");}//输入角色姓名@SuppressWarnings("resource")privateStringgetName(){System.out.print("输入姓名:");Scannerinput=newScanner(System.in);returninput.next();}//输入角色id&&输入整数判断@SuppressWarnings("resource")privateIntegergetId(){Scannerinput=newScanner(System.in);Integerid;while(true){try{System.out.print("输入ID:");id=input.nextInt();break;}catch(Exceptione){System.out.println("请输入整数");input=newScanner(System.in);}}returnid;}//创建角色privatevoidcreatePlayers(){IntegerplayerNum=2;for(inti=0;i<playerNum;i++){playerList.add(newPlayer(getId(),getName()));}for(Playerplayer:playerList){System.out.println("----欢迎玩家:"+player.getName());}}//给角色发牌privatevoidsendCard(){System.out.println("-----------开始发牌---------------");intcardSendNum=2,index=0;for(inti=0;i<cardSendNum;i++){for(intj=0;j<playerList.size();j++){Playerplayer=playerList.get(j);player.cardList.add(cardEndList.get(index++));System.out.println("----玩家:"+player.getName()+"拿牌");}}System.out.println("-----------发牌结束---------------");}//游戏开始privatevoidplayGame(){System.out.println("-----------游戏开始---------------");CardmaxCard=newCard("0","方块");Playerwinner=newPlayer();for(inti=0;i<playerList.size();i++){Playerplayer=playerList.get(i);List<Card>cardList=player.cardList;Collections.sort(cardList);Cardcard=cardList.get(cardList.size()-1);if(maxCard.compareTo(card)<0){maxCard=card;winner=player;}System.out.println("----玩家:"+player.getName()+"最大的牌为:"+card.getName()+card.getNum());}System.out.println("-----------玩家:"+winner.getName()+"获胜----------");System.out.println("玩家各自的手牌为:");for(intj=0;j<playerList.size();j++){Playerplayer=playerList.get(j);System.out.print("玩家:"+player.getName()+"[");for(inti=0;i<player.cardList.size();i++){if(i!=0)System.out.print(",");System.out.print(player.cardList.get(i).getName()+player.cardList.get(i).getNum());}System.out.print("]");}}publicstaticvoidmain(String[]args){Welcomewe=newWelcome();we.createCard();//创建扑克牌we.shuffleCard();//洗牌we.createPlayers();//创建角色we.sendCard();//给角色发牌we.playGame();//游戏开始}}

关于“如何使用Java代码实现一个简单的扑克牌游戏”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注亿速云行业资讯频道,小编每天都会为大家更新不同的知识点。