ITPub博客

首页 > IT职业 > IT图书 > Java入门第三季7.1简易扑克牌编码

Java入门第三季7.1简易扑克牌编码

IT图书 作者:ofan 时间:2021-09-09 09:00:56 0 删除 编辑

所有的代码放在一个文件里就可以运行,文件名是:入口类名.java
卡牌的比较是通过将点数和花色放在不同的数组里,然后利用数组下标来比较大小
洗牌是通过不断将第一个位置的卡牌插入随机位置来实现的
用户的ID设定必须是数字且不能相同
下边是代码,注释还是很完备的,有问题留言,我们一起交流一下
PS:我再也不发原创了,太麻烦了T_T
入口类

import java.util.*;
public class PalyCard 
{
    public static void main(String[] args) 
    {
        Game gm=new Game();
        gm.setCards();//获取卡牌
        gm.shuffle();//洗牌
        gm.setPlayers();//获取用户
        gm.dealCards();//发牌
        gm.playCards();//开始游戏
        gm.showCards();//展示卡牌
    }
}

游戏主体

class Game
{
    private List cards;
    private List players;
    Game(){
        cards=new ArrayList();
        players=new ArrayList();
    }
    //初始化卡牌
    void setCards(){
        System.out.println("-----------创建扑克牌--------------");
        String[] suits={"黑桃","红桃","梅花","方片"};//花色
        String[] numbers={"2","3","4","5","6","7","8","9","10",
            "J","Q","K","A"};//点数
        for(int i=0;i0 ? players.get(0).name:players.get(1).name;//条件语句,相当于if...else
        System.out.println("-----------玩家:"+name+"获胜!--------------");
    }
    //展示手牌
    void showCards(){
        System.out.println("-----------玩家手牌展示--------------");
        System.out.println(players.get(0)+""+players.get(0).cards);
        System.out.println(players.get(1)+""+players.get(1).cards);
    }
}

用户类

//用户类,为了防止ID重复,重写了equals,这样可以调用contains判断
class Player
{
    public String id;
    public String name;
    public List cards;
    Player(String id, String name){
        this.id=id;
        this.name=name;
        cards=new ArrayList();
    }
    void setCards(Card c){
        cards.add(c);
    }
    //重写toString只是为了写程序的时候测试用着方便
    public String toString(){
        return "Name:"+name;
    }
    public boolean equals(Object o){
        if(this==o)return true;
        if(o==null)return false;
        if(!(o instanceof Player))return false;
        Player p=(Player)o;
        return Objects.equals(id,p.id);
    }
}

卡牌类

//要比较卡牌的大小,所以要添加比较方法
class Card implements Comparable
{
    public String suit;//花色
    public String number;//点数
    Card(String suit, String number){
        this.suit=suit;
        this.number=number;
    }
    //展示卡牌信息用
    public String toString(){
        return suit+number;
    }
    //实现比较方法
    public int compareTo(Card c){
        if(this.getNumberNum()==c.getNumberNum())
            return this.getSuitNum()-c.getSuitNum();
        else return this.getNumberNum()-c.getNumberNum();
    }
    //获取点数排序
    int getNumberNum(){
        String[] numbers={"2","3","4","5","6","7","8","9","10",
            "J","Q","K","A"};
        for(int i=0;i

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/4571/viewspace-2798621/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-08-01

  • 博文量
    159
  • 访问量
    1163