做完了,但感觉代码好多累赘的地方,想改一改就其他地方出错了。但至少可以运行结果了。希望大神指出问题哦
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();//开始游戏
}
}
还有就是不知道怎么判断正整数这个问题?希望可以得到大神帮助!