诈金花游戏代码,望给予指点

源代码:

package se;

import java.util.Arrays;
import java.util.Scanner;

public class Test4_7 {

 /**
  * @param args
  */
 static String[][] cards={{"2","3","4","5","6","7","8","9","10","J","Q","K","A"},
                   {"2","3","4","5","6","7","8","9","10","J","Q","K","A"},
                      {"2","3","4","5","6","7","8","9","10","J","Q","K","A"},
                      {"2","3","4","5","6","7","8","9","10","J","Q","K","A"}};
 static int[] bluk=new int[6];
 static int[] color=new int[6];
 public static void main(String[] args) {
  Scanner scan=new Scanner(System.in);
  System.out.println("请玩家输入赌注!");//关于赌注可以扩展一下,计算输赢的总金额,递归一下就可以
  double money=scan.nextDouble();
  Test4_7 ts=new Test4_7();
  ts.random();
  boolean winner=ts.compare();
  System.out.println();
  String[] colour=new String[6];
  for(int i=0;i<6;i++)
  {
    if(color[i]==0)
     colour[i]="红桃";
    if(color[i]==1)
     colour[i]="方片";
    if(color[i]==2)
     colour[i]="黑桃";
    if(color[i]==3)
     colour[i]="梅花";
  }
  for(int i=0;i<3;i++)
  {
   System.out.print(colour[i]+" "+cards[color[i]][bluk[i]]);
   for(int j=0;j<6-i;j++)
   {
    System.out.print(" ");
    
   }
   for(int m=0;m<(2*i+1);m++)
    System.out.print("$");
   for(int j=6;j>=0;j--)
   {
    System.out.print(" ");
    
   }
   System.out.println(colour[i+3]+" "+cards[color[i+3]][bluk[i+3]]);
  }
  System.out.println();
  if(winner==false)
   System.out.println("OH! NO!你输了!");
  else
   System.out.println("OH! YE!你赢了!");
 }

 public void random()//随机生成6张牌,前三张是电脑的,后三张是玩家的
 { 
  String[][] cd=new String[4][13];
  for(int i=0;i<4;i++)
   for(int j=0;j<13;j++)
   {
    cd[i][j]="have";
   }
  int rand=0;
  int random=0;
  for(int i=0;i<6;i++)
  {
   rand=(int)(Math.random()*10);
   while(rand>=4)
    rand=(int)(Math.random()*10);
   color[i]=rand;
  }
  for(int j=0;j<6;j++)
  {
   random=(int)(Math.random()*100);
   while(random>12)
   { 
    random=(int)(Math.random()*100);
   }
   while(cd[color[j]][random]==null)
   {
    random=(int)(Math.random()*100);
    while(random>12)
    { 
     random=(int)(Math.random()*100);
    }
   }
   bluk[j]=random;
   cd[color[j]][random]=null;
  }
 }
 
