一.画图整理思路
首先,我们应该先整理出写程序的思路,这是写程序的第一步,也是最重要的一步。
二.该程序从哪下手?
- Java语言面向对象,故我们首先想到的是建立需要的一张扑克类(class Poker)
-Poker类里包括两个属性数字(2 3 4 5 6 7 8 9 J Q K A)和花色(♠️,♥️,♣️,♦️)
三.怎样实现两张牌的比较?
-Q:接下来我们要思考的问题是:怎样实现两张牌的比较?
-A:
1⃣️我们对扑克牌大小的认知是如果两张牌数字不同,那么按2<3<4 <5<6<7<8<9<J< Q< K <A比较牌的大小,如果数字相同,则比较花色的大小(♠️>♥️>♣️>♦️)
2⃣️那么我们该怎样将牌的大小的比较写入程序里?试想:我们是不是可以将每张牌的数字贴上一个标签tag,同理给花色也贴上标签。那么我们继而想到创建牌的数字类(Pokernumber)包括数number和标签tag两个属性,和牌的花色类(PokerSuit)包括花色suit和标记tag两个属性,这样我们就可以通过比较tag得出牌的数字和花色的大小顺序。
3⃣️将tag类型定为int类型便于后续比较,将number和suit定位String类型便于记录牌的数字和花色。
代码如下:
4⃣️Poker类里应该包括的属性即PokerSuit类的suitObj和Pokernumber类的numberObj,并包括有用于比较两张牌的comepareTo方法
四.怎样模拟一套牌
在建立每一张扑克类型Poker类后,我们应想到去建立一整套扑克类PokerManager,并定义集合保存52个Poker类对象。我们在这一整套扑克中实现随机取出两张牌(利用getPoker方法)
-将2 3 4 5 6 7 8 9 10 J Q K A按此顺序存入numbers[]数组中,同理将♦️ ♣️ ♥️ ♠️按此顺序存入suits[]数组中,这样数组元素下标就是tag值,通过两个for循环建立52个Poker对象并存入集合中。
-下面我们建立Test类来测试
先创建PokerManager类mananger,利用manager的getPoker方法随机取出Poker1和Poker2后,用Poker1(或Poker2)调用comepareTo方法,得到结果。