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;
}
}