// // EmojiMemoryGameView.swift // Memorize // // Created by ching on 2023/2/12. // import SwiftUI struct EmojiMemoryGameView: View { @ObservedObject var game: EmojiMemoryGame var body: some View { ScrollView { LazyVGrid(columns: [GridItem(.adaptive(minimum: 65))]) { ForEach(game.cards) { card in CardView(card: card).aspectRatio(2 / 3, contentMode: .fit) .onTapGesture { game.choose(card) } } } } .foregroundColor(/*@START_MENU_TOKEN@*/ .red/*@END_MENU_TOKEN@*/) .padding(.horizontal) } } struct CardView: View { let card: EmojiMemoryGame.Card var body: some View { ZStack { let shape = RoundedRectangle(cornerRadius: 20.0) if card.isFaceUp && !card.isMatched { shape.fill().foregroundColor(.white) shape.strokeBorder(lineWidth: 3) Text(card.content).font(.largeTitle) } else if card.isMatched { shape.opacity(0) } else { shape.fill() } } } } struct ContentView_Previews: PreviewProvider { static var previews: some View { let game = EmojiMemoryGame() EmojiMemoryGameView(game: game) .preferredColorScheme(.dark) EmojiMemoryGameView(game: game) .preferredColorScheme(.light) } }