Welcome

首页 / 移动开发 / IOS / Swift实现的扑克牌类示例

Swift实现的扑克牌类示例

//

//  Random.swift

//  CH623

//

//  Created by 胡振强 on 16/8/31.

//  Copyright © 2016年 胡振强. All rights reserved.

//


import Foundation

//扑克牌类型

enum poktype:String{

case A="黑桃";

case B="红桃";

case C="方片";

case D="梅花";

}

//扑克牌面

enum poknum:String{

case NA=" A";

case N2=" 2";

case N3=" 3";

case N4=" 4";

case N5=" 5";

case N6=" 6";

case N7=" 7";

case N8=" 8";

case N9=" 9";

case N10="10";

case NJ=" J";

case NQ=" Q";

case NK=" K";

}

//单张扑克结构定义

struct pokcard{

var cardtype:poktype

var cardnum:poknum;

var pokname:String{

return ("\(cardtype.rawValue)\(cardnum.rawValue)");

}

}

//定义单一完家信息

struct player{

var pokindex:Int=0;

//使用静态变量的用途是类实例在方问修改后,其它实例都可以获得最新的处理结果,来保存扑克牌的发牌记录

static var pokercards:[pokcard]=player.setup();

//从现有可用的扑克牌中cards中随机取出一组牌(13张),要求player最多只能创建4个人实例

//以下是使用闭包来初始化cards属性,闭包型式 var obj:[Type]={}();

var cards:[pokcard]={

var tmp:[pokcard]=[];

for i in 0..<13

{

//需要从现有的52张扑克牌中pokercards中随机取出1张,加入到tmp当中,同时将这张牌移出(表示已经发牌)

let s=Int(arc4random())%pokercards.count;

//将取出的扑克牌从pokercards中移除

tmp.append(pokercards.removeAtIndex(s));

}

return tmp;

}();

//初始化52张扑克牌

static func setup()->[pokcard]

{

var tmp:[pokcard]=[];

var type:[poktype]=[.A,.B,.C,.D];

var number:[poknum]=[.NA,.N2,.N3,.N4,.N5,.N6,.N7,.N8,.N9,.N10,.NJ,.NQ,.NK];

for i in 0..<4

{

for j in 0..<13

{

tmp.append(pokcard(cardtype: type[i], cardnum: number[j]));

}

}

return tmp;

}

}