为了账号安全,请及时绑定邮箱和手机立即绑定

做完了,但感觉代码好多累赘的地方,想改一改就其他地方出错了。但至少可以运行结果了。希望大神指出问题哦

package pukeproject;

玩家类

import java.util.ArrayList;

import java.util.HashSet;

import java.util.List;

import java.util.Scanner;

import java.util.Set;

/**

 * 创建一个类,对玩家的Id,名字,手牌属性定义

 * @author Administrator

 *

 */

public class PlaysPeople {

  public Set<PlaysPeople> playsPeople;

  //实例化

public PlaysPeople() {

 this.playsPeople=new HashSet();

  }

  public String playsName;

  public int id;

  public static List<PuKe> playPuKe = new ArrayList<>();

  public PlaysPeople(int id,String playsName) {

 this.id=id;

 this.playsName=playsName;

  }

  

}

扑克类

package pukeproject;

public class PuKe {

  public String puColor;

  public String puNum;

  public PuKe(String puColor,String puNum) {

 this.puColor=puColor;

 this.puNum=puNum;

  }

  public PuKe() {

 

  }

}


package pukeproject;


import java.util.ArrayList;

import java.util.Collections;

import java.util.List;

import java.util.Random;

import java.util.Scanner;

/**

 * 1.创建一副扑克牌【4花,2-10,J,Q,K,A,不考虑大小王】

 * 2.创建两个玩家

 * 3.洗牌,将之前的牌顺序打乱,Collections.shuffle()

 * 4.发牌,洗牌后的第一张开始,两个玩家,一人一张,一人共两张

 * 5.游戏,1.手中点数大赢,比较手中比较,2.一样则比较花色

 * @author Administrator

 *

 */

