-------------------------------------------------------------
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();
?}
}
2015-12-30
這個游戲里面不可能出現平局,因為每一張撲克牌都是不一樣的。
2015-11-07
比較撲克牌大小那里沒有看懂。。。是怎么比較的呀?花色是漢字 ,那個要怎么比較?還有怎么讓JQK比之前是數字大???
2015-11-07
提幾點建議:
1:注意JAVA良好的封裝性,Person,Puke類成員變量設置成private比較好,調用get函數返回私有變量;
2:比大小那里,我覺得分兩步,一:寫一個工具類,返回玩家手里最大的牌;二:比較所有玩家手里最大的牌看誰的最大;
這樣是否更加貼近現實呢?
代碼還是寫得很不錯的.
看了你的代碼后我就偷下懶了,哈哈
2015-11-07
很棒的代碼,