我有一个用于创建,随机播放和处理扑克牌的自定义struct
。
struct Card {
let pip : Pip
let suit : Suit
var isFaceCard : Bool {
return pip.rawValue > 10
}
var color : CardColor {
return suit.color
}
}
其次我有一个玩家词典,每个玩家都有一张卡片集。
var Players = ["Scott": [Card](), "Bob": [Card](), "John": [Card]()]
为了有效地处理我已经洗过的牌组,我计划两次遍历玩家的字典并每次处理一张牌,就像现场一样。
是否可以简单地将卡片类型附加到卡片收藏中?我的尝试似乎没有奏效。 d
是卡类型的混乱甲板(集合)。
Players["Scott"].append(d.deal())
对于每个玩家使用Structs我添加了这个
struct Player {
let name : String
var cards : [Card]
}
var Players = [Player]()
Players.append(Player(name:"Scott"))
我是否必须在初始化时给予玩家他们的“牌”,或者我可以在以后处理它们吗?由于上面的代码产生错误。
Players.append(Player(name:"Scott", cards: [Card]()))
以上是否正确?
答案 0 :(得分:1)
直接回答:
如果玩家拥有一系列牌,那么玩家应该是一个结构,这个结构应该包含一系列牌作为属性。我建议不要在这里使用词典。
编辑后:
你走在正确的轨道上。
如果你自己为你的结构创建了一个初始化程序,那么你不必 在初始化时给玩家他们的牌:
struct Player {
let name : String
var cards : [Card]
}
let joe = Player(name: "Joe", cards: [])
这样做会取消自动生成成员初始值设定项,只有你自己生成。
但是如果你想保留自动成员初始化程序,你可以在初始化时传递这样的空数组:
indexOf
发表评论后:
如果您拥有阵列中的所有玩家,则可以使用带有闭包谓词的struct Player {
let name : String
var cards : [Card] = []
init(name: String) {
self.name = name
}
func fold() {
print("\(name) just folded")
}
}
var players = [Player]()
players.append(Player(name: "Joe"))
players.append(Player(name: "Jane"))
players.append(Player(name: "Jack"))
players.append(Player(name: "Janice"))
if let janeIndex = players.indexOf({ $0.name == "Jane" }) {
players[janeIndex].fold()
}
来获取特定玩家,例如:
filter
让我们假设您希望所有玩家弃牌,但可以使用let notJack = players.filter { $0.name != "Jack" }
notJack.forEach { $0.fold() }
:
Use the below method for converting UTC date format to Local date Format
private void converUTCTOLocal(){
String dateInput = "02/04/2016 12:22:11";
//sdfIn is current date format
SimpleDateFormat sdfIn = new SimpleDateFormat("dd/mm/yyyy hh:mm:ss");
//sdfOut is required date format
SimpleDateFormat sdfOut = new SimpleDateFormat("dd/mm/yyyy hh:mm:ss");
sdfOut.setTimeZone(Calendar.getInstance().getTimeZone());
TimeZone utcZone = TimeZone.getTimeZone("UTC");
sdfIn.setTimeZone(utcZone);
try {
Date dateIn = sdfIn.parse(dateInput);
String dateOut = sdfOut.format(dateIn);
Log.i("dateOut",""+dateOut);
}catch (ParseException e1){
e1.printStackTrace();
}catch (Exception e){
e.printStackTrace();`enter code here`
}
}