2015-08-16 4 views
0

Итак, я пытаюсь закодировать приложение, которое позволит мне и другу отслеживать игру в дарт. В игре есть несколько различных кнопок, которые позволят пользователю добавлять или вычитать один или два из числа пользователей. У меня есть кнопки и созданы выходы, но я просто столкнулся с вопросом, как я могу сказать кнопкам, которым они должны были забивать. Я прикрепил изображение основного пользовательского интерфейса и часть кода, который я использую. Любой совет будет действительно оценен по достоинству. Мне просто нужно знать, как сказать приложение, которое пользователи его используют, я думал, можно ли добавить кнопку, которая будет говорить «Следующий поворот», и вы нажимаете кнопки, чтобы отразить оценку игрока, а затем нажмите " Next Turn ", и он переключает игроков. Таким образом, счёт будет влиять на следующих игроков. Это имеет смысл для меня на бумаге, но я действительно не знаю, с чего начать работать. Не могли бы вы также взглянуть на код, который я должен сделать, чтобы ярлыки отражали изменения оценки, и посмотреть, имеет ли смысл эта логика?Быстрое программирование - Как настроить приложение для принятия поворотов

import UIKit 

class ViewController: UIViewController { 


@IBOutlet weak var user1Score: UILabel! 

@IBOutlet weak var user2Score: UILabel! 

@IBAction func hit(sender: AnyObject) { 

    user1Score.text = "+1" 

} 

@IBAction func miss(sender: AnyObject) { 
} 

@IBAction func doublePlus(sender: AnyObject) { 
} 

@IBAction func doubleMinus(sender: AnyObject) { 
} 

@IBAction func triplePlus(sender: AnyObject) { 
} 

@IBAction func tripleMinus(sender: AnyObject) { 
} 

@IBAction func penalty(sender: AnyObject) { 
} 

Вот образ mainStoryBoardUI

enter image description here

ответ

0

Используйте свойство класса для отслеживания текущего игрока. Храните оценки в массиве и используйте currentPlayer в качестве индекса, для которого значение обновляется. Вот очень простой подход:

class ViewController: UIViewController { 
    @IBOutlet weak var currentName: UILabel! 
    @IBOutlet weak var user1Score: UILabel! 
    @IBOutlet weak var user2Score: UILabel! 

    var names = ["Fred", "Joe"] 
    var currentPlayer = 0 
    var scores = [0, 0] 

    func updateUI() { 
     currentName.text = names[currentPlayer] 
     user1Score.text = "\(scores[0])" 
     user2Score.text = "\(scores[1])" 
    } 

    @IBAction func changePlayers() { 
     currentPlayer = 1 - currentPlayer 
     updateUI() 
    } 

    @IBAction func hit() { 
     scores[currentPlayer]++ 
     updateUI()  
    } 
}  
+0

Большое вам спасибо за подробный пример, я смог применить стратегию, аналогичную приведенному вами примеру, который хорошо работает. У меня есть один вопрос, если я попытаюсь создать новую кнопку игры и последнюю кнопку отмены, как бы я это сделал? – Cornwellington

+0

Новая игра, просто установите оценки до нуля, текущий игрок до нуля и вызовет updateUI. Для отмены вы можете добавить класс var для хранения копии баллов перед их заменой. На кнопке отмены отложите оценки до сохраненного значения и вызовите updateUI. – vacawama

+0

Удивительно большое вам спасибо! Одна последняя вещь. Когда вы доберетесь до 20 в этой игре, я хочу, чтобы userScore отображал «bullseye», потому что это то, что вам нужно, чтобы выиграть. Однако, пытаясь сделать это, я продолжаю получать ошибки, потому что я пытаюсь использовать строку «bullseye» для переменной int. Вот, что у меня есть, может быть, вы могли бы взглянуть. @IBAction функ NewGame (отправитель: AnyObject) { NewGame() пусть бычков: String = "\ (баллы)" если забивает [currentPlayer]> 20 { быков [currentPlayer] = "Меченый, чтобы выиграть" } еще { баллов [currentPlayer] = score [currentPlayer]} – Cornwellington

Смежные вопросы