📄 cardplay.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 + -