java 板


LINE

※ 引述《ogamenewbie (._.)》之铭言: : ※ 引述《infinity7519 (富贵险中求)》之铭言: : : public class Card { : : private String face; : : private String suit; : : public Card( String cardFace, String cardSuit ){ : : face = cardFace; : : suit = cardSuit; : : } : : public String toString(){ : : return face + " of " + suit; : : } : : } : : 请问板上前辈 要如何增加一个功能 : : 让它能够判别所发的牌是否有葫芦或twopair等等 : : 一次发五张牌 : 先作 getter 让你可以取得 face 跟 suit, : 最好是取得一个适合比较的数值而非 string 本身 : 然後另外写一个程式去 random 产生五张 Card : 再根据那个 getter 去比较五张卡的情况 : 可以傻傻的统计 cardFace 每种有几张, cardSuit 每种有几张. : 再根据那两个阵列依照优先顺序比对牌组的组合下来. : 例如说先看看有没有哪个 cardFace 有 5 个的, 且 cardSuit 有依序 : 然後再检查 cardSuit 里面哪个有 4 个的, : 然後再 blahblah... 如果是我写的话, 我会这样写 (半 psuedo code): class Card { Suit suit; int number; // ctor, getter etc } class Deck { // 一副牌 // 内容自己想 public void shuffle(); public Card deal(); } class HandOfCards { // 手牌 List<Card> cards; //ctor, getter etc public void add(Card card); public void sort(Comparator<Card> comparator); } interface CardPattern { boolean match(HandOfCards hand); } class FlushPattern { // 同花顺 boolean match(HandOfCards hand) { hand.sort(new BySuitComparator()); // 适当的 comparator // 令手牌先用花再用点数 sort // sort 好後再检查就很简单了吧? } } class FullHousePattern { boolean match(HandOfCards hand) { hand.sort(new ByNumberComparator()); // 用点数 sort 好, 再检查 full house 应该也简单得多了吧? } } main() { Deck deck = new Deck(); Hand = new Hand(); CardPatterns supportedPatterns = { new FlushPattern(), new FullHousePattern(), new StraightPattern(), new FourOfAKindPattern() } for (int i = 0; i < 4; i++) { // 发五张牌到手牌 hand.add(deck.deal()); } for (CardPatterns pattern: supportedPatterns) { if (pattern.match(hand)) { System.out.println("Match Pattern! " + pattern.getClass().getName()); break; } } } 把 Card (个别的牌), Deck (副牌), Hand (手牌) 都以物件代表, 加上 CardPattern 来代表不同的牌面, 这样以後要新增 牌面 (比如三条, two pair 等), 就新增新的 card pattern 就好了, 这样的写法, 以後也比较好 reuse. --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 202.155.236.82







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Gossiping 或 站内搜寻

TOP