/*
扎金花:
1.有Card
Card {
成员变量
String huaSe;// 花色
int dianShu;// 点数
构造方法
Card(){}/*
你去赌场.
发牌机给你发牌
分析: 定义 发牌机类
定义 扑克类
发牌机有发牌的方法,获取到一张扑克牌
返回值类型的问题
类 : 实际要的是该类的对象
抽象类: 实际要的是子类对象
接口:
public Magic getMagic(){
return Magic子类对象;
}
人使用发牌机来发牌
定义类 人, 人拿来一个发牌机
*/
class FaPaiJiTest{
public static void main(String[] args){
//创建对象
// FaPaiJi fpj = new FaPaiJi();
// //调用发牌的方法,返回来一张扑克,那么我就用 Card接收
//
// Card c = fpj.faPai();
//
// c.jinHua();
// System.out.println("---------------");
// Pai pai = fpj.getPai();//调用发牌机的 getPai,返回值类型是 Pai 类型,那么我就用 Pai 接收
// pai.shuang();
// System.out.println();
//
// System.out.println("---------------");
// Magic m = fpj.getMagic(); //调用获取能变魔术的东西的方法
// m.bianMoShu();
// //创建对象 人
// Person p = new Person();
// //人调用获取发牌机 ,获得了发牌机
// FaPaiJi fpj = p.getFaPaiJi();
// //发牌机调用 发牌的方法,发出来 Card
// Card c = fpj.faPai();
// //Card 的 jinHua
// c.jinHua();
//链式编程
new Person().getFaPaiJi().faPai().jinHua();
}
}
class Person {
//拿来发牌机方法
/*
两个明确 :
返回值类型 : FaPaiJi
参数列表 : 无
*/
public FaPaiJi getFaPaiJi(){
System.out.println("发牌机来了~~~~~");
return new FaPaiJi();
}
}
//定义发牌机类
class FaPaiJi{
/*
获取牌的方法
两个明确:
返回值类型: Card
参数列表 : 无
*/
public Card faPai(){
System.out.println("发牌开始发牌了.....");
return new Card();
}
/*
描述不清到底发的是什么牌 ,但是,你还得具体的拿到一个实实在在对象,所以就是Pai 子类对象
*/
public Pai getPai(){
return new MaJiang();
}
/*
发出来的东西,可以的神奇的功能
两个明确 :
返回值类型 : Magic
参数列表: 无
*/
public Magic getMagic(){
return new Card();
}
}
interface Magic{
public abstract void bianMoShu();
}
class Card implements Magic{
public void jinHua(){
System.out.println("三个花色一样,就是金花");
}
public void bianMoShu(){
System.out.println("神奇的纸牌,能变魔术,但是重点还是给谁变.....");
}
}
abstract class Pai{
//爽的方法
public abstract void shuang();
}
class MaJiang extends Pai{
public void shuang(){
System.out.println("搓麻是打牌的一种方式,杠开了最爽");
}
}
Card(String huaSe ,int dianShu ){
this.huaSe = huaSe;
this.dianShu = dianShu;
}
}
2.发牌机
FaPaiJi{
成员方法 ,faCaid
返回值类型 Card
参数列表 : 无
public Card getCard(){
//创建 Card 对象
Card card = new Card("huaSe",dianShu);
return card;
}
}
3.测试
main(){
获取三张牌
Card c = fpj .getCard();
Card c2 = fpj .getCard();
Card c3 = fpj .getCard();
//对象数组,把所有的牌都 拿到手里
Card[] card = new Card[3];
card[0] = c;
card[1] = c2;
card[2] = c3;
//遍历数组
for
}
*/
import java.util.Random;
class CardTest{
public static void main(String[] args){
//创建发牌机对象
FaPaiJi fpj = new FaPaiJi();
//调用getCard 获取到 一张Card
Card c0 = fpj.getCard();
Card c1 = fpj.getCard();
Card c2 = fpj.getCard();
Card[] cards = new Card[3];
cards[0] = c0;
cards[1] = c1;
cards[2] = c2;
for ( int x=0; x<cards.length;x++ ){
System.out.print(cards[x].getHuaSe() +"" + cards[x].getDianShu()+" ");
}
}
}
//定义Card
class Card {
//成员变量
private String huaSe;// 花色
private int dianShu;// 点数
//构造方法
Card(){}
Card(String huaSe ,int dianShu ){
this.huaSe = huaSe;
this.dianShu = dianShu;
}
public String getHuaSe(){
return huaSe;
}
public int getDianShu(){
return dianShu;
}
}
//定义发牌机
class FaPaiJi{
public Card getCard(){
//创建 Card 对象
// 花色 : "黑桃","红桃","梅花","方块"
String[] hs = {"黑桃","红桃","梅花","方块"}; // 0 ,1, 2,3
//创建Random对象,
Random r = new Random();
//使用nextInt(n)
int x = r.nextInt(4);
String huaSe = hs[x]; //花色
// 不好用 Math.random() [0-1)
int dianShu = r.nextInt(13) + 1; //点数
Card card = new Card(huaSe, dianShu);
return card;
/*
生成牌的时候,直接生成52不一样的牌 ,存在Card[]
随机Random().nextInt(52),返回的是 0-51
只要 随机数不一样,那么牌肯定不一样
*/
}
}
|
|