继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Java入门第三季 扑克牌游戏

Shadowdsp
关注TA
已关注
手记 3
粉丝 3
获赞 49

Player.java

package Poker;

import java.util.ArrayList;
import java.util.List;

public class Player {
    public List<String> owncards;
    public String biggest, name;
    int id;

    public Player() {
        owncards = new ArrayList<>();
    }

    public void addCard(String card) {
        owncards.add(card);
    }
}

Test.java

package Poker;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Random;
import java.util.Scanner;
import java.util.Set;

public class Test {

    List<String> cards = new ArrayList<>();
    List<Player> players = new ArrayList<>();
    Set<String> existcards = new HashSet<>();
    Scanner scan = new Scanner(System.in);

    public Test() {
        System.out.println("-----创建扑克牌-----");
        cards.add("方块2");
        cards.add("梅花2");
        cards.add("红桃2");
        cards.add("黑桃2");
        cards.add("方块3");
        cards.add("梅花3");
        cards.add("红桃3");
        cards.add("黑桃3");
        cards.add("方块4");
        cards.add("梅花4");
        cards.add("红桃4");
        cards.add("黑桃4");
        cards.add("方块5");
        cards.add("梅花5");
        cards.add("红桃5");
        cards.add("黑桃5");
        cards.add("方块6");
        cards.add("梅花6");
        cards.add("红桃6");
        cards.add("黑桃6");
        cards.add("方块7");
        cards.add("梅花7");
        cards.add("红桃7");
        cards.add("黑桃7");
        cards.add("方块8");
        cards.add("梅花8");
        cards.add("红桃8");
        cards.add("黑桃8");
        cards.add("方块9");
        cards.add("梅花9");
        cards.add("红桃9");
        cards.add("黑桃9");
        cards.add("方块10");
        cards.add("梅花10");
        cards.add("红桃10");
        cards.add("黑桃10");
        cards.add("方块J");
        cards.add("梅花J");
        cards.add("红桃J");
        cards.add("黑桃J");
        cards.add("方块Q");
        cards.add("梅花Q");
        cards.add("红桃Q");
        cards.add("黑桃Q");
        cards.add("方块K");
        cards.add("梅花K");
        cards.add("红桃K");
        cards.add("黑桃K");       
        cards.add("方块A");
        cards.add("梅花A");
        cards.add("红桃A");
        cards.add("黑桃A");
        System.out.println("-----创建扑克牌成功-----");
        System.out.println("扑克牌如下:" + cards.toString());
    }             

    public void getPlayer(Player player, int id) {
        System.out.println("请输入第" + id + "位玩家ID:");
        player.id = scan.nextInt();
        System.out.println("请输入第" + id + "位玩家名字:");
        player.name = scan.next();
    }

    public void Welcome() {
        for(int i = 0; i < players.size(); i++) {
            System.out.println("--欢迎玩家:" + players.get(i).name);
        }
    }

    public void Distribute() {
        System.out.println("-----开始发牌-----");

        for(int i = 0; i < 2; i++) {
            for(int j = 0; j < players.size(); j++) {
                System.out.println("---玩家" + players.get(j).name + "拿牌---");
                while(true) {
                    Random random = new Random();
                    int choose = random.nextInt(cards.size());
                    if(existcards.contains(cards.get(choose))) continue;
                    players.get(j).owncards.add(cards.get(choose));
                    existcards.add(cards.get(choose));
                    break;
                }
            }
        }

        System.out.println("-----发牌完成-----");
    }

    public void getBiggest(Player player) {
        int max = 0;
        for(int i = 0; i < player.owncards.size(); i++) {
            if(max < cards.indexOf(player.owncards.get(i))) {
                max = cards.indexOf(player.owncards.get(i));
            }
        }
        player.biggest = cards.get(max);
    }

    public void beginGame() {
        System.out.println("-----开始游戏-----");
        int max = 0;
        String winner = "";

        for(Player player : players) {
            getBiggest(player);
            System.out.println("玩家" + player.name + "最大的手牌是:" + player.biggest);
            if(max < cards.indexOf(player.biggest)) {
                max = cards.indexOf(player.biggest);
                winner = player.name;
            }
        }

        System.out.println("-----玩家" + winner + "获胜!!!-----");
        System.out.println("-----玩家各自的手牌-----");
        for(Player player : players) {
            System.out.println(player.name + player.owncards.toString());
//          for(String card : player.owncards) {
//              
//          }
        }

        System.out.println("-----游戏结束-----");
    }

    public void Solve() {
        System.out.println("请输入游戏人数(大于1小于27)");
        int number = scan.nextInt();
        for(int i = 1; i <= number; i++) {
            Player player = new Player();
            getPlayer(player, i);
            players.add(player);
            player = null;
        }
        Welcome();
        Distribute();
        beginGame();
    }

    public static void main(String[] args) {
        Test test = new Test();
        test.Solve();
    }
}

游戏效果

-----创建扑克牌-----
-----创建扑克牌成功-----
扑克牌如下:[方块2, 梅花2, 红桃2, 黑桃2, 方块3, 梅花3, 红桃3, 黑桃3, 方块4, 梅花4, 红桃4, 黑桃4, 方块5, 梅花5, 红桃5, 黑桃5, 方块6, 梅花6, 红桃6, 黑桃6, 方块7, 梅花7, 红桃7, 黑桃7, 方块8, 梅花8, 红桃8, 黑桃8, 方块9, 梅花9, 红桃9, 黑桃9, 方块10, 梅花10, 红桃10, 黑桃10, 方块J, 梅花J, 红桃J, 黑桃J, 方块Q, 梅花Q, 红桃Q, 黑桃Q, 方块K, 梅花K, 红桃K, 黑桃K, 方块A, 梅花A, 红桃A, 黑桃A]
请输入游戏人数(大于1小于27)
2
请输入第1位玩家ID:
1
请输入第1位玩家名字:
TOM
请输入第2位玩家ID:
2
请输入第2位玩家名字:
SHADOW
--欢迎玩家:TOM
--欢迎玩家:SHADOW
-----开始发牌-----
---玩家TOM拿牌---
---玩家SHADOW拿牌---
---玩家TOM拿牌---
---玩家SHADOW拿牌---
-----发牌完成-----
-----开始游戏-----
玩家TOM最大的手牌是:黑桃A
玩家SHADOW最大的手牌是:红桃J
-----玩家TOM获胜!!!-----
-----玩家各自的手牌-----
TOM[红桃10, 黑桃A]
SHADOW[梅花J, 红桃J]
-----游戏结束-----
打开App,阅读手记
10人推荐
发表评论
随时随地看视频慕课网APP