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

创建一副简单的扑克牌游戏

进步中的编程猿
关注TA
已关注
手记 2
粉丝 2
获赞 45

Player.java

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

public class Player<Card> {

    public   int  id;//ID
    public String name;//名字
    public  List<Card>cards;//手牌

    public Player(int id, String name){ 
        this.id = id;
        this.name = name;
        this.cards = new ArrayList<Card>(); 
        }

    public String size() {
        // TODO 自动生成的方法存根
        return null;
    } 

}

Puke.java

public  class Puke implements Comparable<Puke> {

    public String color;//牌的花色
    public String num;//牌的点数

public Puke  (String color,String num){
this.color = color;//牌的花色
this.num = num ;//牌的点数

}

/*
 * 定义扑克牌的规则    
 * @see java.lang.Comparable#compareTo(java.lang.Object)
 */
public int compareTo(Puke o) {
    if (this.num == o.num)
    {
        if (this.color.equals("黑桃"))
        {
            return 1;
            } 
        else if (this.color.equals("红桃"))
        {
            if (o.color.equals("黑桃"))
            { return -1;
            } 
            else {
                return 1; 
                }
            } 
        else if (this.color.equals("梅花"))
        {
            if (o.color.equals("黑桃") || o.color.equals("红桃")) 
            {
                return -1; }
            else
            { 
                return 1;
                }
            }
        else 
        {
            return -1;
            }
        } 
    else
    {
        if (this.num.equals("A"))
        { 
            return 1; 
            }
        else if (this.num.equals("K"))
        {
            if (o.num.equals("A"))
            {
                return -1;
                } 
            else 
            {
                return 1;
                }
            } 
        else if (this.num.equals("Q"))
        { 
            if (o.num.equals("A") || o.num.equals("K")) 
            {
                return -1; 
                }
            else
            { 
                return 1;
                }
            }
        else if (this.num.equals("J"))
        {
            if (o.num.equals("A") || o.num.equals("K") || o.num.equals("Q")) 
            {
                return -1;
                }
else { return 1; 
}
            } 
        else if (this.num.equals("10")) 
        {
            if (o.num.equals("A") || o.num.equals("K") ||
                    o.num.equals("Q") || o.num.equals("J")) 
            {
return -1; 
}
            else
            { 
                return 1;
                } 
            } 
        else
        { 
            return this.num.compareTo(o.num); 
            } 
        } 
    }

}

PlayGames.java

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
/*
 * 扑克牌游戏:
 * 1、创建一副扑克牌,除去大小王
 * 2、登录两位玩家
 * 3、随机洗牌
 * 4、顺序发牌
 * 5、先比较点数,再比较花色    黑桃>红桃>梅花>方片
 * 
 */

public class PlayGames {
    public List<Puke>allpuke;
    public void  playgames(){
        this.allpuke = new ArrayList<Puke>();
    }
    List<String> allpukes=new ArrayList<String>();

    public List<Player>players = new ArrayList<Player>();

  /*
   * 创建一副扑克牌
   */
public void porke(){    

    {  
        System.out.println("创建扑克牌"); 
    allpukes.add("方片A");
    allpukes.add("梅花A");
    allpukes.add("红桃A");
    allpukes.add("黑桃A"); 
    for(int i=2;i<11;i++)
    { 
        allpukes.add("方片"+i); 
        allpukes.add("梅花"+i); 
        allpukes.add("红桃"+i); 
        allpukes.add("黑桃"+i);
        }

    allpukes.add("方片J"); 
    allpukes.add("梅花J");
    allpukes.add("红桃J"); 
    allpukes.add("黑桃J"); 
    allpukes.add("方片Q");
    allpukes.add("梅花Q"); 
    allpukes.add("红桃Q");
    allpukes.add("黑桃Q"); 
    allpukes.add("方片K");
    allpukes.add("梅花K");
    allpukes.add("红桃K"); 
    allpukes.add("黑桃K");
    String str=allpukes.toString();
    System.out.println("---------扑克牌创建成功:--------\n"+str);

    }
}

    /*
     * 打乱顺序
     */
    public void shuffle(){
        System.out.println("---------开始洗牌--------");
        //随机打乱顺序用List方法
        Collections.shuffle(allpukes);
        System.out.println("---------洗牌结束----------");

    }

