Начало

Lines (Color Lines, в народе Шарики) — логическая компьютерная игра, изобретённая Олегом Дёминым, Геннадием Денисовым и Игорем Ивкиным и разработанная российской компанией Gamos в 1992 году.

В классической игре на экране показано квадратное поле 9×9 клеток, в случайные клетки на котором программа выставляет три шарика разных цветов. Всего 7 возможных цветов. За один ход игрок может передвинуть один шарик, выделив его и указав его новое местоположение. Для совершения хода необходимо, чтобы между начальной и конечной клетками существовал путь из свободных клеток. Цель игры состоит в удалении максимального количества шариков, которые исчезают при выстраивании шариков одного цвета по пять и более в ряд (по горизонтали, вертикали или диагонали). При исчезновении ряда шариков новые три шарика не выставляются. В остальных случая каждый ход выставляются новые три шарика. Игрок может видеть заранее три шарика, которые появятся в следующем ходу.

Проект на Github

Так могла бы выглядеть наша игра

Запускаем Xcode и создаем проект

Выбираем шаблон Single View App

Даем название проекту

окно проекта

Для начала попробуем вывести на экране «100» в левом верхнем углу и «0» в правом

Text("0")

Удерживая нажатой клавишу Command щелкаем мышкой по слову Text в появившемся меню выбираем

На экране ничего не изменилось, но у нас появилась возможность добавить еще View

HStack {
  Text("0")
}

Добавим текстовое поле «100»

HStack {
  Text("100")
  Text("0")
}

На экране 100 и 0 расположены рядом и по середине

Добавляем между ними Spacer, для того чтоб разогнать их по углам

HStack {
  Text("100")
  Spacer()
  Text("0")
}

Уже лучше, но строка все еще находится по середине экрана

Для того чтоб сдвинуть ее на верх, вставляем используем VStack и Spacer

VStack {
  HStack {
      Text("100")
      Spacer()
      Text("0")
  }
  Spacer()
}
Button(action: {}) {
  Text("Restart")
}
HStack {
  Button(action: {}) {
    Text("Settings")
  }
  Spacer()
  Button(action: {}) {
    Text("Restart")
  }
}
VStack {
  // HStack
  Spacer()
  Image("GameField")
    .resizable()
    .aspectRatio(contentMode: .fit)
  // HStack
}

Cкачать иконки AppIcons.zip

Пример заставки:

Можно будет добавить возможность выбора вместо шариков другие картинки, как пример: