Java集合框架(5)--简单的扑克牌游戏练习(1)

说明:1.文件包含Card类,Color类,CardList类,Player类以及PraticeDemo类

  2.主要实现两个玩家扑克牌比大小的功能

运行结果: 

Card:纸牌类

package com.PraticeDemo;
/*
 * Card:纸牌类
 * 1.实现了Comparator接口用来比较纸牌大小*/
public class Card implements Comparable<Card>{
    private int priority;//大小
    private String name;//牌号
    private Color color;//花色
    public Card(int priority,String name,Color color) {
		// TODO Auto-generated constructor stub
    	this.priority = priority;
    	this.name = name;
    	this.color = color;
	}
  
	public String getName() {
		return this.color.getName()+this.name;
	}
	public Color getColor() {
		return color;
	}
	public int getPriority(){
		return this.priority;
	}
//重写compareTo方法
	@Override
	public int compareTo(Card o) {
		// TODO Auto-generated method stub
		if(this.priority>o.priority) return 1;//当前扑克大
		else 
			if(this.priority==o.priority){//扑克等大比花色
				if(this.color.getPriority()>o.getColor().getPriority()) return 1;//花色大
				else //花色相等
					if(this.color.getPriority()==o.getColor().getPriority())  return 0;
					else //花色小
						return -1;
		}
			else return -1;//当前扑克小
	}
}

Color:枚举四种花色

package com.PraticeDemo;
/*
 * Color:枚举扑克牌四种花色,并设定名称以及大小
 * */
public enum Color {
     HX("红心",3),FP("方片",1),HT("黑桃",4),MH("梅花",2);
     private String name;
     private int priority;//花色的优先级大小,HT>HX>MH>FP
     private Color(String name,int priority) {
		// TODO Auto-generated constructor stub
    	 this.name = name;
    	 this.priority = priority;
	}
     public String getName(){
    	 return this.name;
     }
	public int getPriority() {
		return priority;
	}
     
}

CardList:纸牌集合

package com.PraticeDemo;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
/*
 * CardList:扑克集合
 * 1.CreatCard(),创建扑克牌
 * 2.WashCard(),利用hashSet的无序性洗牌,感觉不太严谨,可以还有一个想法是用Random类实现随机发牌,没有写
 * 3.printAll(),打印扑克*/
public class CardList {
    List<Card> cards;
    public CardList() {
		// TOD{O Auto-generated constructor stub
    	cards = new ArrayList<Card>();
    	CreatCards();
	}
    //创建扑克
    public void CreatCards(){
    	String name = null;
    	int priority;
    	for(int i=1;i<=13;i++){
    		priority = i;
    		if(i==1){ 
    			priority=14;
    			name = "A";
    		}
    		else if(i>1&&i<11) name = i+"";
    		else if(i==11) name = "J";
    		else if(i==12) name = "Q";
    		else if(i==13) name = "K";
    		//添加四种花色
    			cards.add(new Card(priority,name,Color.FP));
    			cards.add(new Card(priority,name,Color.HT));
    			cards.add(new Card(priority,name,Color.HX));
    			cards.add(new Card(priority,name,Color.MH));
    	}
    }
    //洗牌,利用hashSet的无序性洗牌
    public Set<Card> WashCard(){
    	Set<Card> cards = new HashSet<Card>();
    	for(Card card:this.cards){
    		cards.add(card);
    	}
    	return cards;
    }
    //打印所有扑克
    public void printAll(){
    	for(Card c:cards){
    		System.out.print(c.getName()+" ");
    	}
    	System.out.println();
    }
//    public static void main(String[] args) {
//		CardList cd = new CardList();
//		cd.CreatCards();
//		cd.printAll();
//	}
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
* Game 类 * 功能:整个游戏:开始游戏 -> 初始牌 -> 洗牌 -> 发牌 -> 排序 -> 比较大小 -> 游戏结果 * 游戏说明: * 1.创建一副扑克牌,不考虑大小王 * 2.创建两名玩家,玩家至少要有ID、姓名、手牌等属性,手牌为扑克牌的集合 * 3.洗牌,将之前创建的扑克牌顺序打乱 * 4.发牌,将洗牌之后的扑克牌集合,从第一张开始,发给两名玩家,按照一人一张的方式,每人发两张 * 5.开始游戏,比大小大小相同比花色 * * PockerCard 类 * 功能:扑克牌的核心类 包括创建角色、创建牌、显示牌、洗牌、比较牌、排序牌等 * 属性:List cards 整幅扑克牌的集合 、 People[] peoples 角色 * 方法: public PockerCard() //无参构造函数: 创建牌的集合、创建两个角色对象 * public void initializeCard() //创建整幅扑克牌 * public void showCard() //显示单支牌的花色和点数 * public void refreshCard() //洗牌 从第一支牌开始从所有牌中随机取一只与之交换 * public void addPeopleInfo() //添加玩家的基本信息 * public void dealCard() //发牌 从开始分别给A B发牌 每人两支 * public void showPeopleCard() //显示两个角色自己获得的牌 * public void sortCard() //将每个角色自己的牌按从小到大排序 * public void comparePeopleCard() //比较角色的牌 * * SingleCard类 实现Comparable接口 * 功能:产生单支牌 * 属性:ID、color、keyID数组、keyColor数组 * 方法:public SingleCard(){} //无参构造函数 * public SingleCard(String ID,String color) //有参构造函数 * @Override public int compareTo(SingleCard o) //比较当前牌与SingleCard o的牌的大小 * * People类 * 功能:产生一个角色 * 属性:ID、Name、和、存储牌的List集合。 * 方法: public People() //初始化存储牌的List集合; *
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值