* * Swift----炸金花游戏

    • Swift—-炸金花游戏
      要求
      1. 创建一副扑克牌,包括2-10,J,Q,K,A,黑桃,红桃,梅花,方片,不包括大小王。
      2. 创建两名玩家
      3. 洗牌10次打乱顺序。
      4. 发牌,从第一张开始,按照一人3张
      5. 按规则比较大小。
        每人3张手牌的大小比较规则:
  • 1 豹子>同花顺>同花>顺子>对子>单张
  • 2 处于一级别的两手牌比较最大的一张牌的大小
  • 3 若两手牌为同一级别且最大的一张牌一样,则比较剩下的牌
  • 4.3张牌都相等后再从最大的牌比花色,但此机率实在太小,省略

    设计思路:
    创建以下类:
    Cards类:描述单张牌;
    Play类:描述玩家;
    Game类:控制游戏流程
    PlayerWin类:静态赢家类,存放最后赢家的相关信息,用于输出
    Computerd类:静态工具类,有各种需要用到的计算对比方法
    daXiaoType:枚举类型,设定玩家手上的6种牌型,分别对应豹子>同花顺>同花>顺子>对子>单张
    每个方法 和属性都有详细注释

  • */
    import Foundation

//类:扑克牌
class Card{

var color:String   //花色
var number:String  //数字
init(color:String,number:String) {
    self.color=color
    self.number=number
}
func toString() ->String{
    return "\(color)\(number)"
}

}
//类:玩家
class Player{
var id:Int //玩家ID
var name :String
var playerCardList:[Card]=[] //玩家手上的牌,0-2号为1号玩家的,3-5号原来2号玩家人
init(id:Int,name:String) {
self.id=id
self.name=name
}
}

//类:赢家,采用静态属性,直接赋值
class PlayerWin{
static var playerWinId:Int=0 //赢家在数组中的编号
static var cardWinType:Int=1 //赢家手牌的类型
}

//玩家手牌的类型
//豹子 6>同花顺5 >同花4 >顺子3 >对子2 >单张1
enum daXiaoType:Int{
case type_Baozhi=6
case type_TongHuaShun=5
case type_TongHua=4
case type_shunzhi=3
case type_DuiZhi=2
case type_DanZhang=1
}

//计算类,全部用静态方法
class Computerd{
/**
将牌面中的数字部份转换为编号数组(并将数组按从大到小排序),用于比较大小
*/
static func numberSort(cards:[Card]) -> [Int] {
var tmpNumber:[Int]=[] //临时数组,用来存放转换为数字后的3张手牌编号

    //将手牌大小的数组转换成数字编号,用于确认是否顺子-》因为大小中含有JQKA,不能直接通过字符串转换成数字,需借用数组编号
    //一共3张牌,3次循环
    for i in 0..<3 {
        for j in 0..<13{   //J是扑克牌数字 的编号
            if cards[i].number==Game.number[j]{
                tmpNumber.append(j)
                //  print("牌面是&#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值