1 豹子》同花順》同花》順子》對子》單張
2 處於一級別的兩手牌比較最大的一張牌的大小
3 若兩手牌為同一級別且最大的一張牌一樣,則比較剩下的牌
4.3張牌都相等後再從最大的牌比花色,但此機率實在太小,省略
設計思路:
建立以下類:
cards類:描述單張牌;
play類:描述玩家;
game類:控制遊戲流程
playerwin類:靜態贏家類,存放最後贏家的相關資訊,用於輸出
computerd類:靜態工具類,有各種需要用到的計算對比方法
daxiaotype:列舉型別,設定玩家手上的6種牌型,分別對應豹子》同花順》同花》順子》對子》單張
每個方法 和屬性都有詳細注釋
*/ import foundation
//類:撲克牌
class card
func tostring() ->string}
//類:玩家
class player
}//類:贏家,採用靜態屬性,直接賦值
class playerwin
//玩家手牌的型別
//豹子 6>同花順5 >同花4 >順子3 >對子2 >單張1
enum daxiaotype:int
//計算類,全部用靜態方法
class computerd}}
//此時陣列已轉換成編號,按從小到大的順序排序
tmpnumber = tmpnumber.sorted() //預設從小到大排序
var x:[int]=
return x
}/**
比較2個數的大小,當第乙個大時,返回0;當第2個大時,返回1;當相等時,返回-1
*/static func max_xy(x:int,y:int)->int
if xint
if numbers[1]==numbers[2]
if numbers[0]==numbers[2]
return 0
}/**
對比2個數字的大小,先比較第一張,相等再第二張,相等再第3張
返回0代表第乙個玩家贏。返回1代表第二個玩家贏
*/static func max_cards(cards1:[card],cards2:[card])->int
if card1_numbers[0]card2_numbers[1]
if card1_numbers[1]card2_numbers[2]
if card1_numbers[2]string
if cardtype==daxiaotype.type_tonghuashun.rawvalue
if cardtype==daxiaotype.type_shunzhi.rawvalue
if cardtype==daxiaotype.type_tonghua.rawvalue
if cardtype==daxiaotype.type_duizhi.rawvalue
if cardtype==daxiaotype.type_danzhang.rawvalue
return "err"
}/**
輸出陣列完整內容
*/static func printarray(array:array)
var tmpcardnumber:[string]= //臨時陣列,用來對比手牌數字的大小
//將三張手牌的大小傳到臨時陣列裡面
for i in 0..<3
//對子
if cards[0].number==cards[1].number || cards[1].number==cards[2].number || cards[0].number==cards[2].number
//判斷同花順
//同花
if cards[0].color==cards[1].color && cards[1].color==cards[2].color
else //花色相同但不是順子
return type
} //順子 : 花色不同但是順子
if cards[0].color != cards[1].color || cards[1].color != cards[2].color
} //預設是單張
return type
}/**判斷手牌是不是順子
*/static func isshunzhi(cardnumbers:[string])->bool
}}
//此時陣列已轉換成編號,按從小到大的順序排序
var sortnumber = tmpnumber.sorted()
print("牌面大小在陣列中的編號是:\(sortnumber[0])..\(sortnumber[1])..\(sortnumber[2])")
//是不是連續?
if sortnumber[0]+1 == sortnumber[1] && sortnumber[1]+1 == sortnumber[2]
return false
}/**
當2個玩家手牌的型別一樣時,比較2張牌的大小 ,返回0代表第乙個贏,返回1代表第二個贏
*/static func comparison(cards1:[card],cards2:[card]) ->int //比較最後一張牌的大小
else
}//當為同花順或者順子時,比較第一張的大小就ok
if playerwin.cardwintype==5 || playerwin.cardwintype==3
//當為對子時,比較對子那一張即可
if playerwin.cardwintype==2
//當是同花或者單張時,要先比較第一張,相等再第二張,相等再第3張。如果都相等棟比較第一張花色。。。到第3張花色
if playerwin.cardwintype==4 || playerwin.cardwintype==1
return winid
}//遊戲主類
class game
//建立撲克牌
func createcards()
}print("撲克牌建立ok...")
print("撲克牌為:")
computerd.printarray(array: cardlist)
}//洗牌
func changecards()
}print("洗牌完成。。。。")
computerd.printarray(array: cardlist)
}//發牌,每人n張,炸金花為3張
func sendcars(numbercard:int)
if card1_type//扎金花要發3張牌
let number = 3
//主程式開始
var game=game();
game.creatplayer()
game.createcards()
game.changecards()
game.sendcars(numbercard: number)
game.gameko()
過年回家炸金花
過年的時候和親戚朋友們一起炸金花,小贏了一把,仔細想想,我覺得炸金花的目的有三 1.娛樂,增進彼此間的感情 2.練 賭博 的氣概 3.建模 第一條很容易理解,而第二條,我是這樣理解的 人的一生會面臨種種抉擇,有時候沒能完全了解整個情況,可能只會根據目前的情況去推測事情的趨勢,勝負不明朗。這時候需要有...
XDU 1044 炸金花 (模擬)
時間限制 1 sec 記憶體限制 128 mb 提交 狀態 討論版 炸金花是乙個風靡全球的撲克遊戲,不少人因為這個遊戲發了家,而更多的人則輸得傾家蕩產。為了幫助賭徒們戒掉它,現在決定派你去寫乙個程式,幫助賭徒們更好的認識這個遊戲。炸金花在這裡被簡化成這樣乙個情況 每乙個人都會得到隨機派發的三張牌 每...
php 炸金花牌型 和 比牌 規則
引數 poker 是乙個陣列 size 1 13 表示 size arr a 二 三 四 五 六 七 八 九 十 j q k tag 1 4 表示 tag arr 黑桃 紅桃 梅花 方片 例子 豹子a poker size 1,tag 1,name 黑桃a size 1,tag 2,name 紅桃a...