 public boolean compare()//双方的牌的大小的比较
 {
  boolean flag=false;
  int[] a=new int[3];//
  int[] b=new int[3];//将玩家的牌大到小排序,以便后边比较用到
  for(int j=0;j<3;j++)
  {
   a[j]=bluk[j];
   b[j]=bluk[j+3];
  } 
  Arrays.sort(a);
  Arrays.sort(b);//将玩家的牌大到小排序,以便后边比较用到
  for(int i=0;i<1;i++)
  {
    if((bluk[0]==bluk[1]&&bluk[1]==bluk[2])||(bluk[3]==bluk[4]&&bluk[4]==bluk[5]))
    {
     System.out.println("豹子");//主要是便于找错,同时可以明了牌的情况
     if(bluk[0]==bluk[1]&&bluk[1]==bluk[2]&&bluk[3]==bluk[4]&&bluk[4]==bluk[5])
     {
      if(bluk[0]>bluk[3])
      {
       flag=false;
      }
      else
       flag=true;
     }
     if((bluk[0]==bluk[1]&&bluk[1]==bluk[2])&&(bluk[3]!=bluk[4]||bluk[4]!=bluk[5]||bluk[4]!=bluk[5]))
     {
      flag=false;
     }
     else
      flag=true;
     break;
    }
    if((color[0]==color[1]&&color[1]==color[2])||(color[3]==color[4]&&color[4]==color[5]))
    {
     System.out.println("同花");
     if(color[0]==color[1]&&color[1]==color[2]&&color[3]==color[4]&&color[4]==color[5])
     {

       if(((a[0]+1)%13==a[1]&&(a[1]+1)%13==a[2])&&((b[0]+1)%13==b[1]&&(b[1]+1)%13==b[2]))
       {
        if(a[2]>b[2])
        flag=false;
        else
         flag=true;
       }
       if(((a[0]+1)%13==a[1]&&(a[1]+1)%13==a[2])&&((b[0]+1)%13!=b[1]||(b[1]+1)%13!=b[2]))
       {
        flag=false;
       }
       if(((a[0]+1)%13!=a[1]||(a[1]+1)%13!=a[2])&&((b[0]+1)%13==b[1]&&(b[1]+1)%13==b[2]))
        flag=true;
       else
       {
        if(a[2]>b[2])
         flag=false;
        else
         flag=true;
       }
     }
     if((color[0]==color[1]&&color[1]==color[2])&&(color[3]!=color[4]||color[4]!=color[5]))
     {
      flag=false;
     }
     else
      flag=true;
     break;
    }
    if(((a[0]+1)%13==a[1]&&(a[1]+1)%13==a[2])||((b[0]+1)%13==b[1]&&(b[1]+1)%13==b[2]))
    {
     System.out.println("顺子");
     if(((a[0]+1)%13==a[1]&&(a[1]+1)%13==a[2])&&((b[0]+1)%13!=b[1]||(b[1]+1)%13!=b[2]))
     {
      flag=false;
     }
     if(((a[0]+1)%13!=a[1]||(a[1]+1)%13!=a[2])&&((b[0]+1)%13==b[1]&&(b[1]+1)%13==b[2]))
     {
      flag=true;
     }
     else
     {
      if(a[2]>=b[2])
       flag=false;
      else
       flag=true;
     }
     break;
    }
    if(((a[0]==a[1])||a[0]==a[2]||a[1]==a[2])||((b[0]==b[1])||b[0]==b[2]||b[1]==b[2]))
    {
     System.out.println("对子");
     if(((a[0]==a[1])||a[0]==a[2]||a[1]==a[2])&&((b[0]!=b[1])&&b[0]!=b[2]&&b[1]!=b[2]))
      flag=false;
     if(((a[0]!=a[1])&&a[0]!=a[2]&&a[1]!=a[2])&&((b[0]==b[1])||b[0]==b[2]||b[1]==b[2]))
      flag=true;
     if(((a[0]==a[1])||a[0]==a[2]||a[1]==a[2])&&((b[0]==b[1])||b[0]==b[2]||b[1]==b[2]))
     {
      if(a[1]>b[1])
       flag=false;
      if(a[1]==b[1])
      {
       if(a[0]==b[0]&&a[2]==b[2]){
        flag=false;
        break;
       }
       if(a[0]!=a[1]&&b[0]!=b[1])
       {
        if(a[0]>b[0]){
         flag=false;
        }
        else{
         flag=true;
        }
        break;
       }
       if(a[2]!=a[1]&&b[2]!=b[1])
       {
        if(a[2]>b[2]){
         flag=false; 
        }
        else{
         flag=true;
        }
        break;
       }
       if(a[2]!=a[1]&&b[2]==b[1])
       {
        flag=true;
        break;
       }
       else{
        flag=false;
        break;
       }
      }
      if(a[1]<b[1])
       flag=true;
     }
     break;
    }
    if((a[0]!=a[1]&&a[1]!=a[2]&&a[2]!=a[0])&&(color[0]!=color[1]||color[1]!=color[2]||color[0]!=color[2]))
    {
     System.out.println("单张");
     if(a[2]>b[2])
     {
      flag=false;
      break;
     }
     if(a[2]==b[2])
     {
      if(a[1]>b[1]){
       flag=false;
       break;
      }
      if(a[1]==b[1])
      {
       if(a[0]>b[0]){
        flag=false;
       }
       if(a[0]==b[0]){
        flag=false;
       }
       else{
        flag=true;
        }
      }
      else{
       flag=true;
      }
     }
     else{
      flag=true;
     }
     
    }
    break;

  }
  return flag;
  
 }

}

 

 

本程序本人自己编写其中不足之处,请大牛们能提出好的意见,谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值