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

菜鸟的一天,代码有点乱啊,都来指点指点,哪里改进

-------------------------------------------------------------
package com.puke;
public class Puke {
 public String type;
 public String number;
 public Puke(){
  
 }
 //初始化
 public Puke(String type,String number){
  this.type=type;
  this.number=number;
 } 
}
--------------------------------------------------------------
package com.puke;
import java.util.ArrayList;
import java.util.List;
public class Person {
 public String id;
 public String name;
 public List<Puke> list;
 //初始化
 public Person(String id,String name){
  this.id=id;
  this.name=name;
  this.list=new ArrayList<Puke>();
 }
}
----------------------------------------------------------------
package com.puke;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeSet;
public class Test {
 public List<Puke> pukeList;
 Puke creatpuke[]={new Puke("黑桃","2"),new Puke("黑桃","3"),new Puke("黑桃","4"),new Puke("黑桃","5"),new Puke("黑桃","6"),new Puke("黑桃","7"),new Puke("黑桃","8"),new Puke("黑桃","9"),new Puke("黑桃","10"),new Puke("黑桃","J"),new Puke("黑桃","Q"),new Puke("黑桃","K"),new Puke("黑桃","A"),
     new Puke("红桃","2"),new Puke("红桃","3"),new Puke("红桃","4"),new Puke("红桃","5"),new Puke("红桃","6"),new Puke("红桃","7"),new Puke("红桃","8"),new Puke("红桃","9"),new Puke("红桃","10"),new Puke("红桃","J"),new Puke("红桃","Q"),new Puke("红桃","K"),new Puke("红桃","A"),
     new Puke("梅花","2"),new Puke("梅花","3"),new Puke("梅花","4"),new Puke("梅花","5"),new Puke("梅花","6"),new Puke("梅花","7"),new Puke("梅花","8"),new Puke("梅花","9"),new Puke("梅花","10"),new Puke("梅花","J"),new Puke("梅花","Q"),new Puke("梅花","K"),new Puke("梅花","A"),
     new Puke("方片","2"),new Puke("方片","3"),new Puke("方片","4"),new Puke("方片","5"),new Puke("方片","6"),new Puke("方片","7"),new Puke("方片","8"),new Puke("方片","9"),new Puke("方片","10"),new Puke("方片","J"),new Puke("方片","Q"),new Puke("方片","K"),new Puke("方片","A"),};
 Scanner sn=new Scanner(System.in);
 //两位玩家
 Person ps1;
 Person ps2;
 //发的四张牌
 public Puke pk0;
 public Puke pk1;
 public Puke pk2;
 public Puke pk3;
 public Test(){
  this.pukeList=new ArrayList<Puke>();
 }
 /*
  * 创建扑克牌
  */
 public void creatPuke(){
  System.out.println("------------------创建一副扑克牌-----------------");
  pukeList.addAll(0,Arrays.asList(creatpuke));//把数组所有的牌放到集合中去
  System.out.println("------------------创建扑克牌成功--------------------");
  //显示创建的扑克牌
  for(int i=0;i<pukeList.size();i++){
   Puke pk=pukeList.get(i);
   System.out.print(pk.type+pk.number+" ");
  }
  System.out.println(" ");
 }
 /*
  * 洗牌
  */
 public void xiPuke(){
  System.out.println("------------------开始洗牌--------------------");
  //打乱List集合顺序
  Collections.shuffle(pukeList);
  //用迭代器输出洗完的牌,测试洗牌成功了没?
//  Iterator<Puke> it=pukeList.iterator();
//  while(it.hasNext()){
//   Puke pk=it.next();
//   System.out.print(pk.type+pk.number+" ");
//  }
//  System.out.println("");
  System.out.println("------------------洗牌完毕--------------------");
 }
 /*
  * 发牌
  */
 public void faPuke(){
  //输入玩家信息
  System.out.println("请输入第一位玩家的id:");
  String id1=sn.next();
  System.out.println("姓名:");
  String name1=sn.next();
  
  System.out.println("请输入第二位玩家的id:");
  String id2=sn.next();
  System.out.println("姓名:");
  String name2=sn.next();
  //创建两个玩家对象
  System.out.println("------------------开始发牌-------------------");
  ps1=new Person(id1,name1);
  ps2=new Person(id2,name2);
  //发的牌 放到两个集合中
  List<Puke> list1=new ArrayList();
  List<Puke> list2=new ArrayList();
  //各自拿牌
  System.out.println("******"+ps1.name+"拿牌");
  pk0=pukeList.get(0);
  list1.add(pk0);
  System.out.println("******"+ps2.name+"拿牌");
  pk1=pukeList.get(1);
  list2.add(pk1);
  System.out.println("******"+ps1.name+"拿牌");
  pk2=pukeList.get(2);
  list1.add(pk2);
  System.out.println("******"+ps2.name+"拿牌");
  pk3=pukeList.get(3);
  list2.add(pk3);
  //输出他们拿到的牌
  System.out.println(ps1.name+"的手牌为:"+pk0.type+pk0.number+" "+pk2.type+pk2.number);
  System.out.println(ps2.name+"的手牌为:"+pk1.type+pk1.number+" "+pk3.type+pk3.number);
  
 }
 /*
  *  比较扑克牌的大小,先比大小,再比花色
  */
 public void equalsPuke(){
  //清空List集合
  pukeList.removeAll(pukeList);
  //新建原List集合,主要是原集合中的元素位置,可以帮助我们判断玩家扑克的大小
  pukeList.addAll(0,Arrays.asList(creatpuke));
  //第一位玩家
  int xSuoyin=pukeList.indexOf(pk0);//第一张扑克在List中的索引
  int xNumber=xSuoyin%13;//第一张牌的牌号
  int ySuoyin=pukeList.indexOf(pk2);//第二张扑克在List中的索引
  int yNumber=ySuoyin%13;//第二张牌的牌号
  int maxSuoyin=xSuoyin<ySuoyin? ySuoyin:xSuoyin;//最大扑克牌的索引
  int maxNumber=xNumber<yNumber? yNumber+2:xNumber+2;//最大扑克牌的牌号
  //第二位玩家
  int xSuoyin2=pukeList.indexOf(pk1);//第一张扑克在List中的索引
  int xNumber2=xSuoyin2%13;//第一张牌的牌号
  int ySuoyin2=pukeList.indexOf(pk3);//第二张扑克在List中的索引
  int yNumber2=ySuoyin2%13;//第二张牌的牌号
  int maxSuoyin2=xSuoyin2<ySuoyin2? ySuoyin2:xSuoyin2;//最大扑克牌的索引
  int maxNumber2=xNumber2<yNumber2? yNumber2+2:xNumber2+2;//最大扑克牌的牌号
  //比较她们各自最大的牌
//测试下他们的索引,最大牌,14为A;
//  System.out.print(ps1.name+" 最大索引"+maxSuoyin);
//  System.out.println(ps2.name+" 最大索引"+maxSuoyin2);
//  System.out.print(ps1.name+" 最大牌:"+maxNumber);
//  System.out.println(ps2.name+" 最大牌:"+maxNumber2);
  System.out.println("");
  if(maxNumber>maxNumber2){
   System.out.println(ps1.name+" 玩家获胜啦!");
  }else if(maxNumber<maxNumber2){
   System.out.println(ps2.name+" 玩家获胜啦!");
  }else{
   if(maxSuoyin<maxSuoyin2) System.out.println(ps2.name+" 玩家获胜啦!");
   else if(maxSuoyin>maxSuoyin2)System.out.println(ps1.name+" 玩家获胜啦!");
   else{
    System.out.println("---胜负难以分晓,再战一局---");
   }
  }
 }
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  Test test=new Test();
  test.creatPuke();
  test.xiPuke();
  test.faPuke();
  test.equalsPuke();
 }
}

