2017-10-08 22 views
0

我需要再次調用我的viewDidLoadBy()才能在我的遊戲中創建新形狀。但我無法理解如何做到這一點。在繼續之前是否需要刪除當前實例?這是我的主要TetrisViewController 中有什麼,它具有TetrisModel和TetrisView文件作爲其處置。我創建了一個實例,但現在我想創建另一個實例,任何建議或說明都會很棒。我可以打電話給主ViewController,以便我可以爲我的遊戲創建更多的對象?

這是我在我的TetrisViewControler.swift中做的事情,它在我的遊戲中創建了一個形狀。

override func viewDidLoad() { 
     super.viewDidLoad() 


     //let centerX = Int(UIScreen.main.bounds.size.width)/blockSize * blockSize/2 
     let randoNumber = randomShapeGenerator() 
      if randoNumber == 0{ 
       let grid = QTetrisGrid() 
       block = TetrisBlockView(color: UIColor.orange, grid: grid, blockSize: blockSize, 
             startY: 120.0, boardCenterX: CGFloat(135.0)) 
      } 
      if randoNumber == 1{ 
       let grid = ZTetrisGrid() 
       block = TetrisBlockView(color: UIColor.orange, grid: grid, blockSize: blockSize, 
             startY: 120.0, boardCenterX: CGFloat(135.0)) 
      } 
      if randoNumber == 3{ 
       let grid = JTetrisGrid() 
       block = TetrisBlockView(color: UIColor.orange, grid: grid, blockSize: blockSize, 
             startY: 120.0, boardCenterX: CGFloat(135.0)) 
      } 
      if randoNumber == 4{ 
       let grid = ITetrisGrid() 
       block = TetrisBlockView(color: UIColor.orange, grid: grid, blockSize: blockSize, 
             startY: 120.0, boardCenterX: CGFloat(135.0)) 
      } 
      if randoNumber == 5{ 
       let grid = STetrisGrid() 
       block = TetrisBlockView(color: UIColor.orange, grid: grid, blockSize: blockSize, 
             startY: 120.0, boardCenterX: CGFloat(135.0)) 
      } 

     tetrisBoard = TetrisBoardView(withFrame: UIScreen.main.bounds, blockSize: blockSize, circleRadius: 1) 
     view.addSubview(tetrisBoard) 
     print("Center of block before animation: \(block.center)") 

     print("Bounds of main screen is \(UIScreen.main.bounds)") 
     view.addSubview(block) 

回答

1

適合viewDidLoad的唯一代碼是用於設置視圖的初始狀態,在這種情況下是遊戲板本身。繪圖形狀應該出現在主運行循環中,這在遊戲編程中很常見。

但是,要回答您的具體問題,您需要將代碼分解爲單獨的函數。僞代碼...

func addRandomShapeToBoard() { 
    // insert the code you have above 
} 

然後你就可以從其他函數中調用它,而不僅僅是內部的viewDidLoad

相關問題