嘿嘿,通过看完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();
}
}