⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cardplay.java

📁 一个简单的发牌打牌程序
💻 JAVA
字号:
/**
 * 打牌的主类
 */
package cardPlay;

import java.util.*;

/**
 * @author new
 * 
 */

public class CardPlay implements CardP {

	/**
	 * @param args
	 */

	// public int count = 0;
	int heart = 0;

	int black = 0;

	int square = 0;

	int meihua = 0;

	private ArrayList<Player> playes = new ArrayList<Player>(PlayerNo);// 存放玩家

	private ArrayList<PlayCard> cards = new ArrayList<PlayCard>(CardNo);// 一副牌

	public void creatCards() {

		for (int i = 0; i < PlayerNo; i++) {

			for (int j = 0; j < CardOfOneF; j++) {
				PlayCard temp = new PlayCard(i + 1, j + 1);
				this.cards.add(temp);
			}
		}

		cards.add(new PlayCard(0, 0));// 小王
		cards.add(new PlayCard(-1, 0));// 大王

	}// 创建牌

	public void creatPlayers() {

		for (int i = 0; i < PlayerNo; i++) {

			this.playes.add(new Player(i + 1));

		}
	}// 创建玩家

	public void washCards() {
		int tempNo;
		PlayCard tempCard;
		System.out.print("洗牌中 ");
		for (int i = 0; i < ExchangeNo; i++) {

			// tempNo = ((int)Math.random()) * (CardNo - 1) ;// 取随机数
			tempNo = new Double(Math.random() * (CardNo - 1)).intValue();

			tempCard = this.cards.get(tempNo);

			this.cards.set(tempNo, this.cards.get(CardNo - 1 - tempNo));

			this.cards.set(CardNo - 1 - tempNo, tempCard);

			if (i % 100000 == 0) {
				System.out.print(".");
				// System.out.print(tempNo + "\t");
			}

		}
		System.out.println("\n");
	}// 洗牌,采用随机数进行交换100000次

	public void sendCards() {
		int banker;// 庄家
		int index = 0;
		for (int j = 0; j < CardOfOneP; j++) {

			for (int i = 0; i < PlayerNo; i++) {

				this.playes.get(i).SetCards(cards.get(index));
				index++;
			}
		}

		banker = new Double(Math.random() * PlayerNo).intValue();

		for (int i = (PlayerNo * CardOfOneP ); i < CardNo; i++) {

			this.playes.get(banker).SetCards(this.cards.get(i));

		}

	}// 发牌

	public void sortCards(ArrayList<PlayCard> cards) {
		PlayCard tempCard;

		for (int i = 0; i < cards.size(); i++) {
			for (int j = 0; j < cards.size() - i - 1; j++) {
				if (cards.get(j).GetFlower() > cards.get(j + 1).GetFlower()) {
					tempCard = cards.get(j);
					cards.set(j, cards.get(j + 1));
					cards.set(j + 1, tempCard);
				}//排花色
		
				if(cards.get(j).GetFlower() == cards.get(j+1).GetFlower()){
					if(cards.get(j).GetNum() < cards.get(j+1).GetNum()){
						tempCard = cards.get(j);
						cards.set(j, cards.get(j + 1));
						cards.set(j + 1, tempCard);
					}
				}//排大小
			}
		}
		
	}// 排序

	public void printFlower(PlayCard card) {

		switch (card.GetFlower()) {
		case -1:
			System.out.print("大王\t");
			break;
		case 0:
			System.out.print("小王\t");
			break;
		case 1:
			System.out.print("黑桃 ");
			black++;
			break;
		case 2:
			System.out.print("红桃 ");
			heart++;
			break;
		case 3:
			meihua++;
			System.out.print("梅花 ");
			break;
		case 4:
			square++;
			System.out.print("方块 ");
			break;
		}
	}// 判断花型

	public void printNum(PlayCard card) {
		if (card.GetNum() <= 10 && card.GetNum() != 1 && card.GetNum() != 0) {
			System.out.print(card.GetNum() + "\t");

		} else if (card.GetNum() != 0) {
			switch (card.GetNum()) {
			case 1:
				System.out.print("A\t");
				break;
			case 11:
				System.out.print("J\t");
				break;
			case 12:
				System.out.print("Q\t");
				break;
			case 13:
				System.out.print("K\t");
				break;
			}
		}
	}// 判断大小

	public void play() {
		int banker = 0;

		for (int i = 0; i < PlayerNo; i++) {

			sortCards(playes.get(i).GetCards());

		}
		System.out.println("出牌:\n");
		for (int i = 0; i < CardOfOneP; i++) {

			for (int j = 0; j < PlayerNo; j++) {

				printFlower(this.playes.get(j).GetCards().get(i));
				// System.out.println(this.Cards.get(i).GetNum());
				printNum(this.playes.get(j).GetCards().get(i));
				// System.out.println(i);

			}
			System.out.println("\n");
		}
		for (int i = 0; i < PlayerNo; i++) {

			if (this.playes.get(i).GetCards().size() > CardOfOneP) {
				banker = i;

				for (int j = CardOfOneP; j < (CardNo - PlayerNo * CardOfOneP + CardOfOneP); j++) {

					printFlower(this.playes.get(i).GetCards().get(j));

					printNum(this.playes.get(i).GetCards().get(j));
					System.out.println("\n");
				}
			}
		}
		System.out
				.println(black + "\t" + heart + "\t" + meihua + "\t" + square);
		System.out.println("庄家是第 " + (banker + 1) + "位玩家!");

		System.out.println("\n底牌是:\n");
		
		for (int i = (PlayerNo * CardOfOneP ); i < CardNo; i++) {

			printFlower(this.cards.get(i));
			printNum(this.cards.get(i));

		}

	}// 出牌

	public static void main(String[] args) {
		// TODO 自动生成方法存根

		CardPlay Play = new CardPlay();

		Play.creatCards();
		Play.creatPlayers();
		Play.washCards();
		Play.sendCards();
		Play.play();
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -