如何使用Java代码实现一个简单的扑克牌游戏
这篇文章主要介绍“如何使用Java代码实现一个简单的扑克牌游戏”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“如何使用Java代码实现一个简单的扑克牌游戏”文章能帮助大家解决问题。
功能描述
1、创建扑克牌。包括四种花色(黑桃,红心,梅花,方块),十三种点数(2-10,J,Q,K),不考虑大小王。
2、创建两个玩家。包括玩家id、姓名、手牌等集合,手牌为扑克牌的集合。
3、洗牌。将创建好的扑克牌打乱。
4、发牌。将洗牌之后的扑克牌集合,从第一张开始,发给两个玩家,安装一人 一张的方式,每人发两张。
5、游戏。比较两名玩家手中的扑克牌。规则为:去两名玩家手上点数最大的牌进行比较,点数大的赢,若点数一样大,就按照色花进行比较。
难点分析:
1、洗牌,如何将扑克牌进行打乱。(主要知识点Random,list.contains())
2、扑克牌如何进行大小比较。(主要知识点collections.sort() , comparable)
实现代码
Card.java(扑克牌类)
package com.betty.dome2; public class Card implements Comparable<Card>{ // 牌面 private String num; // 花色 private String name; public Card(){ } public Card(String num,String name){ this.num = num; this.name = name; } public String getNum() { return num; } public void setNum(String num) { this.num = num; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((name == null) ? 0 : name.hashCode()); result = prime * result + ((num == null) ? 0 : num.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Card other = (Card) obj; if (name == null) { if (other.name != null) return false; } else if (!name.equals(other.name)) return false; if (num == null) { if (other.num != null) return false; } else if (!num.equals(other.num)) return false; return true; } // 获取牌面大小 private Integer getNumValue(String num){ switch(num){ case "A": return 12; case "2": return 13; case "3": return 1; case "4": return 2; case "5": return 3; case "6": return 4; case "7": return 5; case "8": return 6; case "9": return 7; case "10": return 8; case "J": return 9; case "Q": return 10; case "K": return 11; } return -1; } // 获取花色大小 private Integer getNameValue(String name){ switch(name){ case "黑桃": return 4; case "红心": return 3; case "梅花": return 2; case "方块": return 1; } return -1; } @Override public int compareTo(Card card) { // 如果牌面相同就看花色 int numCompare = getNumValue(this.num).compareTo(getNumValue(card.num)); if(numCompare == 0){ return getNameValue(this.name).compareTo(getNameValue(card.name)); } return numCompare; } }
Player.java(角色类)
package com.betty.dome2; import java.util.ArrayList; import java.util.List; public class Player { // 角色id private Integer ID; // 角色姓名 private String name; // 角色获得的牌 List<Card> cardList; public Player(){ } public Player(Integer ID,String name){ this.ID = ID; this.name = name; this.cardList = new ArrayList<Card>(); } public Integer getID() { return ID; } public void setID(Integer iD) { ID = iD; } public String getName() { return name; } public void setName(String name) { this.name = name; } } Welcome.java(主程序) package com.betty.dome2; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Random; import java.util.Scanner; public class Welcome { 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; // 玩家列表 public Welcome(){ this.cardStartList= new ArrayList<Card>(); this.cardEndList = new ArrayList<Card>(); this.playerList = new ArrayList<Player>(); } // 创建扑克牌 void createCard(){ System.out.println("-----------创建扑克牌---------------"); for (String name : names) { for (String num : nums) { cardStartList.add(new Card(num,name)); } } System.out.println("---------扑克牌创建成功--------------"); System.out.print("["); for(int i=0;i<cardStartList.size();i++){ Card card = 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("]"); } // 洗牌 void shuffleCard(){ System.out.println("-----------开始洗牌---------------"); Random random = new Random(); Integer listSize = cardStartList.size(); for(int i=0;i<listSize;i++){ Card cd = new Card(); do{ cd = cardStartList.get(random.nextInt(listSize)); }while(cardEndList.contains(cd)); cardEndList.add(cd); } System.out.println("-----------洗牌结束---------------"); } // 输入角色姓名 @SuppressWarnings("resource") private String getName() { System.out.print("输入姓名:"); Scanner input = new Scanner(System.in); return input.next(); } // 输入角色id && 输入整数判断 @SuppressWarnings("resource") private Integer getId() { Scanner input = new Scanner(System.in); Integer id; while(true){ try { System.out.print("输入ID:"); id = input.nextInt(); break; } catch (Exception e) { System.out.println("请输入整数"); input = new Scanner(System.in); } } return id; } // 创建角色 private void createPlayers() { Integer playerNum = 2; for(int i=0;i<playerNum;i++){ playerList.add(new Player(getId(), getName())); } for (Player player : playerList) { System.out.println("----欢迎玩家 :" + player.getName()); } } // 给角色发牌 private void sendCard() { System.out.println("-----------开始发牌---------------"); int cardSendNum = 2,index = 0; for(int i=0;i<cardSendNum;i++){ for(int j=0;j<playerList.size();j++){ Player player = playerList.get(j); player.cardList.add(cardEndList.get(index++)); System.out.println("----玩家 :" + player.getName()+" 拿牌"); } } System.out.println("-----------发牌结束---------------"); } // 游戏开始 private void playGame() { System.out.println("-----------游戏开始---------------"); Card maxCard = new Card("0","方块"); Player winner = new Player(); for(int i=0;i<playerList.size();i++){ Player player = playerList.get(i); List<Card> cardList = player.cardList; Collections.sort(cardList); Card card = 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(int j=0;j<playerList.size();j++){ Player player = playerList.get(j); System.out.print("玩家 :" + player.getName()+"["); for(int i=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("] "); } } public static void main(String[] args) { Welcome we = new Welcome(); we.createCard(); // 创建扑克牌 we.shuffleCard(); // 洗牌 we.createPlayers(); // 创建角色 we.sendCard(); // 给角色发牌 we.playGame(); // 游戏开始 } }
关于“如何使用Java代码实现一个简单的扑克牌游戏”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注蜗牛博客行业资讯频道,小编每天都会为大家更新不同的知识点。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:niceseo99@gmail.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。版权声明:如无特殊标注,文章均为本站原创,转载时请以链接形式注明文章出处。
评论