發新話題

[JAVA] 用物件來處理發牌

[JAVA] 用物件來處理發牌

引用:
import java.util.*;
class player{
        private int[] card=new int[13];//記錄手上的牌
        private String[] cname={"梅花","方塊","紅心","黑桃"};
        /**建構元,用來先把牌清乾淨***/
        public  player()
        {
                int i;
                for (i=0;i<13;i=i+1)  card=-1;
        }
                /**** 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);
        }
}
public class a10b
{
        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 p1=new player();//定義四家玩家
                player p2=new player();
                player p3=new player();
                player p4=new player();

//---------------起始值設定------
                for (i=0;i<=51;i=i+1)
                        dcard=0;

//-------------由電腦亂數發牌------
                for (j=0;j<num;j=j+1)  //發給一家
                        {
                                x=randomG.nextInt(52);
                                while (dcard[x]!=0) x=randomG.nextInt(52);
                                p1.set_card(j,x);
                                dcard[x]=1;
                        }
                for (j=0;j<num;j=j+1)  //發給一家
                        {
                                x=randomG.nextInt(52);
                                while (dcard[x]!=0) x=randomG.nextInt(52);
                                p2.set_card(j,x);
                                dcard[x]=1;
                        }
                for (j=0;j<num;j=j+1)  //發給一家
                        {
                                x=randomG.nextInt(52);
                                while (dcard[x]!=0) x=randomG.nextInt(52);
                                p3.set_card(j,x);
                                dcard[x]=1;
                        }
                for (j=0;j<num;j=j+1)  //發給一家
                        {
                                x=randomG.nextInt(52);
                                while (dcard[x]!=0) x=randomG.nextInt(52);
                                p4.set_card(j,x);
                                dcard[x]=1;
                        }
//-----------顯示到瑩幕-------
               System.out.println("第一家的牌如下:");
                for (j=0;j<num;j=j+1)
                                System.out.print(p1.show(j)+" ");
                System.out.println("");
                 System.out.println("第二家的牌如下:");
                for (j=0;j<num;j=j+1)
                                System.out.print(p2.show(j)+" ");
                System.out.println("");
                 System.out.println("第三家的牌如下:");
                for (j=0;j<num;j=j+1)
                                System.out.print(p3.show(j)+" ");
                System.out.println("");
                 System.out.println("第四家的牌如下:");
                for (j=0;j<num;j=j+1)
                                System.out.print(p4.show(j)+" ");
                System.out.println("");
                        
        }
}

TOP

引用:
import java.util.*;
class player{
         private int[] card=new int[13];//記錄手上的牌
        private String[] cname={"梅花","方塊","紅心","黑桃"};
        /**建構元,用來先把牌清乾淨***/
        public player()
        {
                int i;
                for (i=0;i<13;i=i+1)  this.card=-1;
        }
                /**** 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==-1) //那個位置沒有牌
                        {
                                card=x;
                                flag=1;
                                break; //發完牌就可以跳出去了
                        }//if card
                }//for
                if (flag==0) System.out.println("錯誤!本家發超過13張牌"+x);
        }
}
public class a10c
{
        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 p1=new player();//定義四家玩家
                player p2=new player();
                player p3=new player();
                player p4=new player();

//---------------起始值設定------
                for (i=0;i<=51;i=i+1)
                        dcard=0;

//-------------由電腦亂數發牌------
                for (j=0;j<num;j=j+1)  //發給一家
                        {
                                x=randomG.nextInt(52);
                                while (dcard[x]!=0) x=randomG.nextInt(52);
                                p1.set_card(x);
                                dcard[x]=1;
                        }
                for (j=0;j<num;j=j+1)  //發給一家
                        {
                                x=randomG.nextInt(52);
                                while (dcard[x]!=0) x=randomG.nextInt(52);
                                p2.set_card(j,x);
                                dcard[x]=1;
                        }
                for (j=0;j<num;j=j+1)  //發給一家
                        {
                                x=randomG.nextInt(52);
                                while (dcard[x]!=0) x=randomG.nextInt(52);
                                p3.set_card(j,x);
                                dcard[x]=1;
                        }
                for (j=0;j<num;j=j+1)  //發給一家
                        {
                                x=randomG.nextInt(52);
                                while (dcard[x]!=0) x=randomG.nextInt(52);
                                p4.set_card(j,x);
                                dcard[x]=1;
                        }
//-----------顯示到瑩幕-------
               System.out.println("第一家的牌如下:");
                for (j=0;j<num;j=j+1)
                                System.out.print(p1.show(j)+" ");
                System.out.println("");
                 System.out.println("第二家的牌如下:");
                for (j=0;j<num;j=j+1)
                                System.out.print(p2.show(j)+" ");
                System.out.println("");
                 System.out.println("第三家的牌如下:");
                for (j=0;j<num;j=j+1)
                                System.out.print(p3.show(j)+" ");
                System.out.println("");
                 System.out.println("第四家的牌如下:");
                for (j=0;j<num;j=j+1)
                                System.out.print(p4.show(j)+" ");
                System.out.println("");
                        
        }
}

TOP

發新話題

本站所有圖文均屬網友發表,僅代表作者的觀點與本站無關,如有侵權請通知版主會盡快刪除。