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]));
}
}
}
} |
|