Java简易扑克牌
来源:互联网 发布:网络直播在线观看 编辑:程序博客网 时间:2024/05/16 08:36
代码分为四个类
- Card类:纸牌
- Player类:玩家
- CardsProvider类:简单的单例模式,只用于返回一副扑克牌
Test类:测试
代码过于简单,直接上代码:
`Card类package com.calf.puke;
public class Card implements Comparable{
//花色1234分别代表方块、梅花、红桃、黑桃
private int huaSe; //花色 ♠♣♥♦//数字2-14分别代表12345678910JQKA
private int num; // 数字public Card() {
// TODO Auto-generated constructor stub
}//调用这个函数前要判断huaSe和num是否在1-4和1-14范围
public Card(int huaSe, int num) {
super();
this.huaSe = huaSe;
this.num = num;
}public int getHuaSe() {
return huaSe;
}public void setHuaSe(int huaSe) {
this.huaSe = huaSe;
}public int getNum() {
return num;
}public void setNum(int num) {
this.num = num;
}@Override
public int hashCode() {
return Integer.valueOf(this.huaSe + “” +this.huaSe);
}@Override
public boolean equals(Object obj) {
if(this == obj)
return true;
if(null == obj)
return false;
if (obj instanceof Card) {
Card card = (Card) obj;
if(card.num == this.num && card.huaSe == this.huaSe)
return true;
}
return false;
}@Override
public String toString() {
String numStr = ” “; //数字转字符 即: 11->J 12-> Q 13->K 14->AString huaSeStr = " "; //花色转字符 花色1234分别代表方块、梅花、红桃、黑桃if(num <= 10 ) numStr = String.valueOf(num);else{ switch (num) { case 11: numStr = "J"; break; case 12: numStr = "Q"; break; case 13: numStr = "K"; break; case 14: numStr = "A"; break; default: numStr = "错误的数字"; break; }}//花色转字符switch (huaSe) {case 1: huaSeStr = "方块"; break;case 2: //♠♣♥♦ huaSeStr = "梅花"; break;case 3: huaSeStr = "红桃"; break;case 4: huaSeStr = "黑桃"; break;default: huaSeStr = "错误的花色"; break;}return huaSeStr +" " + numStr;
}
@Override
public int compareTo(Card o) {
if(this.num > o.num)
return 1;
else if (this.num == o.num) {
if(this.huaSe > o.huaSe){
return 1;
}else if (this.huaSe == o.huaSe) {
return 0;
}else {
return -1;
}
}else
return -1;
}
}
`Player类
package com.calf.puke;import java.util.ArrayList;import java.util.Comparator;import java.util.List;public class Player{ private int id; //id private String name; //姓名private List<Card> cards = new ArrayList<Card>(); //手中的牌public Player() { // TODO Auto-generated constructor stub}public Player(int id, String name) { super(); this.id = id; this.name = name;}public int getId() { return id;}public void setId(int id) { this.id = id;}public String getName() { return name;}public void setName(String name) { this.name = name;}@Overridepublic String toString() { return id + name;}@Overridepublic int hashCode() { return id;}@Overridepublic boolean equals(Object obj) { if(obj == this) return true; if(null == obj) return false; if (obj instanceof Player) { Player player = (Player) obj; if(this.id == player.id && this.name == player.name) return true; } return false;}public List<Card> getCards() { return cards;}public void setCards(List<Card> cards) { this.cards = cards;}
}
CardProvider类
package com.calf.puke; import java.util.ArrayList; import java.util.List;//一副牌类,用单例模式public class CardProvider { //牌 private static List<Card> cards;private CardProvider(){}public static List<Card> getSuitCards() { if(null == cards) createCards(); return cards;}/** * 洗牌 * 创建一副52张没有大小王的牌 * @return */private static void createCards() { cards = new ArrayList<Card>(); //牌的数字从2-14 for(int i = 2; i <= 14; i++) { //牌的花色从1-4 for(int j = 1; j <= 4; j++) { Card card = new Card(j,i); cards.add(card); } }}
}
Test类
package com.calf.puke;import java.util.ArrayList;import java.util.Collections;import java.util.Iterator;import java.util.List;import java.util.Random;import java.util.Scanner;public class Test {public static void main(String[] args) { //获取一副新牌 List<Card> cards = CardProvider.getSuitCards(); //打乱这副牌 Collections.shuffle(cards); //玩家对象 List<Player> players = new ArrayList<Player>(); //创建两个玩家 String idString; //用来接收键盘输入 String name; //用来接收键盘输入 Scanner console = new Scanner(System.in); //获取控制台输入 while(players.size() < 2) { System.out.println("请输入玩家 " + (players.size()+1) + "的id:"); idString = console.nextLine(); try { int id = Integer.parseInt(idString); System.out.println("请输入玩家姓名:"); name = console.nextLine(); Player player = new Player(id,name); players.add(player); }catch (NumberFormatException e) { System.out.println("id必须是整数,请重新输入..."); continue; } } //给两个玩家一人一张牌 int index = 0; //牌的标号,每取一张自增1 for(int i = 0; i < players.size();i++) { Player player = players.get(i); Card tempCard; tempCard = new Card(cards.get(index).getHuaSe(),cards.get(index).getNum()); index++; players.get(i).getCards().add(tempCard); } Player player1 = players.get(0); Player player2 = players.get(1); int result = player1.getCards().get(0).compareTo( player2.getCards().get(0)); switch (result) { case 0: System.out.println("平局"); break; case 1: System.out.println("玩家1胜"); break; case -1: System.out.println("玩家2胜"); break; default: System.out.println("出错"); break; } for (Iterator iterator = players.iterator(); iterator.hasNext();) { System.out.println("----------玩家信息-----------"); Player player = (Player) iterator.next(); System.out.println(player); System.out.println(player.getCards()); System.out.println("----------------------------"); }}
}
`
- JAVA简易扑克牌游戏
- Java简易扑克牌
- java编写简易扑克牌游戏
- java实现--简易扑克牌游戏
- Java实现简易扑克牌游戏
- 11、Java入门-简易扑克牌游戏
- JAVA入门之简易扑克牌游戏
- java自学笔记13:简易扑克牌游戏
- Java入门第三季-综合实战:简易扑克牌游戏
- java简易扑克牌游戏,慕课第三季作业
- IMOOC java入门第三季——简易扑克牌游戏
- 简易扑克牌游戏
- 慕课网简易扑克牌游戏
- 简易的扑克牌比点数游戏
- list下的简易扑克牌游戏
- Java 扑克牌洗牌程序
- Java 扑克牌发牌
- Java算法-扑克牌排列
- 记一次坑爹的事情
- 凌晨2点多,我的第一篇文章
- 小白成长日记(14)--(C语言)关于解决头插法单链表中问题二
- 【leetCode刷题日记】200. Number of Islands
- 自定义网络框架之下载
- Java简易扑克牌
- java线程安全之同步类容器与并发类容器(十二)
- 摩尔定律还有效吗?
- Signal ()函数详细介绍
- vue学习之路(一)--vue-cli安装+vue-router+vue-resource
- Unity开发微信登陆—利用ShareSDK微信登录
- git相关
- Sublime Text3注册码(测试可用仅供个人学习)
- [Matlab]Invalid mex-file 找不到指定的模块