上交java作业要求注释_注释详细,java入门第三季大作业。

Poker类用于存放扑克牌,重写了equals方法。

//Poker类用于存放扑克牌,重写了equals方法。

public class Poker {

String huaSe;

String dianShu;

public Poker(String huaSe,String dianShu){

this.huaSe=huaSe;

this.dianShu=dianShu;

}

@Override

public int hashCode() {

final int prime = 31;

int result = 1;

result = prime * result + ((dianShu == null) ? 0 : dianShu.hashCode());

result = prime * result + ((huaSe == null) ? 0 : huaSe.hashCode());

return result;

}

@Override

public boolean equals(Object obj) {

if (this == obj)

return true;

if (obj == null)

return false;

if (!(obj instanceof Poker))

return false;

Poker other = (Poker) obj;

if (dianShu == null) {

if (other.dianShu != null)

return false;

} else if (!dianShu.equals(other.dianShu))

return false;

if (huaSe == null) {

if (other.huaSe != null)

return false;

} else if (!huaSe.equals(other.huaSe))

return false;

return true;

}

}

Player1类,用于存放玩家1的信息,重写了equals方法,有一个Poker泛型的集合。

//Player1类,用于存放玩家1的信息,重写了equals方法,有一个Poker泛型的集合。

public class Player1 {

Integer id;

String name;

List player1List;

public Player1(Integer id,String name){

this.id = id;

this.name = name;

player1List = new ArrayList();

}

@Override

public int hashCode() {

final int prime = 31;

int result = 1;

result = prime * result + ((id == null) ? 0 : id.hashCode());

result = prime * result + ((name == null) ? 0 : name.hashCode());

return result;

}

@Override

public boolean equals(Object obj) {

if (this == obj)

return true;

if (obj == null)

return false;

if (!(obj instanceof Player1))

return false;

Player1 other = (Player1) obj;

if (id == null) {

if (other.id != null)

return false;

} else if (!id.equals(other.id))

return false;

if (name == null) {

if (other.name != null)

return false;

} else if (!name.equals(other.name))

return false;

return true;

}

}

Player2类,用于存放玩家2的信息,有一个Poker泛型的集合存放手牌。

//Player2类,用于存放玩家2的信息,有一个Poker泛型的集合存放手牌。

public class Player2 {

Integer id;

String name;

List player2List;

public Player2(Integer id,String name){

this.id = id;

this.name = name;

player2List = new ArrayList();

}

}

下面的是main方法所在的Gmae类。所有方法以及主程序都在这里,有一点要说的是,“public class Game{” 后面应该还有个 “}” 我没有放出来,表示我这个类并没有写完,里面还有很多东西以及方法块。最后这个大括号应该放在主函数后面。

//初始化一个集合,储存扑克牌。

