为了账号安全,请及时绑定邮箱和手机立即绑定

简易扑克牌程序

1)Card类

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.InputMismatchException;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
import java.util.Map.Entry;

public class Card {

    private static final Exception InputTypeException = null;
    List<String> cardlist = new ArrayList<String>();
    List<String> cardlistsort = new ArrayList<String>();
    List<Integer> indexlist = new ArrayList<Integer>();
    List<Integer> indexlist1 = new ArrayList<Integer>();
    List<Integer> indexlist2 = new ArrayList<Integer>();
    Map<Integer, String> playerlist = new HashMap<Integer, String>();
    List<String> playercardlist = new ArrayList<String>();
    List<String> playercardlist1 = new ArrayList<String>();
    List<String> playercardlist2 = new ArrayList<String>();
    public String[] CardColor = { "红桃", "黑桃", "梅花", "方片" };
    public String[] CardColorSort = { "方片" , "梅花" , "黑桃" , "红桃"};
    public String[] CardNum = { "2", "3", "4", "5", "6", "7", "8", "9", "10",
            "J", "Q", "K", "A" };
    public int i;
    public int j;
    public int c;
    public String card;
    public Integer id;
    public String name;
    Scanner console = new Scanner(System.in);

    // 创建扑克牌
    public void CreateCard() {
        System.out.println("-------------创建扑克牌...-------------");
        for (i = 0; i < CardColor.length; i++) {
            for (j = 0; j < CardNum.length; j++) {
                for (c = 0; c < 52; c++) {
                    card = CardColor[i] + CardNum[j];
                }
                cardlist.add(card);
            }
        }
        System.out.println("-------------扑克牌创建成功!-------------");
        System.out.println("为:" + cardlist);

    }

    // 洗牌
    public void MixCard() {
        System.out.println("-------------开始洗牌...-------------");
        Collections.shuffle(cardlist);
        //System.out.println("洗牌后:" + cardlist);
        System.out.println("-------------洗牌结束!-------------");

    }

    // 创建玩家
    public void CreatePlayer() {
        System.out.println("-------------创建玩家...-------------");
        for (int p = 1; p < 3; p++) {
            System.out.println("请输入第" + p + "位玩家的ID和姓名:");
            
        while(true){
           try{
                System.out.println("输入ID");
                Scanner sc=new Scanner(System.in);
            id =sc.nextInt();
            break;
           }catch(Exception e){
               System.out.println("请输入整数类型的ID!");
              
           }
        }
    
            System.out.println("输入姓名:");
            name = console.next();
            playerlist.put(id, name);
        }
        for (Entry<Integer, String> player : playerlist.entrySet()) {
            System.out.println("----欢迎玩家:" + player.getValue());
        }
    }

    // 发牌
    public void ShareCards() {
        System.out.println("-------------开始发牌...-------------");
        int playernum = playerlist.size();
        for (int n = -1; n < 2; n = n + playernum) {
            for (Entry<Integer, String> player : playerlist.entrySet()) {
                System.out.println("----玩家:" + player.getValue() + "-拿牌"
                        //+ cardlist.get(player.getKey() + n)
                        );
                playercardlist.add(cardlist.get(player.getKey() + n));
            }
        }
        System.out.println("-------------发牌结束!-------------");
    }
    //开始游戏
    public void BeginCardGame(){
        System.out.println("-------------开始游戏...-------------");
        for (int n = 0; n < playercardlist.size(); n++) {
            if (n % 2 == 0) {
                playercardlist1.add(playercardlist.get(n));
            } else if (n % 2 == 1) {
                playercardlist2.add(playercardlist.get(n));
            }
        }
        
        for (i = 0; i < CardNum.length; i++) {
            for (j = 0; j < CardColorSort.length; j++) {
                for (c = 0; c < 52; c++) {
                    card = CardColorSort[j] + CardNum[i];
                }
                cardlistsort.add(card);
            }
        }
        //System.out.println(cardlistsort);
        //玩家最大的手牌
    
        //玩家1:
        for(int n=0;n<playercardlist1.size();n++){
            int index=cardlistsort.lastIndexOf(playercardlist1.get(n));
            indexlist1.add(index);
            Collections.sort(indexlist1);
        }
        int localnum1=indexlist1.get(indexlist1.size()-1);
        String max1=cardlistsort.get(localnum1);
        System.out.println("玩家:"+playerlist.get(1)+"最大的手牌为:"+max1);

        //玩家2:
        for(int n=0;n<playercardlist2.size();n++){
            int index=cardlistsort.lastIndexOf(playercardlist2.get(n));
            indexlist2.add(index);
            Collections.sort(indexlist2);
        }
        int localnum2=indexlist2.get(indexlist2.size()-1);
        String max2=cardlistsort.get(localnum2);
        System.out.println("玩家:"+playerlist.get(2)+"最大的手牌为:"+max2);

        //比大点
        for(int n=0;n<playercardlist.size();n++){
            int index=cardlistsort.lastIndexOf(playercardlist.get(n));
            indexlist.add(index);
        }
        Collections.sort(indexlist);
        //System.out.println(indexlist);
        int localnum=indexlist.get(indexlist.size()-1);
        //System.out.println(localnum);
        String max=cardlistsort.get(localnum);
        //System.out.println(max);
        if(playercardlist1.contains(max)){
            System.out.println("-------------玩家:"+playerlist.get(1)+"获胜!-------------");
        }else{
            System.out.println("-------------玩家:"+playerlist.get(2)+"获胜!-------------");
        }
    }

    //游戏结束:玩家亮出各自的手牌
    public void OpenCards() {
        System.out.println("玩家各自的手牌为:");
        //System.out.println(playercardlist);

        System.out.println(playerlist.get(1) + ":" + playercardlist1);
        System.out.println(playerlist.get(2) + ":" + playercardlist2);
    }
}

2)Main程序


public class Main {
    /**
     * 一、创建一副扑克牌
     * 包括四种花色:黑桃、红桃、梅花、方片
     * 十三中点数:2-10,J、Q、K、A,不考虑大小王
     * 二、创建两名玩家
     * 玩家至少要有ID、姓名、手牌等属性,手牌为扑克牌的集合
     * 三、洗牌
     * 将之前创建的"一副扑克牌"打乱顺序
     * 四、发牌
     * 将洗牌之后的扑克牌集合,从第一张开始,
     * 发给两名玩家按照依人一张的方式,没人发两张
     * 五、游戏
     * 比较两名玩家手中的扑克牌,规则为:取两人各自手中
     * 点数最大的牌进行比较,店数大的赢;若两人各自的店数最大的牌相等则再按花色比较。
     */

    /**
     * @param args
     */
    public static void main(String[] args) {
        Card card=new Card();
        card.CreateCard();
        card.MixCard();
        card.CreatePlayer();
        card.ShareCards();
        card.BeginCardGame();
        card.OpenCards();
    }
}

正在回答

举报

0/150
提交
取消

简易扑克牌程序

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号