working on simple card game learn swift , ios programming. function, following code work:
func dealcards() { _ in 0...9 { player1.carddealt(deck.getnextcard()) player2.carddealt(deck.getnextcard()) } }
however, rotate dealer. know duplicate loop within if/else blocks, rather this:
func dealcards() { // dealer considered position 2 if player1.isdealer() { let pos1 = player2 let pos2 = player1 } else { let pos1 = player1 let pos2 = player2 } _ in 0...9 { pos1.carddealt(deck.getnextcard()) pos2.carddealt(deck.getnextcard()) } }
i'm sure it's simple, can't seem figure out how alias player objects use them in way.
the problem code seems defining pos1
, pos2
inside each if
statement, , these values cannot accessed outside these statements. need first define them outside statements , set values inside. define them player1
, player2
respectively, , swap values if player1.isdealer()
.
this how in end:
func dealcards() { let pos1 = player1 let pos2 = player2 // dealer considered position 2 if player1.isdealer() { pos1 = player2 pos2 = player1 } _ in 0...9 { pos1.carddealt(deck.getnextcard()) pos2.carddealt(deck.getnextcard()) } }
a more compact way swap values using tuples , ternary operator:
func dealcards() { // dealer considered position 2 let (pos1, pos2) = player1.isdealer() ? (player2, player1) : (player1, player2) //if player1 dealer, swap pos1 , pos2 _ in 0...9 { pos1.carddealt(deck.getnextcard()) pos2.carddealt(deck.getnextcard()) } }
Comments
Post a Comment