正在回答

4 回答

这个游戏里面不可能出现平局,因为每一张扑克牌都是不一样的。

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

比较扑克牌大小那里没有看懂。。。是怎么比较的呀?花色是汉字 ,那个要怎么比较?还有怎么让JQK比之前是数字大???

1 回复 有任何疑惑可以回复我~
#1

qq_甘蔗_0

按照索引比较的,一开始创建扑克牌的时候是按大小排列的,13张牌一轮,每种花色13张,所以要%13 如果结果相同,就/13比大小
2015-11-09 回复 有任何疑惑可以回复我~
#2

去南极给企鹅洗热水澡 回复 qq_甘蔗_0

嗯嗯 知道了 谢谢
2015-11-14 回复 有任何疑惑可以回复我~

提几点建议:

1:注意JAVA良好的封装性,Person,Puke类成员变量设置成private比较好,调用get函数返回私有变量;

2:比大小那里,我觉得分两步,一:写一个工具类,返回玩家手里最大的牌;二:比较所有玩家手里最大的牌看谁的最大;

这样是否更加贴近现实呢?

代码还是写得很不错的.

看了你的代码后我就偷下懒了,哈哈

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

很棒的代码,

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

举报

0/150
提交
取消

菜鸟的一天,代码有点乱啊,都来指点指点,哪里改进

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