    /*
     * 创建玩家ID  和玩家姓名
     */
    public void PutPlayers(){
        System.out.println("---------创建玩家---------");
        for (int i = 1; i < 3; i++) 
        { 
            System.out.println("请输入第" + (i) + "位玩家的ID和姓名:"); 
            System.out.println("输入ID:");
            int id = 0; ;
            Scanner scanner = new Scanner(System.in);
            while(true)
            { 
                try{

                    id = Integer.parseInt(scanner.nextLine().trim());; 
                    break;
                    }
                catch (NumberFormatException e) 
                {
                    System.out.println("请输入整数类型的ID!");
                    System.out.println("重新输入ID:"); continue; } 
                }
            System.out.println("输入姓名:"); 
            String name = scanner.nextLine();
            Player player = new Player(id, name);
            players.add(player);
            }

        System.out.println("----欢迎玩家:" + players.get(0).name); 
        System.out.println("----欢迎玩家:" + players.get(1).name);
    }

    /*
     * 开始发牌 
     */
        public void dealCard(){
            System.out.println("---------开始发牌--------");
            System.out.println("---------玩家"+players.get(0).name+"拿牌-----");
            players.get(0).cards.add(allpukes.get(0));
            System.out.println("---------玩家"+players.get(1).name+"拿牌-----");            
            players.get(1).cards.add(allpukes.get(1));
            System.out.println("---------玩家"+players.get(0).name+"拿牌-----");
            players.get(0).cards.add(allpukes.get(2));
            System.out.println("---------玩家"+players.get(1).name+"拿牌-----");
            players.get(1).cards.add(allpukes.get(3));
            System.out.println("--------发牌结束--------");
        }

        /* 
         * 开始游戏
         */
        @SuppressWarnings("unchecked")
        public void starGame(){
            System.out.println("------开始游戏--------");
            Collections.sort(players.get(0).cards);
            String maxCard= players.get(0).cards.get(1).toString();
            System.out.println("玩家:"+players.get(0).name+"最大的手牌是:"+maxCard);
            Collections.sort(players.get(1).cards);
            String maxCard1= players.get(1).cards.get(1).toString();
            System.out.println("玩家:"+players.get(0).name+"最大的手牌是:"+maxCard1);
        List<Puke>gameCard = new ArrayList<Puke>();
        gameCard.addAll(players.get(0).cards);
        gameCard.addAll(players.get(1).cards);
        Collections.sort(gameCard);
        if(players.get(0).cards.contains(gameCard.get(gameCard.size()-1))){
            System.out.println("-------玩家"+players.get(0).name+"赢了--------");

        }else
        {
            System.out.println("-------玩家"+players.get(1).name+"赢了--------");
        }
        }

        /*
         * 查看玩家的牌
         */
        public void checkplayerCard(){
        System.out.println("-------------各位玩家的牌是-----------------");
        Collections.sort(players.get(0).cards);
        String playerCard1= players.get(0).cards.toString();
        System.out.println("玩家"+players.get(0).name+"的牌是"+players.get(0).cards);
        Collections.sort(players.get(1).cards);
        String playerCard2= players.get(1).cards.toString();
        System.out.println("玩家"+players.get(1).name+"的牌是"+players.get(1).cards);
        }

    public static void main(String[] args) {
        // TODO 自动生成的方法存根
System.out.println("-------欢迎来到扑克牌王国----------");
System.out.println("-------------是否要开始游戏----------");
System.out.println("-------------是请按:1  --- 否请按:0-------");
Scanner scanner= new Scanner(System.in);
int a = scanner.nextInt();

if(a == 1){
    while(true){
        PlayGames pl = new PlayGames();
        pl.porke();
        //pl.foreachPuke();
        pl.shuffle();
        pl.PutPlayers();
        pl.dealCard();

        System.out.println("-------是否开始出牌--是请按:1------");
        int b = scanner.nextInt();
        if(b == 1)
        pl.starGame();
        pl.checkplayerCard();
        System.out.println("--------是否要继续游戏---------");
        System.out.println("------继续请按:1-----退出请按:0------");
        int c = scanner.nextInt();
        if(c == 1){
  continue;
}
        else{
            break;

        }
        }
    System.out.println("---------感谢您的参与---------");
}
else{
    System.out.println("----------欢迎下次再来!-----------------");
}
    }

}

看完第三季,对于很多方法的实践用法不怎么懂,一开始确实无从动手,然后回看了视频里面的讲解,和参照自己敲的代码,再加上参照了一下其他人的代码最后完成了这个扑克牌游戏,希望能给大家作为参考! 大家一起努力,共同进步!图片描述图片描述

打开App,阅读手记
24人推荐
发表评论
随时随地看视频慕课网APP

热门评论

compareto算法好像有点问题?

还有显示玩家的最大手牌时 玩家的名字好像也有问题

compareto算法写的有问题导致梅花j比黑桃6小

貌似 题目要求是:先按点数大小比较,点数相同再按花色比较的~~

查看全部评论