Swift – кодирование Функция связывания в Tic Tac Toe

Мне 13 лет, и я стараюсь следовать инструкциям Swift от Brian Advent. Он учит меня, как сделать простую игру с tic tac toe. Я пытаюсь закодировать связь в Swift после многих часов исследований, я нашел много кода, но ничего, что мне поможет.

Это мое сообщение победителю:

if winner != "" { //if winner is something let alert = UIAlertController(title: "Tic Tac Toe", message: "The winner is \(winner)!", preferredStyle: UIAlertControllerStyle.Alert) alert.addAction(UIAlertAction(title: "Ok", style: UIAlertActionStyle.Default, handler: { (alert:UIAlertAction!) -> Void in //TODO reset the fields self.resetField() })) self.presentViewController(alert, animated: true, completion: nil) } 

И это сообщение в случае галстука:

 else if winner == "" { let alert = UIAlertController(title: "Tic Tac Toe", message: "It was a tie", preferredStyle: UIAlertControllerStyle.Alert) alert.addAction(UIAlertAction(title: "Ok", style: UIAlertActionStyle.Default, handler: { (alert:UIAlertAction!) -> Void in //TODO reset the fields self.resetField() })) self.presentViewController(alert, animated: true, completion: nil) } 

Но когда я ввожу этот код и запускаю его, он выводит предупреждение «Это галстук», потому что в начале все еще нет победителя.

Теперь мне нужен код, который говорит мне, когда заполняются пробелы, поэтому блок «Это галстук» не называется.

У меня также есть этот код, если это какая-то помощь. Он проверяет, есть ли победитель:

 func checkResults(){ var winner = "" if fields[0].player == "Steve" && fields[1].player == "Steve" && fields[2].player == "Steve"{ winner = "Steve" }else if fields[0].player == "Creeper" && fields[1].player == "Creeper" && fields[2].player == "Creeper"{ winner = "Creeper" }else if fields[3].player == "Steve" && fields[4].player == "Steve" && fields[5].player == "Steve"{ winner = "Steve" }else if fields[3].player == "Creeper" && fields[4].player == "Creeper" && fields[5].player == "Creeper"{ winner = "Creeper" }else if fields[6].player == "Steve" && fields[7].player == "Steve" && fields[8].player == "Steve"{ winner = "Steve" }else if fields[6].player == "Creeper" && fields[7].player == "Creeper" && fields[8].player == "Creeper"{ winner = "Creeper" }else if fields[0].player == "Steve" && fields[3].player == "Steve" && fields[6].player == "Steve"{ winner = "Steve" }else if fields[0].player == "Creeper" && fields[3].player == "Creeper" && fields[6].player == "Creeper"{ winner = "Creeper" }else if fields[1].player == "Steve" && fields[4].player == "Steve" && fields[7].player == "Steve"{ winner = "Steve" }else if fields[1].player == "Creeper" && fields[4].player == "Creeper" && fields[7].player == "Creeper"{ winner = "Creeper" }else if fields[2].player == "Steve" && fields[5].player == "Steve" && fields[8].player == "Steve"{ winner = "Steve" }else if fields[2].player == "Creeper" && fields[5].player == "Creeper" && fields[8].player == "Creeper"{ winner = "Creeper" }else if fields[0].player == "Steve" && fields[4].player == "Steve" && fields[8].player == "Steve"{ winner = "Steve" }else if fields[0].player == "Creeper" && fields[4].player == "Creeper" && fields[8].player == "Creeper"{ winner = "Creeper" }else if fields[2].player == "Steve" && fields[4].player == "Steve" && fields[6].player == "Steve"{ winner = "Steve" }else if fields[2].player == "Creeper" && fields[4].player == "Creeper" && fields[6].player == "Creeper"{ winner = "Creeper" } 

Отредактировано для включения функции Дэниела Т:

Окончательный рабочий allFieldsFull() :

  else if allFieldsFull() == true && winner == "" { let alert = UIAlertController(title: "Tic Tac Toe", message: "It's a tie", preferredStyle: UIAlertControllerStyle.Alert) alert.addAction(UIAlertAction(title: "Ok", style: UIAlertActionStyle.Default, handler: { (alert:UIAlertAction!) -> Void in //TODO reset the fields self.resetField() })) self.presentViewController(alert, animated: true, completion: nil) } 

Спасибо за помощь, мы очень благодарны 🙂 Если у вас есть какие-либо вопросы, пожалуйста, прокомментируйте ниже

Ваш код никогда не проверяет, закончилась ли игра. Он проверяет только, выиграл ли кто-то.

Вам нужна инструкция if, которая проверяет, заполнены ли все квадраты, если они есть, и победитель == "", тогда игра является галстуком.

-РЕДАКТИРОВАТЬ-

Вы узнали о циклах и написании своих собственных функций? Способ решить вашу новую проблему – создать функцию, которая пересекает все поля.

 func allFieldsFull() -> Bool { for i in 0 ..< 9 { if fields[i].player.isEmpty { return false } } return true } 

Я оставлю это вам, чтобы выяснить, как использовать выше. Удачи!

Я использовал это для проверки на ConnectFour. Вместо операторов if вы передаете 1, -1 в StepX и StepY и соответствующим образом настраиваете свой цикл.

  func isLinearMatch(#column: Int, row: Int, stepX: Int, stepY: Int)->Bool{ var startGamePieceType = gamePieceTypeOnBoard(column: column, row: row) for var i = 0; i < 4; ++i{ var newX = row + i * stepY var newY = column + i * stepX if(gamePieceTypeOnBoard(column: newY, row: newX) == GamePieceType.Undefined){ return false } if (startGamePieceType != gamePieceTypeOnBoard(column: newY, row: newX)){ return false } } return true } 

https://github.com/ericcgu/EGSwiftConnectFour

  • Trigger UIApplicationWillTerminateNotification для действия «stop» Xcode
  • Unrecognized Selector Swift 2 Purelayout Xcode7
  • Facebook sdk io получает фото из альбома
  • stdarg.h, new.h, float.h, отсутствующие в iOS 4.3 SDK (XCode 4)
  • Контекст сохранения CoreData, вызывающий сбои, когда приложение возвращается на передний план. стриж
  • Индикатор активности только один раз
  • Файл SQLite не найден, когда я запускаю на устройстве
  • Что делать, если отсутствует базовый SDK?
  • iOS рисунок видео захват не гладкий
  • недействительный пакет - нет двоичного файла apple watch (невозможно отладить приложение WatchOS на симуляторе или устройстве)
  • Как сделать autosize (высота) UITableViewCell?
  • Interesting Posts

    Код_39 в iOS PhoneGap

    Как мы можем автоматически поворачивать / прокручивать collectionView, когда его контроллер загружен?

    Я сделал спрайт hitbox в качестве ребенка для своего плеера, в моем классе. как я могу получить доступ к этому спрайту hitbox в методе didBegin в gamecene?

    Swift 2: кнопка отмены электронной почты останавливается после второй попытки просмотра таблицы

    Xamarin Forms Цвет текста в строке состояния iOS

    MKMapView Рисование подключенных линий между всеми точками

    Как определить и растянуть высоту строки для x количество строк в представлении таблицы UI?

    Как установить UITableView внутри UIView

    Apple несколько раз отклоняется от Apple

    Избегайте легко заменяемых файлов в моем приложении iOS

    UITextField не работает при добавлении кода

    Цель c как сохранить другие уведомления в лотке уведомлений после записи одного уведомления

    Поиск сценария сборки Xcode для копирования файлов между целями

    Авария iOS WebView WTF

    Проблема с добавлением UILabel в UITableViewCell

    Давайте будем гением компьютера.