public class Initial {

public List<PlaysPeople> playsPeople=new ArrayList<PlaysPeople>();;

public List<PuKe> playPuKe = new ArrayList<PuKe>();

public Initial() {

 this.puke=new ArrayList<PuKe>();

 }

/**

 * 创建两个玩家,id,姓名

 */

public void playsCreat() {

System.out.println("——————创建玩家——————");

for(int i=0;i<2;i++){

System.out.println("输入第"+(i+1)+"位玩家的id和名字:");

Scanner console=new Scanner(System.in);

System.out.println("输入ID:");

Integer id=console.nextInt();

System.out.println("输入姓名:");

String playsName=console.next();

PlaysPeople play=new PlaysPeople(id,playsName);

System.out.println("玩家:"+play.id+",名字:"+play.playsName);

playsPeople.add(play);

}

}

//遍历玩家信息

public void forPeople() {

for (PlaysPeople playspeople : playsPeople) {

PlaysPeople play=new PlaysPeople();

System.out.println(playspeople.id+playspeople.playsName);

}

}

/**

  * 创建一副扑克牌【4花,2-10,J,Q,K,A,不考虑大小王】

* @param args

*/

//创建对象

public List<PuKe> puke; 

//对puke实例化

public void puKe() {

//将牌放入,创建牌对象  黑桃

System.out.println("—————创建扑克牌!——————");

for(int i=2;i<11;i++)

{

PuKe pu=new PuKe("黑桃",i+"");

puke.add(pu);

}

PuKe pu2=new PuKe("黑桃","J");

puke.add(pu2);

PuKe pu3=new PuKe("黑桃","Q");

puke.add(pu3);

PuKe pu4=new PuKe("黑桃","K");

puke.add(pu4);

PuKe pu5=new PuKe("黑桃","A");

puke.add(pu5);

System.out.println("成功放入黑桃!");

//红桃

for(int i=2;i<11;i++)

{

PuKe pu=new PuKe("红桃",i+"");

puke.add(pu);

}

PuKe pu6=new PuKe("红桃","J");

puke.add(pu6);

PuKe pu7=new PuKe("红桃","Q");

puke.add(pu7);

PuKe pu8=new PuKe("红桃","K");

puke.add(pu8);

PuKe pu9=new PuKe("红桃","A");

puke.add(pu9);

System.out.println("成功放入红桃!");

//方片

for(int i=2;i<11;i++)

{

PuKe pu=new PuKe("方片",i+"");

puke.add(pu);

}

PuKe pu10=new PuKe("方片","J");

puke.add(pu10);

PuKe pu11=new PuKe("方片","Q");

puke.add(pu11);

PuKe pu12=new PuKe("方片","K");

puke.add(pu12);

PuKe pu13=new PuKe("方片","A");

puke.add(pu13);

System.out.println("成功放入方片!");

//梅花

for(int i=2;i<11;i++)

{

PuKe pu=new PuKe("梅花",i+"");

puke.add(pu);

}

PuKe pu14=new PuKe("梅花","J");

puke.add(pu14);

PuKe pu15=new PuKe("梅花","Q");

puke.add(pu15);

PuKe pu16=new PuKe("梅花","K");

puke.add(pu16);

PuKe pu17=new PuKe("梅花","A");

puke.add(pu17);

System.out.println("成功放入梅花!");

System.out.println("———————创建扑克牌成功!———————");

}

//遍历扑克牌

public void forPuKe() {

System.out.print("扑克牌有:");

for(int i=0;i<51;i++) {

PuKe pu=new PuKe();

pu=puke.get(i);

System.out.print(pu.puColor+pu.puNum);

}

}

//洗牌

public void washPuKe() {

System.out.println("");

System.out.println("——————开始洗牌————————");

Collections.shuffle(puke);//打乱顺序

System.out.println("———————洗牌结束———————————");

}

//发牌

public void getPuKe() {

//两局游xi

int pukeSize=puke.size();

Random random=new Random();

PuKe pu=new PuKe();

System.out.println("-----开始发牌-------");

for(int i=0;i<2;i++) {

for (PlaysPeople playsPeople : playsPeople) {

pu=puke.get(random.nextInt(pukeSize));

System.out.println("-----玩家"+playsPeople.id+":"+playsPeople.playsName+"拿牌");

   PlaysPeople.playPuKe.add(pu);//将每个人的牌放入playPuKe中

   }

puke.remove(pu);

}

System.out.println("-----发牌结束-------");

}

//游戏

public void gameTest() {

System.out.println("———————开始游戏———————");

//拿出牌,用Comparator比较

PuKe newPuPlay=new PuKe();

PuKe newPuPlay1=new PuKe();

PuKe pu=new PuKe();

pu=PlaysPeople.playPuKe.get(0);//玩家一的第一张手牌

PuKe pu1=new PuKe();

pu1=PlaysPeople.playPuKe.get(1);//玩家一的第二张手牌

//比较玩家手中牌的大小

if(pu1.puNum.compareTo(pu.puNum)>0) {

System.out.println("玩家"+playsPeople.get(0).id+playsPeople.get(0).playsName+"最大的手牌为:"+

pu1.puColor+pu1.puNum);

newPuPlay=pu1;

}else if(pu1.puNum.compareTo(pu.puNum)<0) {

System.out.println("玩家"+playsPeople.get(0).id+playsPeople.get(0).playsName+"最大的手牌为:"+

pu.puColor+pu.puNum);

newPuPlay=pu;

}else if(pu1.puNum.compareTo(pu.puNum)==0) {

if(pu1.puColor.compareTo(pu.puColor)<0) {

System.out.println("玩家"+playsPeople.get(0).id+playsPeople.get(0).playsName+"最大的手牌为:"+

pu.puColor+pu.puNum);

newPuPlay=pu;

}else if(pu1.puColor.compareTo(pu.puColor)>0) {

System.out.println("玩家"+playsPeople.get(0).id+playsPeople.get(0).playsName+"最大的手牌为:"+

pu1.puColor+pu1.puNum);

newPuPlay=pu1;

}

}

PuKe pu2=new PuKe();

pu2=PlaysPeople.playPuKe.get(2);//玩家二的第一张手牌

PuKe pu3=new PuKe();

pu3=PlaysPeople.playPuKe.get(3);//玩家二的第二张手牌

if(pu3.puNum.compareTo(pu2.puNum)>0) {

System.out.println("玩家"+playsPeople.get(1).id+playsPeople.get(1).playsName+"最大的手牌为:"+

pu3.puColor+pu3.puNum);

newPuPlay1=pu3;

}else if(pu3.puNum.compareTo(pu2.puNum)<0) {

System.out.println("玩家"+playsPeople.get(1).id+playsPeople.get(1).playsName+"最大的手牌为:"+

pu2.puColor+pu2.puNum);

newPuPlay1=pu2;

}else if(pu3.puNum.compareTo(pu2.puNum)==0) {

if(pu3.puColor.compareTo(pu2.puColor)<0) {

System.out.println("玩家"+playsPeople.get(1).id+playsPeople.get(1).playsName+"最大的手牌为:"+

pu2.puColor+pu2.puNum);

newPuPlay=pu2;

}else if(pu3.puColor.compareTo(pu3.puColor)>0) {

System.out.println("玩家"+playsPeople.get(1).id+playsPeople.get(1).playsName+"最大的手牌为:"+

pu3.puColor+pu3.puNum);

newPuPlay=pu3;

}

}

//比较玩家最大牌谁的大

if(newPuPlay1.puNum.compareTo(newPuPlay.puNum)>0) {

System.out.println("——————玩家"+playsPeople.get(1).id+playsPeople.get(1).playsName+"获胜!——————");

}else if(newPuPlay1.puNum.compareTo(newPuPlay.puNum)<0) {

System.out.println("——————玩家"+playsPeople.get(0).id+playsPeople.get(0).playsName+"获胜!——————");

}else if(newPuPlay1.puNum.compareTo(newPuPlay.puNum)==0) {

if(newPuPlay1.puColor.compareTo(newPuPlay.puColor)>0) {

System.out.println("——————玩家"+playsPeople.get(1).id+playsPeople.get(1).playsName+"获胜!——————");

}else if(newPuPlay1.puColor.compareTo(newPuPlay.puColor)<0) {

System.out.println("——————玩家"+playsPeople.get(0).id+playsPeople.get(0).playsName+"获胜!——————");

}else {

System.out.println("—————————两个玩家平局!———————————");

}

}

System.out.println("————————玩家各自手中的牌为:————————————");

System.out.println(playsPeople.get(0).playsName+":["+pu.puColor+pu.puNum+","+pu1.puColor+pu1.puNum+"]");

System.out.println(playsPeople.get(1).playsName+":["+pu2.puColor+pu2.puNum+","+pu3.puColor+pu3.puNum+"]");

public static void main(String[] args) {

Initial t1=new Initial();

 t1.puKe();//创建扑克牌

t1.forPuKe();//遍历扑克牌

t1.washPuKe();//洗牌

t1.playsCreat();//创建玩家

t1.getPuKe();//发牌

t1.gameTest();//开始游戏

}

}


还有就是不知道怎么判断正整数这个问题?希望可以得到大神帮助!

正在回答

1 回答

没有平局的情况呀。

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

做完了,但感觉代码好多累赘的地方,想改一改就其他地方出错了。但至少可以运行结果了。希望大神指出问题哦

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信