尝试在屏幕上更改图像视图?

Trying to get an image view to change on the screen?

提问人:user3487784 提问时间:3/13/2023 更新时间:3/13/2023 访问量:58

问:

我正在尝试开发一款纸牌游戏,其中庄家和玩家的 8 张牌最初面朝下显示。当玩家或庄家被击中或发牌时,我想将牌面朝上“翻转”,以显示玩家或庄家的面朝下的牌。

我尝试在 SwiftUI 中使用 @ObservableObject 和 .environmentObject 全局传递实例。有一次,我让它在原始的自然界中工作,但我不记得我是怎么做到的。我对 SwiftUI 相当陌生;

@State var dealerHand: [String]
@State var playerHand: [String]
@State var dealerHasCard:[Bool]
@State var playerHasCard:[Bool]
    var body: some View {
        HStack(spacing: -30.0) {
            Spacer()
            Image(dealerHasCard[0] ? "\($dealerHand[0])" : faceDown)
            Image(dealerHasCard[1] ? "\($dealerHand[1])" : faceDown)
            Image(dealerHasCard[2] ? "\($dealerHand[2])" : faceDown)
            Image(dealerHasCard[3] ? "\($dealerHand[3])" : faceDown)
            Image(dealerHasCard[4] ? "\($dealerHand[4])" : faceDown)
            Image(dealerHasCard[5] ? "\($dealerHand[5])" : faceDown)
            Image(dealerHasCard[6] ? "\($dealerHand[6])" : faceDown)
            Image(dealerHasCard[7] ? "\($dealerHand[7])" : faceDown)
            Spacer()
        }
        Text("You")
            .font(.title)
            .foregroundColor(.blue)

        HStack(spacing: -30.0) {
            Spacer()
            Image(playerHasCard[0] ? "\($playerHand[0])" : faceDown)
            Image(playerHasCard[1] ? "\($playerHand[1])" : faceDown)
            Image(playerHasCard[2] ? "\($playerHand[2])" : faceDown)
            Image(playerHasCard[3] ? "\($playerHand[3])" : faceDown)
            Image(playerHasCard[4] ? "\($playerHand[4])" : faceDown)
            Image(playerHasCard[5] ? "\($playerHand[5])" : faceDown)
            Image(playerHasCard[6] ? "\($playerHand[6])" : faceDown)
            Image(playerHasCard[7] ? "\($playerHand[7])" : faceDown)
            Spacer()
        }
    }
}
func showCards(dealerHand: [String], playerHand: [String], dealerHasCards: [Bool], playerHasCards: [Bool]) -> ([String], [String], [Bool], [Bool]) {

    var dealerCards:[String] = ["","","","","","","",""]
    var playerCards:[String] = ["","","","","","","",""]
    var dealerHasCards:[Bool] = [false,false,false,false,false,false,false,false]
    var playerHasCards:[Bool] = [false,false,false,false,false,false,false,false]
    
    for i in 0..<dealerHand.count {
        if dealerHand[i] != "" {
            dealerCards[i] = dealerHand[i]
            dealerHasCards[i] = true
        } else {
            dealerCards[i] = faceDown
            dealerHasCards[i] = false
        }
     }

    for i in 0..<playerHand.count {
        if playerHand[i] != "" {
            playerCards[i] = playerHand[i]
            playerHasCards[i] = true
        } else {
            playerCards[i] = faceDown
            playerHasCards[i] = false
        }
     }
   
    if gameOver {
        message = checkResults(playerScore: playerScore, dealerScore: dealerScore)
    }
    
    return (dealerCards, playerCards, dealerHasCards, playerHasCards)
}
iPhone iPad SwiftUI 状态 ObservableObject

评论

1赞 workingdog support Ukraine 3/13/2023
...I want to "flip" the card face up to reveal the player's or dealer's face down card.你想在哪里做这件事,它的代码在哪里。有什么用,在你看来在哪里使用它?展示我们可以编译和运行的最小可重现代码,请参阅:最小代码func showCards(...)
0赞 user3487784 3/16/2023
我想除了创建项目本身之外,我已经为最少的代码添加了必要的结构。

答: 暂无答案