作业四 德州扑克牌

1.使用枚举类型对一副扑克牌(52张牌,不包括大小王)建模:一副扑克牌有四种花色:黑桃,方块,梅花,红心;每种花色的牌有13张;

import java.util.EnumMap;
import java.util.EnumSet;

public class EnumSetTest {
    //枚举类型Suit
    enum Suit{"HEART ","SPADE ","DIAMOND ","CLUB "};
    enum Rank{"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
   }

2.创建2个枚举类型包含这两类实例。
每张扑克牌Card对象都会有这两个属性,创建一个带有这两个枚举类型属性的类Card
`package com.Cards.model;

package com.Cards.model;
 
/**
 * @author Rock Lee
 * @version 2012-10-21 16:51:49
 * @see CardSetting.java
 * @proposal Build A Class Contain All the info for ONE Card in the poker
 * @fix 2012-12-12 13:01:04
 * */
public class Card
{
 
	private String color = null;
	private String num = null;
 
	private boolean visible = false;
	private boolean red = false;
 
	public Card(String color, String num)
	{
		this.color = color;
		this.num = num;
 
		// if the color is diamond or heart ,then red is true,else false
		if (color.equals(CardSetting.COLOR[CardSetting.INDEX_HEART])
				|| color.equals(CardSetting.COLOR[CardSetting.INDEX_DIAMOND]))
			this.red = true;
		else
			this.red = false;
	}
 
	/*
	 * 若花色,牌面大小相同,则认为是同一张牌
	 * */
	public boolean equals(Object obj)
	{
		Card anotherCard = (Card) obj;
		return this.color.equals((anotherCard.color))
				&& this.num.equals(anotherCard.num);
 
	}
 
	public void setVisiable(boolean visible)
	{
		this.visible = visible;
	}
 
	public boolean isVisible()
	{
		return visible;
	}
 
	public boolean isRed()
	{
		return red;
	}
 
	/*
	 * 1.此方法仅用于 命令行,或调试模式中2.重载了 object的使用方法.在整个列,或者deck suit输出的时候,方便 以字符串的方式拼接
	 */
	public String toString()
	{
		if (this == null)
			return "EMPTY";
		else
		{
			if (this.isVisible())
			{
				return (color + " " + num + " ");
			}
 
			else
				return "███ ";
		}
 
	}
 
	public String getColor()
	{
		return color;
	}
 
	/* 以数字的方式,返回牌面的大小 */
	public int getNum()
	{
		char ch = num.charAt(0);
		switch (ch)
		{
		case 'A':
			return 1;
		case 'J':
			return 11;
		case 'Q':
			return 12;
		case 'K':
			return 13;
		default:
			return Integer.parseInt(num);
		}
 
	}
 
	/* 以String的方式,返回牌面的大小 */
	public String getNumInString()
	{
		return num;
	}
}

3.初始化扑克牌排列顺序

public class CardHeap
{
	//这里使用了vector来维护一套 "刚刚从扑克牌盒子里取出的 52张牌"
	private Vector<Card> vector=null;
		
	public CardHeap()
	{
		this.initialize();	
	}
	
	/*初始化13*4=52张牌*/
	public void initialize()
	{
		vector=new Vector<Card>();
		Card tmp=null;
		for (int i = 0; i < 13; i++)//13 cards in Color Heart
		{
			tmp=new Card(CardSetting.COLOR[CardSetting.INDEX_HEART], CardSetting.NUM[i]);
			tmp.setVisiable(false);
			vector.add(tmp);
		}
		for (int i = 0; i < 13; i++)//13 cards in Color SPADE
		{
			tmp=new Card(CardSetting.COLOR[CardSetting.INDEX_SPADE], CardSetting.NUM[i]);
			tmp.setVisiable(false);
			vector.add(tmp);
		}
		for (int i = 0; i < 13; i++)//13 cards in Color DIAMOND
		{
			tmp=new Card(CardSetting.COLOR[CardSetting.INDEX_DIAMOND], CardSetting.NUM[i]);
			tmp.setVisiable(false);
			vector.add(tmp);
		}
		for (int i = 0; i < 13; i++)//13 cards in Color CLUB
		{
			tmp=new Card(CardSetting.COLOR[CardSetting.INDEX_CLUB], CardSetting.NUM[i]);
			tmp.setVisiable(false);
			vector.add(tmp);
		}	
	}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值