public class Game {

//定义一个扑克牌的集合

ListpokerList;

//定义Player1和Player2类型的变量,(PS:这种用法在课程6-8中有提及)

Player1 player1;

Player2 player2;

public Game(){

pokerList = new ArrayList();

}

下面是创建扑克牌并洗牌的方法。

//创建扑克牌并初始化。

public void initialPork(){

String[] hs ={"黑桃","红心","梅花","方片"};

String[] ds ={"2","3","4","5","6","7","8","9","10","J","Q","K","A"};

//让每种花色和每个点数分别配对组成52副不同的扑克牌。

for(int i = 0;i

for(int j = 0;j

Poker pk =new Poker(hs[i],ds[j]);

pokerList.add(pk);//将每一张扑克牌加入扑克牌集合。

}

}

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

System.out.println("除了大小王一共有"+pokerList.size()+"张扑克牌分别是:");

for(Poker pk:pokerList){//这里用foreach遍历输出所有扑克牌。

System.out.print(pk.huaSe+pk.dianShu+" ");

}

//用shuffle方法洗牌。

Collections.shuffle(pokerList);

System.out.println("***********洗牌完毕***********");

}

创建玩家1的方法块

//创建玩家1的方法块

public void initialPlayer1() {

System.out.println("请输入第一位玩家的id:");

try {//try—catch块用来捕获用户输入ID不是Integer类型的异常

Scanner input = new Scanner(System.in);

Integer id = input.nextInt();

System.out.println("请输入第一位玩家的姓名:");

String name = input.next();

player1 = new Player1(id,name);

} catch (Exception e) {//在catch中处理异常

// TODO: handle exception

System.out.println("输入有误!");

initialPlayer1();

}

}

创建玩家二的方法块

//创建玩家二的方法块

public void initialPlayer2() {

try {//用Try—catch捕获用户输入的异常,同玩家1

Scanner input;

Integer id;

do {//这个do—while循环是为了避免玩家2的id与玩家1相同

System.out.println("请输入第二位玩家的id:");

input = new Scanner(System.in);

id = input.nextInt();

} while (player1.id.equals(id));

String name;

do {//同理为了避免玩家2的name与玩家1的相同

System.out.println("请输入第二位玩家的姓名:");

name = input.next();

} while (player1.name.equals(name));

player2 = new Player2(id,name);

} catch (Exception e) {

// TODO: handle exception

System.out.println("输入有误!");

initialPlayer1();

}

}

下面是比较大小的方法块。

public Poker compare(Poker o1,Poker o2){

//定义一个比较规则,用indexOf方法实现比较大小。

String s1 = "23456789'10'JQKA";

String s2 = "'方片''梅花''红心''黑桃'";

//第一个元素与第二个元素的点数比较。返回大的那个

if(s1.indexOf(o1.dianShu)!=s1.indexOf(o2.dianShu)){

if(s1.indexOf(o1.dianShu)>s1.indexOf(o2.dianShu)){

return o1;

}else{return o2;}

//第一个元素与第二个元素花色的比较。 返回大的那个元素

}else if(s2.indexOf(o1.huaSe)!=s2.indexOf(o2.huaSe)){

if(s2.indexOf(o1.huaSe)>s2.indexOf(o2.huaSe)){

return o1;

}else{return o2;}

//花色和点数都相等那么两张牌大小就相等。

}else{return o1;}

}

游戏的主体逻辑在这个方法里。

public void startGame(){

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

System.out.println("-----玩家"+player1.name+"拿牌");

player1.player1List.add(pokerList.get(0));

System.out.println("-----玩家"+player2.name+"拿牌");

player2.player2List.add(pokerList.get(1));

System.out.println("-----玩家"+player1.name+"拿牌");

player1.player1List.add(pokerList.get(2));

System.out.println("-----玩家"+player2.name+"拿牌");

player2.player2List.add(pokerList.get(3));

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

System.out.println("----------------StartGame-----------");

//定义Poker类型的变量来接受玩家1和玩家2中最大的扑克。

Poker max1 = null;

Poker max2 = null;

//Max中存放总的最大的扑克

Poker Max = null;

//调用compare方法比较出玩家1中最大的手牌。

max1 = compare(player1.player1List.get(0),player1.player1List.get(1)) ;

System.out.println("-----玩家:"+player1.name+"最大的手牌为:"+max1.huaSe+max1.dianShu);

max2 = compare(player2.player2List.get(0),player2.player2List.get(1));

System.out.println("-----玩家:"+player2.name+"最大的手牌为:"+max2.huaSe+max2.dianShu);

//比较出玩家1与玩家二总的最大的牌放入Max中。

Max = compare(max1,max2);

//判断输赢并输出。

if(!(max1.equals(max2))){

if(Max.equals(max1)){

System.out.println("--------------玩家:"+player1.name+"获胜!!-----------------");

}else{

System.out.println("--------------玩家:"+player2.name+"获胜!!-----------------");

}

}else {System.out.println("--------------玩家:"+player1.name+"和玩家:"+player2.name+"平局!------------------");}

System.out.println(player1.name+":"+player1.player1List.get(0).huaSe+player1.player1List.get(0).dianShu+","+player1.player1List.get(1).huaSe+player1.player1List.get(1).dianShu);

System.out.println(player2.name+":"+player2.player2List.get(0).huaSe+player2.player2List.get(0).dianShu+","+player2.player2List.get(1).huaSe+player2.player2List.get(1).dianShu);

}

main方法直接调用方法块就行了。

public static void main(String[] args) {

// TODO Auto-generated method stub

Game game = new Game();

game.initialPork();

game.initialPlayer1();

game.initialPlayer2();

game.sys();

game.startGame();

System.out.println("***************GameOver!******************");

}

最后这个sys方法块,在主函数里我也调用了,其实这个方法并没有太大的作用, 我只是为了追求输出格式跟老师一模一样 -。-

public void sys(){

System.out.println("------欢迎玩家"+player1.name);

System.out.println("------欢迎玩家"+player2.name);

}

下面是运行结果:

AAffA0nNPuCLAAAAAElFTkSuQmCC

AAffA0nNPuCLAAAAAElFTkSuQmCC

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值