嘿嘿,通過(guò)看完1-3季節(jié),自己寫的,希望各位大佬指點(diǎn)一下。
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("------洗牌結(jié)束--------");
for (Pkpai pkp : ls) {
System.out.print(pkp);
}
}
public void InitialPlayerAndGame() {
//初始化玩家1
System.out.println("");
System.out.println("請(qǐng)輸入玩家1的ID:");
int id1=console.nextInt();
System.out.println("請(qǐng)輸入玩家1的名字:");
String name1=console.next();
Player py1=new Player();
py1.ID=id1;
py1.name=name1;
? ?//初始化玩家2
System.out.println("請(qǐng)輸入玩家2的ID:");
? ? int id2=console.nextInt();
System.out.println("請(qǐng)輸入玩家2的名字:");
String name2=console.next();
Player py2=new Player();
py2.ID=id2;
py2.name=name2;
System.out.println("-------開始發(fā)牌-------");
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+"號(hào)玩家,"+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+"號(hào)玩家,"+py2.name+",獲得的手牌為:"+py2.Spai);
//在Pkpai中對(duì)compareTo方法進(jìn)行重寫了,然后再對(duì)玩家手牌進(jìn)行由大到小排序,最后只需對(duì)比玩家手中第一張手牌的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();
}
}
2018-11-20
個(gè)人覺(jué)得 你在輸出結(jié)果的時(shí)候,可以把player1和player2改成py1.Spa和py2.Spa更好,因?yàn)檩敵鼋Y(jié)果,你沒(méi)說(shuō)明是輸出手里最大的牌!