斗牛游戏规则简化版

仅进行牛一~牛九以及斗牛的判断

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

/**
 * @author tom
 * @version V1.0
 * @Package PACKAGE_NAME
 * @date 2023/2/21 8:54
 * @Copyright © 网时代
 */
public class game {
    public static void main(String[] args) {
            //将牌型存入list集合 牌发完前不重复调用
            List<String> pokerlist = PokerList();
            //生成随机数 0- 51
            Random random = new Random();
            int index = 0;
            int []card1 = new int [10];
                if (pokerlist.size() < 5){
                System.out.print("游戏结束,剩余"+pokerlist.size());
            }else{
                for (int i = 0; i < 10 ; i++) {
                    //循环十次发十张牌
                    index = random.nextInt(pokerlist.size());
                    String poker = pokerlist.get(index);
                    //String number = poker.substring(1);
                    //System.out.println(number + "!");
                    //System.out.println(poker + "!");
                
                   if(poker.length() == 2) {
                     char cardnumber = poker.charAt(1);
                   if(cardnumber!= 'A' && cardnumber!= 'K' && cardnumber !='Q' && cardnumber != 'J') {
                       card1[i] = cardnumber - '0';
                   }
                   else if(cardnumber == 'A') {
                       card1[i] = 1;
                   }
                   else {
                       card1[i] = 10;
                       }  
                   }
                   else 
                       card1[i] = 10;
                   //System.out.println(cardnumber + "!");
                    if (pokerlist.size() == 0 ) {
                        System.out.print("游戏结束牌已发完,剩余"+pokerlist.size());
                    }
                    System.out.print(poker+ " ");
                    pokerlist.remove(index);
                    }
                }
//            for(int i=0;i<10;i++) {
//                System.out.print(card1[i] + " ");
//            }     输出发出牌的点数
            int result = BullJudge(card1);
            if(result == 1)
                System.out.print("player 2 win!");
            else if (result == 2)
                System.out.print("draw!");
            else if(result == 3)
                System.out.print("player 1 win!");
            else if (result == 0)
                System.out.print("No Bull and draw!");
    }
    //大小判断函数
    public static int BullJudge(int []card) {
        int player1 = 0,player2 = 0;
        int playerone = -1 , playertwo = -1;
        int x = 0;
        for(int i=0;i<5;i++) {
            player1 += card[i];
            player2 += card[i+5];
        }
        for(int i=0; i<3;i++) {
            int cardi = card[i];
            for(int j=i+1;j<4;j++) {
                int cardj = card[j];
                for(int k = j+1;k<5 ;k++) {
                    int cardk = card[k];
                    int total = cardi + cardj + cardk;
                    if(total%10 ==0 && total >=10) {
                        int n=0;
                        if(player1 - total !=10 &&player1 - total !=20)
                            n= (player1 - total) %10;
                        else
                            n = 10;
//                        System.out.println("\n" + cardi +" "+cardj + " "+cardk+ " "+"1");
                        playerone = playerone < n ? n:playerone;
                    }
                }
            }
        }
        for(int i=5; i<8;i++) {
            int cardi = card[i];
            for(int j=i+1;j<9;j++) {
                int cardj = card[j];
                for(int k = j+1;k<10 ;k++) {
                    int cardk = card[k];
                    int total = cardi + cardj + cardk;
                    if(total%10 ==0 && total >=10) {
                        int n=0;
                        if(player2 - total !=10 &&player2 - total !=20)
                            n= (player2 - total) %10;
                        else
                            n = 10;
//                        System.out.println("\n" + cardi +" "+cardj + " "+cardk +" "+"2");
                        playertwo = playertwo < n ? n:playertwo;
                    }
                }
            }
        }
        System.out.println("\n" + playerone +" "+playertwo); //输出两名玩家的点数
        if(playertwo > playerone) {
            x=1;
            return x;
        }
        else if(playerone == playertwo && playerone != -1 && playertwo != -1) {
            x=2;
            return x;
        }
            
        else if(playerone > playertwo) {
            x=3;
            return x;
        }
        return 0;
    }
    /***
     * 初始化牌型
     * @return pokerlist 牌型集合
     */
    public static List<String>  PokerList(){
            //定义数字
            String[] nums = {"2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A"};
            //定义花色
            String[] color = {"♠", "♥", "♣", "♦",};
            //定义集合存入每张牌
            List<String> pokerlist = new ArrayList<>();
            //下标从0开始
            int C = 0 ;
            for (int i = 0; i < nums.length; i++) {
                for (int j = 0; j < color.length; j++) {
                    String poker = color[j] + nums[i];
                    //指定下标存入牌型
                    pokerlist.add(C,poker);
                    //System.out.print(poker + " "); 输入牌型
                    C++ ;
                }
                //System.out.println();
            }
            return pokerlist;
        }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值