[Java] 纯文本查看 复制代码 package first;
/**
* 扑克牌类
* 有以下属性
* 颜色 大小由大到小顺序:黑桃 红心 梅花 方块;
* 数字 大小由大到小顺序:2 A K Q J 10 9 8 7 6 5 4 3
* @author Administrator
* 大小编号 编号数字越小则越大
*/
public class Pai implements Comparable<Pai> {
/**
* 颜色 大小由大到小顺序:黑桃 红心 梅花 方块
*/
private String colur;
/**
* 数字 大小由大到小顺序:2 A K Q J 10 9 8 7 6 5 4 3
*/
private String num;
/**
* 大小编号 编号数字越小则越大
*/
private int ID;
public String getColur() {
return colur;
}
public void setColur(String colur) {
this.colur = colur;
}
public String getNum() {
return num;
}
public void setNum(String num) {
this.num = num;
}
public int getID() {
return ID;
}
public void setID(int iD) {
ID = iD;
}
@Override
public int compareTo(Pai o) {
// TODO Auto-generated method stub
if(this.getID()>o.getID()){
return -(o.getID()-this.getID());
}else if(this.getID()==o.getID()){
return 0;
}else {
return -(o.getID()-this.getID());
}
}
}
package first;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Random;
import java.util.Set;
/**
* 创建牌,洗牌类
* @author Administrator
*
*/
public class BuildingAndChangePai {
public BuildingAndChangePai(){
this.newPai=new ArrayList<Pai>();
this.oldPai=new HashSet<Pai>();
this.randomPai=new ArrayList<Pai>();
}
public static void main(String[] args) {
BuildingAndChangePai it=new BuildingAndChangePai();
it.builder();
it.showNewPai();
it.SetChangers();;
it.showSetPai();
it.randomPai();
it.showRandom();
//以下时间与电脑配置有关
//以下循环需约1分20秒
//for(int i=0;i<10000000;i++){it=new BuildingAndChangePai();it.builder();it.randomPai();}
//以下循环需约30秒
//for(int i=0;i<10000000;i++){it=new BuildingAndChangePai();it.builder();it.newRandom();}
//it.showNewPai();
//it.showRandom();
}
/**
* 一盒新牌
*/
private List<Pai> newPai;
/**
* 一盒random洗的牌
*/
private List<Pai> randomPai;
/**
* 一盒洗好的牌
*/
private Set<Pai> oldPai;
/**
* 创建一副牌的方法
*/
public void builder(){
//先创建两个List,按照顺序加入颜色和数字
List<String>colurs=new ArrayList<String>();
colurs.add("黑桃");
colurs.add("红心");
colurs.add("梅花");
colurs.add("方片");
List<String>nums=new ArrayList<String>();
nums.add("2");
nums.add("A");
nums.add("K");
nums.add("Q");
nums.add("J");
nums.add("10");
nums.add("9");
nums.add("8");
nums.add("7");
nums.add("6");
nums.add("5");
nums.add("4");
nums.add("3");
//创建int变量id;用于接下来统计大小顺序
int id=1;
//嵌套循环创建牌,外循环控制数字,内循环控制花色
for(int i=0;i<nums.size();i++){
for(int j=0;j<colurs.size();j++){
Pai pai=new Pai();
pai.setColur(colurs.get(j));
pai.setNum(nums.get(i));
pai.setID(id);
newPai.add(pai);
id++;
}
}
}
/**
* 新牌展示
*/
public void showNewPai(){
System.out.println("现有新牌如下:");
for(int i=0;i<(newPai.size());i++){
System.out.print(newPai.get(i).getID()+":"+newPai.get(i).getColur()+newPai.get(i).getNum()+" ");
if((i+1)%4==0)System.out.println();
}
}
/**
* 创建list-set的方法
*/
public void SetChangers(){
for(Pai pai:newPai){
oldPai.add(pai);
}
}
/**
* 洗好的牌展示
*/
public void showSetPai(){
System.out.println("现有list-set交换牌如下:");
int i=0;
for(Pai newPai:oldPai){
System.out.print(newPai.getID()+":"+newPai.getColur()+newPai.getNum()+" ");
i++;
if(i%4==0){System.out.println();}
}
}
/**
* random方法
*/
public void randomPai(){
Random random=new Random();
for(int i=0;i<52;i++){
int j;
Pai pai;
do{
j=random.nextInt(52);
pai=newPai.get(j);
}while(randomPai.contains(pai));
randomPai.add(pai);
}
}
/**
* 新的random方法
* @return
*/
public List<Pai> newRandom(){
Random random=new Random();
for(int i=0;i<52;i++){
int j;
Pai pai;
j=random.nextInt(newPai.size());
pai=newPai.get(j);
randomPai.add(pai);
newPai.remove(j);
}
return randomPai;
}
/**
* 展示randomPai
*/
public void showRandom(){
System.out.println("现有random牌如下:");
for(int i=0;i<(randomPai.size());i++){
System.out.print(randomPai.get(i).getID()+":"+randomPai.get(i).getColur()+randomPai.get(i).getNum()+" ");
if((i+1)%4==0)System.out.println();
}
}
}
package first;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
/**
* 玩家类
* @author Administrator
*
*/
public class Player {
/**
* 构造器
*/
public Player(){
this.myPai=new ArrayList<Pai>();
}
private String id;
private String name;
private List<Pai>myPai;
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 List<Pai> getMyPai() {
return myPai;
}
public void setMyPai(Pai pai) {
this.myPai.add(pai);
Collections.sort(this.myPai);
}
}
package first;
import java.util.List;
import java.util.Random;
import java.util.Scanner;
import javax.print.DocFlavor.INPUT_STREAM;
/**
* 游戏类
* @author Administrator
*
*/
public class Game {
/**
* Game构造器
* 初始化一副牌
* 初始化两名玩家
*/
public Game(){
player1=new Player();
player2=new Player();
BuildingAndChangePai bacp=new BuildingAndChangePai();
bacp.builder();
this.randomPai=bacp.newRandom();
System.out.print("输入玩家1的ID:");
String string=input.nextLine();
player1.setId(string);
System.out.print("输入玩家1的姓名:");
player1.setName(input.nextLine());
System.out.print("输入玩家2的ID:");
player2.setId(input.nextLine());
System.out.print("输入玩家2的姓名:");
player2.setName(input.nextLine());
}
static Scanner input=new Scanner(System.in);
List<Pai>randomPai;
Player player1;
Player player2;
/**
* main方法
*/
public static void main(String[] args) {
int check=2;
do {
Game game=new Game();
int i;
System.out.print("输入手牌数目:");
i=input.nextInt();
game.dilver(i);
game.compare();
System.out.print("是否继续(1.是 2.否):");
check=input.nextInt();
} while (check==1);
}
/**
* 发牌方法
* 传入每人将要有的手牌数目i
*/
public void dilver(int i){
Random random=new Random();
int k;
for(int j=0;j<i;j++){
k=random.nextInt(randomPai.size());
player1.setMyPai(randomPai.get(k));
randomPai.remove(k);
k=random.nextInt(randomPai.size());
player2.setMyPai(randomPai.get(k));
randomPai.remove(k);
}
System.out.println("发牌完毕,两位玩家手牌如下:");
System.out.print("玩家1:");
for(Pai newPai:player1.getMyPai()){
System.out.print(newPai.getID()+":"+newPai.getColur()+newPai.getNum()+" ");
}
System.out.println();
System.out.print("玩家2:");
for(Pai newPai:player2.getMyPai()){
System.out.print(newPai.getID()+":"+newPai.getColur()+newPai.getNum()+" ");
}
System.out.println();
}
public void compare(){
if(player1.getMyPai().get(0).getID()<player2.getMyPai().get(0).getID()){
System.out.println("玩家1"+player1.getName()+"赢");
}else System.out.println("玩家2"+player2.getName()+"赢");
System.out.println(player1.getName()+"最大牌为"+player1.getMyPai().get(0).getColur()+player1.getMyPai().get(0).getNum());
System.out.println(player2.getName()+"最大牌为"+player2.getMyPai().get(0).getColur()+player2.getMyPai().get(0).getNum());
}
}
|