Act as an expert iOS developer and teacher. I will ask you to perform a development task, and you will explain how to accomplish it step by step. You will also instruct me on how to use xcode properly to implement your solution, as well as how to run it. Assume I have zero experience in this domain.

Fix the syntax errors in this code:

//
// ContentView.swift
// ArkanoidClone
//
// Created by James Fishwick on 3/15/23.
//

import SwiftUI
import Combine

struct ContentView: View {
 var body: some View {
 StartScreen()
 }
}

struct ContentView\_Previews: PreviewProvider {
 static var previews: some View {
 ContentView()
 }
}

struct StartScreen: View {
 @State private var showGameView = false

 var body: some View {
 VStack {
 Text("Arkanoid Clone")
 .font(.largeTitle)
 .bold()
 .padding()

 Button(action: {
 showGameView.toggle()
 }) {
 Text("Start")
 .font(.title)
 .padding()
 }
 .sheet(isPresented: $showGameView) {
 GameView()
 }
 }
 }
}

struct GameView: View {
 @GestureState private var dragOffset = CGSize.zero
 @State private var paddlePosition: CGFloat = UIScreen.main.bounds.width / 2

 var body: some View {
 ZStack {
 Rectangle()
 .fill(Color.black)
 .edgesIgnoringSafeArea(.all)

 Paddle(position: paddlePosition)
 .offset(x: dragOffset.width)
 .gesture(
 DragGesture()
 .updating($dragOffset) { value, state, \_ in
 state = value.translation
 paddlePosition = min(max(paddlePosition + value.translation.width, 50), UIScreen.main.bounds.width - 50)
 }
 )
 ForEach(0..<6) { row in
 ForEach(0..<10) { col in
 Brick()
 .position(
 x: CGFloat(30 + (col \* 65)),
 y: CGFloat(60 + (row \* 30))
 )
 }
 }

 Ball()
 .position(x: UIScreen.main.bounds.width / 2, y: UIScreen.main.bounds.height - 80)
 
 @State private var ballPosition: CGPoint = CGPoint(x: UIScreen.main.bounds.width / 2, y: UIScreen.main.bounds.height - 80)
 @State private var ballDirection: CGVector = CGVector(dx: 2, dy: -2)
 var gameTimer: Timer.TimerPublisher
 var gameRunLoop: AnyCancellable?

 init() {
 let timer = Timer.publish(every: 0.01, on: .main, in: .common)
 gameTimer = timer.autoconnect() as! Timer.TimerPublisher
 gameRunLoop = timer.sink { \_ in
 self.updateGame()
 }
 }
 
 private func updateGame() {
 ballPosition = CGPoint(x: ballPosition.x + ballDirection.dx, y: ballPosition.y + ballDirection.dy)
 
 // Check for wall collisions
 if ballPosition.x <= 10 || ballPosition.x >= UIScreen.main.bounds.width - 10 {
 ballDirection.dx = -ballDirection.dx
 }
 
 if ballPosition.y <= 10 {
 ballDirection.dy = -ballDirection.dy
 }
 
 // Check for paddle collision
 if ballPosition.y >= UIScreen.main.bounds.height - 70 &&
 ballPosition.x >= paddlePosition - 50 &&
 ballPosition.x <= paddlePosition + 50 {
 ballDirection.dy = -ballDirection.dy
 }
 
 Ball()
 .position(ballPosition)
 }

 }
 }
}

struct Paddle: View {
 var position: CGFloat

 var body: some View {
 RoundedRectangle(cornerRadius: 10)
 .frame(width: 100, height: 20)
 .position(x: position, y: UIScreen.main.bounds.height - 50)
 .foregroundColor(.white)
 }
}

struct Ball: View {
 var body: some View {
 Circle()
 .frame(width: 20, height: 20)
 .foregroundColor(.white)
 }
}

