实现洗牌算法

名称: 实现洗牌算法

分析:
识别类:
public class Card{}; //一张牌
public class Poker{}; //一副牌
public class PlayGame{}; //对牌进行的相关操作,包括洗牌,切牌


识别属性:
Card应包括的属性有: private color(花色),private value(大小);
Poker应包括的属性有:Card Cards[54]; //包含54张牌元素的数组,用来描述一副牌;
public String color[4]; //包含4种花色
public String value[13]={"A","2","3",......,"K"}

定义类:
Card{

属性: private color //花色
private value //值,大小
构造函数:
根据需要,牌大致可划分为两种,一种是A,2....K.(普通牌),另外一种就是大王,小王
Card(String value,String color){} //用来初始化普通牌
Card(String value){} //传入一个参数,用来初始化大王,小王
方法:
为了得到private的属性,定义以下方法来获取
String getColor(){}; //得到这张牌的花色
String getValue(){}; //用来得到这张牌子的大小;

}

Poker{

属性: 因为每副牌都有共同属性:四种花色,有从A,2....K十三种值类型,每副牌都有54张,故有以下属性
public String color[4]={.....}
public String Value[13]={.....}
Card Cards[54];
构造函数:
根据以上的属性,分析可知一副牌初始化时不需要传参,
Porke{
......
}
方法:
每副牌都应该要有一个显示的方法,打印出Cards[54]的内容.如下:
public void print(){}

}

PlayGame{
分析可知,在该类中我们需要做的是定义一个洗牌的方法,切牌的方法,还可包括main函数。
无需构造函数,

方法:
洗牌方法: public Poker XiPai(){}
洗牌算法描述:
用random产生一组随机且不重复的数,用int array[54] 来保存,其中每一个元素都对应 着Cards[54]的下标,
将Cards[54]以该int array[54]的值的顺序来存放,则是一组随机的Card元素,从而实现了洗 牌算法
最后返回值为新的序列的Cards[54]
切牌方法:
public Poker DaoPai(){}
切牌算法描述:
用random产生一个随机数,找到该随机数为下标的Cards[54]的元素。将该元素以前的元素 接到该Cards[54]数组的后面。最后返回一个新的序列的Cards[54]。从而实现倒牌算法
main函数:
通过对Poker new一个新的对象,来进行洗牌,倒牌的操作



 

你可能感兴趣的:(数据结构与算法分析)