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

Java入门第三季简易扑克牌游戏

标签:
Java

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;

public class CardGame {

/**
 * 创建一副扑克牌,包含花色和点数
 */
public static void main(String[] args) {
    Card cd = new Card();
    cd.creatCard();
    Collections.shuffle(cd.cards);
    System.out.println("-----洗牌成功-----");
    Player player = new Player();
    Player player1 = player.playerList.get(0);
    Player player2 = player.playerList.get(1);
    System.out.println("-----现在开始随机发牌----- ");
    // 玩家1的手牌!
    player1.playerCard.add(cd.cards.get(0));
    player1.playerCard.add(cd.cards.get(1));
    System.out.println(player1.toString() + "的手牌为:\n"
            + player1.playerCard.toString());
    // 玩家2的手牌!
    player2.playerCard.add(cd.cards.get(2));
    player2.playerCard.add(cd.cards.get(3));
    System.out.println(player2.toString() + "的手牌为:\n"
            + player2.playerCard.toString());

    // 玩家手中的最大手牌!
    Card cardMax1 = new Card();
    Card cardMax2 = new Card();
    int player1Num = player1.playerCard.get(0).compareTo(
            player1.playerCard.get(1));
    int player2Num = player2.playerCard.get(0).compareTo(
            player2.playerCard.get(1));
    // 玩家1
    if (player1Num > 0) {
        cardMax1 = player1.playerCard.get(0);
    } else {
        cardMax1 = player1.playerCard.get(1);
    }
    // 玩家2
    if (player2Num > 0) {
        cardMax2 = player2.playerCard.get(0);
    } else {
        cardMax2 = player2.playerCard.get(1);
    }

    // 比较两人手中最大手牌的大小
    int resultNum = cardMax1.compareTo(cardMax2);

    if (resultNum > 0) {
        System.out.println("-----" + player1.toString() + "胜利!-----");
    } else {
        System.out.println("-----" + player2.toString() + "胜利!-----");
    }

    System.out.println(player1.toString() + "的最大手牌为:\n"
            + cardMax1.toString());
    System.out.println(player2.toString() + "的最大手牌为:\n"
            + cardMax2.toString());

}

}

// 定义扑克牌
class Card implements Comparable<Card> {
// 定义扑克牌有花色和大小
public static List<Card> cards;
static String colors[] = { "方块", "梅花", "红桃", "黑桃" };
static String numbers[] = { "2", "3", "4", "5", "6", "7", "8", "9", "10",
"J", "Q", "K", "A" };
private String color, number;

public Card(String color, String number) {
    super();
    this.color = color;
    this.number = number;

}

// 无参构造方法为List实现,否则会报空指针异常
public Card() {
    this.cards = new ArrayList();
}

public int compareTo(Card o) {
    // asList将数组转化为
    int a = Arrays.asList(colors).indexOf(this.color)
            - Arrays.asList(colors).indexOf(o.color);
    int b = Arrays.asList(numbers).indexOf(this.number)
            - Arrays.asList(numbers).indexOf(o.number);
    if (b > 0) {
        return 1;
    } else if (b == 0) {
        if (a > 0) {
            return 1;
        } else if (a == 0) {
            return 0;
        } else {
            return -1;
        }
    } else {
        return -1;
    }
}

// 完整一副牌

void creatCard() {
    for (int i = 0; i < colors.length; i++) {
        for (int j = 0; j < numbers.length; j++) {
            cards.add(new Card(colors[i], numbers[j]));
        }
    }
    System.out.println("-----创建扑克牌成功-----");
}

// 重写toString方法
@Override
public String toString() {
    return "Card [color=" + color + ", number=" + number + "]";
}

}

class Player {
int id;
String name;
List<Player> playerList;
List<Card> playerCard;
Scanner console = new Scanner(System.in);

public Player(int id, String name) {
    super();
    this.id = id;
    this.name = name;
    this.playerCard = new ArrayList();
}

public Player() {
    this.playerList = new ArrayList();
    for (int i = 0; i < 2; i++) {
        // 检验ID正确性
        while (true) {
            // Scanner 要在循环内,否则发生异常时,数据不会清楚,一直死循环下去!!!!
            Scanner console = new Scanner(System.in);
            try {
                System.out.println("请输入玩家ID: ");
                this.id = console.nextInt();
                // 判断ID是否重复!!!
                if (isInt(id)) {
                    continue;
                }
                System.out.println("请输入玩家姓名: ");
                this.name = console.next();
                System.out.println(" -----玩家创建成功-----\n" + this.toString());
                playerList.add(new Player(id, name));

                break;
            } catch (Exception e) {
                System.out.println("输入有误,请输入整数型ID!");
            }
        }
    }
}

@Override
public String toString() {
    return "Player [id=" + id + ", name=" + name + "]";
}

boolean isInt(int id) {
    for (Player player : playerList) {
        if (player.id == id) {
            System.out.println("此ID已存在,请重新输入!");
            return true;
        }
    }
    return false;
}

}

点击查看更多内容
2人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消