struct Brick: View {
 var body: some View {
 RoundedRectangle(cornerRadius: 5)
 .frame(width: 60, height: 20)
 .foregroundColor(.green)
 }
}
전문 iOS 개발자이자 교사로 활동하고 있습니다. 개발 작업을 수행하도록 요청하고 단계별로 수행하는 방법을 설명합니다. 또한 솔루션을 구현하기 위해 xcode를 올바르게 사용하는 방법과 실행하는 방법도 알려주실 것입니다. 이 분야에 대한 경험이 전혀 없다고 가정합니다.이 코드의 구문 오류를 수정합니다://// ContentView.swift// ArkanoidClone//// 작성자 제임스 피시윅 3/15/23에 작성.//import SwiftUIimport Combine구조체 ContentView: View { var body: 일부 View { StartScreen() }}구조체 ContentView\_Previews: PreviewProvider { static var previews: 일부 View { ContentView() }}구조체 StartScreen: View { @State private var showGameView = false var body: 일부 뷰 { VStack { Text("Arkanoid Clone") .font(.largeTitle) .bold() .padding() Button(action: { showGameView.toggle() }) { Text("시작") .font(.title) .padding() } .sheet(isPresented: $showGameView) { GameView() } } }}구조체 GameView: View { @GestureState private var dragOffset = CGSize.0 @State private var paddlePosition: CGFloat = UIScreen.main.bounds.width / 2 var body: 일부 뷰 { ZStack { Rectangle() .fill(Color.black) .edgesIgnoringSafeArea(.all) 패들(위치: 패들위치) .offset(x: dragOffset.width) .제스처( 드래그제스처() .updating($dragOffset) { value, state, \_ in state = value.translation 패들 위치 = 최소(최대(패들 위치 + 값.번역.너비, 50), UIScreen.main.bounds.너비 - 50) } ) ForEach(0..<6) { row in ForEach(0..<10) { col in Brick() .position( x: CGFloat(30 + (col \* 65)), y: CGFloat(60 + (행 \* 30)) ) } } Ball() .position(x: UIScreen.main.bounds.width / 2, y: UIScreen.main.bounds.height - 80)  상태 비공개 변수 ballPosition: CGPoint = CGPoint(x: UIScreen.main.bounds.width / 2, y: UIScreen.main.bounds.height - 80) 상태 비공개 var ballDirection: CGVector = CGVector(dx: 2, dy: -2) var gameTimer: Timer.TimerPublisher var gameRunLoop: AnyCancellable? init() { let timer = Timer.publish(every: 0.01, on: .main, in: .common) 게임타이머 = timer.autoconnect() as! Timer.TimerPublisher gameRunLoop = timer.sink { \_ in self.updateGame() } }  비공개 함수 updateGame() { ballPosition = CGPoint(x: ballPosition.x + ballDirection.dx, y: ballPosition.y + ballDirection.dy)  // 벽 충돌 확인 if ballPosition.x <= 10 || ballPosition.x >= UIScreen.main.bounds.width - 10 { ballDirection.dx = -ballDirection.dx }  if ballPosition.y <= 10 { ballDirection.dy = -ballDirection.dy }  // 패들 충돌 확인 if ballPosition.y >= UIScreen.main.bounds.height - 70 && ballPosition.x >= paddlePosition - 50 && ballPosition.x <= 패들 포지션 + 50 { ballDirection.dy = -ballDirection.dy }  Ball() .position(ballPosition) } } }}구조체 패들: View { var 위치: CGFloat var body: 일부 View { RoundedRectangle(cornerRadius: 10) .frame(너비: 100, 높이: 20) .position(x: 위치, y: UIScreen.main.bounds.height - 50) .foregroundColor(.white) }}구조체 Ball: View { var body: 일부 View { Circle() .frame(너비: 20, 높이: 20) .foregroundColor(.white) }}구조체 Brick: View { var body: 일부 View { RoundedRectangle(cornerRadius: 5) .frame(너비: 60, 높이: 20) .foregroundColor(.green) }}