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

嘿嘿,通过看完1-3季节,自己写的,希望各位大佬指点一下。

package pKg;

//扑克牌类

public class Pkpai implements Comparable<Pkpai>{

 public String number;

 public String paiColor;

 public int id;

  public Pkpai(String number,String paiColor,int id) {

// TODO Auto-generated constructor stub

  this.number=number;

  this.paiColor=paiColor;

  this.id=id;

}

  @Override

public String toString() {

// TODO Auto-generated method stub

return paiColor+number;

}

@Override

public int compareTo(Pkpai o) {

// TODO Auto-generated method stub

return o.id-this.id;

}

}


//玩家类


package pKg;

import java.util.ArrayList;

import java.util.List;

import java.util.Set;


public class Player {

 public int ID;

 public String name;

 public List<Pkpai>Spai=new ArrayList<Pkpai>();

 public Player(int ID,String name) {

// TODO Auto-generated constructor stub

this.ID=ID;

this.name=name;

}

 public Player() { 

 }

}


//初始化游戏类


package pKg;


import java.util.ArrayList;

import java.util.Collections;

import java.util.List;

import java.util.Random;

import java.util.Scanner;

import java.util.Set;



public class InitialPkGame {

public Scanner console=new Scanner(System.in);

public List<Pkpai>ls=new ArrayList<Pkpai>();

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

String[] HS={"方块","梅花","红桃","黑桃"};

public void Initial() {

//定义m是为了给每一张牌有从小到大的id,方便后面的比较大小

int m = 0;

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

for(int j=0;j<4;j++) {

ls.add(new Pkpai(nb[i], HS[j],m++));

}

}

for (Pkpai pkp : ls) {

System.out.print(pkp);

}

System.out.println("");

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

Collections.shuffle(ls);

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

for (Pkpai pkp : ls) {

System.out.print(pkp);

}

}

public void InitialPlayerAndGame() {

//初始化玩家1

System.out.println("");

System.out.println("请输入玩家1的ID:");

int id1=console.nextInt();

System.out.println("请输入玩家1的名字:");

String name1=console.next();

Player py1=new Player();

py1.ID=id1;

py1.name=name1;

   //初始化玩家2

System.out.println("请输入玩家2的ID:");

    int id2=console.nextInt();

System.out.println("请输入玩家2的名字:");

String name2=console.next();

Player py2=new Player();

py2.ID=id2;

py2.name=name2;

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

int index1=0;

Random random=new Random();

//一人取2次牌,和老师要求一人取一次这样不太符合。嘿嘿

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

    index1=random.nextInt(ls.size());

    if(!py1.Spai.contains(ls.get(index1)))

    {

    py1.Spai.add(ls.get(index1));

    }

    }

System.out.println(py1.ID+"号玩家,"+py1.name+",获得的手牌为:"+py1.Spai);

int index2=0;

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

index2=random.nextInt(ls.size());

//如果玩家1与玩家2的手牌相似,则玩家二重新取牌

if(index1==index2)

continue;

if(!py2.Spai.contains(ls.get(index2)))

{

py2.Spai.add(ls.get(index2));

}

}

System.out.println(py2.ID+"号玩家,"+py2.name+",获得的手牌为:"+py2.Spai);

//在Pkpai中对compareTo方法进行重写了,然后再对玩家手牌进行由大到小排序,最后只需对比玩家手中第一张手牌的ID即可

Collections.sort(py1.Spai);

Collections.sort(py2.Spai);

Pkpai player1=py1.Spai.get(0);

Pkpai player2=py2.Spai.get(0);

if(player1.id>player2.id) {

System.out.println("玩家:"+py1.name+"获胜"+",手牌为"+player1);

}else {

System.out.println("玩家:"+py2.name+"获胜"+",手牌为"+player2);

}

}



public static void main(String[] args) {

// TODO Auto-generated method stub

       InitialPkGame iPkGame=new InitialPkGame();

       iPkGame.Initial();

       iPkGame.InitialPlayerAndGame();

}

}


正在回答

1 回答

个人觉得 你在输出结果的时候,可以把player1和player2改成py1.Spa和py2.Spa更好,因为输出结果,你没说明是输出手里最大的牌!


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

举报

0/150
提交
取消

嘿嘿,通过看完1-3季节,自己写的,希望各位大佬指点一下。

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