// 用物件來處理發牌。 import java.util.*; class player{ private int[] card=new int[13];//記錄手上的牌 private static String[] cname={"梅花","方塊","紅心","黑桃"}; //共用的對照表可以用static private static int obj_cnt=0; //共用的物件技術器 /**建構元,用來先把牌清乾淨***/ public player() { int i; for (i=0;i<13;i=i+1) this.card[i]=-1; obj_cnt=obj_cnt+1;//登記多了一家 } /**** method 用來show出共有幾個物件 ******/ public static void show_cnt() { System.out.println("目前共有"+obj_cnt+"家"); } /**** method 用來show出第幾張牌 ******/ public String show(int id) { int A,B; if (card[id]==-1) return ("沒有這張牌"); else { A=card[id]%4; B=card[id]/4; B=B+2; if (B==14) return (cname[A]+"A"); else if (B==13) return (cname[A]+"K"); else if (B==12) return (cname[A]+"Q"); else if (B==11) return (cname[A]+"J"); else return (cname[A]+B); } } //SHOW /**** method 用來發牌給本玩家 ******/ public void set_card(int id,int x) { if (id<13 && x<52) card[id]=x; else System.out.println("錯誤 id="+id+" x="+x); } /**** method 用來發牌給本玩家,利用overload來處理沒有設定第幾張的時候 ******/ public void set_card(int x) { int i,flag; if (x>52 || x<0) { System.out.println("錯誤 x="+x); return; } //flag用來看看有沒有發到牌 flag=0; for (i=0;i<13;i=i+1) { if (card[i]==-1) //那個位置沒有牌 { card[i]=x; flag=1; break; //發完牌就可以跳出去了 }//if card }//for if (flag==0) System.out.println("錯誤!本家發超過13張牌"+x); } } public class a10f { public static void main(String[] args) { int i,j,x; int[] dcard=new int[52]; //用來記錄該位牌是否已被發出 int num=13; //設定發13張牌 int A,B; Random randomG=new Random(); player[] p=new player[4];//定義四家玩家,配置空間給陣列 for (i=0;i<4;i=i+1) { p[i]=new player(); //為每個元素配置物件 player.show_cnt(); } //---------------起始值設定------ for (i=0;i<=51;i=i+1) dcard[i]=0; //-------------由電腦亂數發牌------ for (i=0;i<4;i=i+1) for (j=0;j