黑马程序员技术交流社区

标题: 一个完整的斗地主代码,实现地主的抽取的,底牌的归属 [打印本页]

作者: 曹亚辉    时间: 2016-9-13 22:27
标题: 一个完整的斗地主代码,实现地主的抽取的,底牌的归属

package com.hui_Demo3;

public class Card {
        private String huase;
        private String num;
        public Card(String huase, String num) {
                super();
                this.huase = huase;
                this.num = num;
        }
        @Override
        public String toString() {
                return  huase +  num;
        }
       
}



执行代码


package com.hui_Demo3;

import java.awt.List;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Random;

/*
* 成龙,甄子丹,李连杰三个人打斗地主,三人约定,洗牌后,随机抽取一张"明牌"并夹在中间;然后依次抓牌,谁抓到这张便自动作为地主,并收取最后三张。
要求:请用程序实现这一过程,最后打印地主名,以及三个人的牌(要求排序);

思路:
  1.定义一个Map集合存储一副扑克牌;List存储编号;
  2.洗牌;
  3.随机抽取一个索引(该值必须在倒数三张之前),用于表示"明牌",在发牌
    时谁抓到这一张便作为"地主";
  4.依次给三个人(成龙,甄子丹,李连杰)发牌,并监督谁作为地主;地主自
     动收取最后三张。
  5.打印地主名;
  6.最后以排序后的方式打印每个人手里的牌;

*
*/
public class Test {
        public static void main(String[] args) {
                //创建接收牌的集合
                HashMap<Integer,Card> card = new HashMap<>();
                add_card(card);
                System.out.println(card);
                //建立发牌索引角标
                ArrayList<Integer> index = index();
                System.out.println(index);
                //洗牌
                Collections.shuffle(index);
                System.out.println(index);
                //随机抽出来一个数作为明面上的牌
                Random ra = new Random();
                int ming_index = ra.nextInt(51)+1;
                Card chou = card.get(ming_index);
                System.out.println("抽出来的地主牌是"+chou);
                //发牌的角标
                ArrayList<Integer> 成龙 = send_card(index);
               
               
                System.out.println(成龙);
                ArrayList<Integer> 甄子丹 = send_card(index);
               
                System.out.println(甄子丹);
                ArrayList<Integer> 李连杰 = send_card(index);
               
                System.out.println(李连杰);
                System.out.println(index);
                //选出地主是谁
                Boolean look = look(成龙,ming_index,index);
                if (look) {
                        System.out.println("地主是成龙");
                }
                Boolean look2 = look(甄子丹,ming_index,index);
                if (look2) {
                        System.out.println("地主是甄子丹");
                }
               
                Boolean look3 = look(李连杰,ming_index,index);
                if (look3) {
                        System.out.println("地主是李连杰");
                }
               
                //对角标进行排序
                Collections.sort(成龙);
                System.out.println(成龙);
                Collections.sort(甄子丹);
                System.out.println(甄子丹);
                Collections.sort(李连杰);
                System.out.println(李连杰);
                //得到角标的对应卡片
                System.out.print("成龙的牌是:  ");
                ArrayList<Card> C_card = send_card(成龙,card);
               
                System.out.print("甄子丹的牌是:  ");
                ArrayList<Card> Z_card = send_card(甄子丹,card);
                System.out.print("李连杰的牌是:  ");
                ArrayList<Card> L_card = send_card(李连杰,card);
               
                System.out.print("底牌是:  ");
                ArrayList<Card> D_card = send_card(index,card);
               
               
               
               
        }
        private static Boolean look(ArrayList<Integer> play, int ming_index, ArrayList<Integer> index) {
                // TODO Auto-generated method stub
                for (Integer look : play) {
                        if (look.equals(ming_index)) {
                               
                                play.addAll(index);
                                return true;
                        }
                }
                return false;
        }
        private static ArrayList<Card> send_card(ArrayList<Integer> index, HashMap<Integer, Card> card) {
                // TODO Auto-generated method stub
                ArrayList<Card> play_card = new ArrayList<>();
                for (Integer i : index) {
                        Card card2 = card.get(i);
                        play_card.add(card2);
                        System.out.print(card2+"  ");
                }
                System.out.println();
                return play_card;
        }
        private static ArrayList<Integer> send_card(ArrayList<Integer> index) {
                // TODO Auto-generated method stub
                ArrayList<Integer> play_index = new ArrayList<>();
                for (int i = 0; i < 17; i++) {
                        Integer remove = index.remove(0);
                        play_index.add(remove);
                }
                return play_index;
        }






        private static ArrayList<Integer> index() {
                // TODO Auto-generated method stub
                ArrayList<Integer> arrayList = new ArrayList<>();
                for (int i = 1; i < 55; i++) {
                        arrayList.add(i);
                }
                return arrayList;
        }



        private static void add_card(HashMap<Integer, Card> card) {
                // TODO Auto-generated method stub
                card.put(1,new Card("大", "♚"));
                card.put(2, new Card("小", "♔"));
                int a  =  3 ;
                String[] head = {"♠","♥","♣","♦"};
                String[] tail = {"A","2","K","Q","J","10","9","8","7","6","5","4","3"};
                for (int i = 0; i < tail.length; i++) {
                        for (int j = 0; j < head.length; j++) {
                                card.put(a++, new Card(head[j], tail[i]));
                        }
                }
               
        }

       
       
       
}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2