Задание 2 Stanford CS 193P Fall 2017. Игра Set. Решение обязательных пунктов.

Содержание

Цель задания состоит в том, чтобы дать вам возможность создать свое первое приложение полностью с “нуля” и самостоятельно. Оно достаточно похоже на Задание 1, которое помогло обрести вам уверенность, но достаточно отличающееся, чтобы дать вам полную свободу для накопления опыта!

Текст Домашнего задания на английском языке доступен на  iTunes в пункте “Programming: Project 2: Set″. На русском языке вы можете прочитать текст Задания 2 здесь:, а скачать здесь:

Задание 2 Игра Set iOS 11.pdf

Начинаем выполнять Задание 2 c NewProject в Xcode.

Правила игры Set:

SET INSTRUCTIONS - RUSSIAN.pdf

Для решения Задания 2 необходимо ознакомиться с Лекциями 1 — 6.

Решение данного Задания 2 находится на Github для iOS 11 и на Github для iOS 12.

ОБСУЖДЕНИЕ МАТЕРИАЛОВ курса «Разработка iOS приложений с Swift» проводится на private форуме на Piazza. Делиться своими решениями и задавать вопросы можно там.
Для регистрации вам необходимо пройти по ссылке:
http://piazza.com/moscow_physical_engineering_institute_bestkora.com/spring2017/mf141
и набрать private  код mf141.

Пункты 1 и 2 обязательные

1. Реализуйте игру Set в версии соло (для одного игрока).

2. Разместите на экране по крайней мере 24 карты игры Set. В Set все карты всегда лежат “лицом” вверх.

 

Читать далее

Лекция 5 CS193P Fall 2017 — Рисование в iOS.

В начале Лекции 5 рассматриваются небольшие темы :

  • Обработка ошибок в Swift
  • Использование Any  в Swift
  • «Кастинг типа» с помощью оператора as?
  • Другие интересные классы: NSObject, NSNumber, Date, Data

Но основная тема Лекции 5 — это views. Профессор сразу вводит уточнения в терминологию.  Он использует слово «view«в двух контекстах. Один из них — это >MVC. Буква V предназначена для View. В этом контексте View означает множество обобщенных (generic) миньонов вашего Controller. Этот View с заглавной буквойV в слове “View”, содержит множество views. Это именно те views, которым посвящена большая часть Лекции 5 и которые являются subclasses класса UIView в iOS.

views — это прямоугольные области на экране, в которых мы рисуем и получаем от пользователя так называемые “жесты прикосновения” (touch gestures), как одинарные, так и множественные. Но на Лекции 4 ведется разговор только о рисовании, управление жестами перенесено в Лекцию 6. Никогда раньше в своих курсах Пол Хэгарти не уделял столько внимания рисованию Views. Возможно, это связано с тем, что компактность кода и богатство синтаксических конструкций Swift позволяют представить рисование как увлекательный и очень интеллектуальный процесс.

Читать далее

Лекция 4 CS193P Fall 2017 — Еще больше Swift.

Лекция 4 в основном теоретическая с небольшими демонстрационными примерами, рассеянными по всей Лекции и показывающими те или иные возможности Swift в действии. Это заключительная (дальше будет изучение iOS) и наиболее трудная Лекция, посвященная Swift. Но где еще вы можете увидеть такое концентрированное, логичное и понятное объяснение таких продвинутых возможностей Swift, как «множественное наследование» функциональности через протоколы protocols?

Читать далее

Задание 1 Stanford CS 193P Fall 2017. Игра Концентрация. Решение.

Содержание

Цель задания состоит в воспроизведении демонстрационного примера, представленного на Лекции, и в небольшом его усовершенствовании. Очень важно, чтобы вы понимали, что вы делаете на каждом шаге воспроизведения демонстрационного примера, тем самым подготовив себя к расширению возможностей игры Концентрация.

Текст Домашнего задания на английском языке доступен на  iTunes в пункте “Programming: Project 1: Concentration″. На русском языке вы можете прочитать текст Задания 1 здесь:, а скачать здесь:

Задание 1 Игра Концентрация iOS 11.pdf

Начинаем выполнять Задание 1 с кода, полученного в конце Лекции 2. Профессор настоятельно рекомендует не копировать код первых 2-х Лекций, а непосредственно печатать его в Xcode, так как это даст хороший опыт освоения среды разработки Xcode 9.

Читать далее

Лекция 3 CS193P Fall 2017 — Swift.

В Лекции 3 подробно рассказывается о возможностях Swift и не только.

Вот повестка дня Лекции 3 :

  • Autolayout тизер
  • Краткий обзор того, что мы изучили в Concentration
  • CountableRange чисел с плавающей точкой
  • Кортежи Tuples
  • Вычисляемые свойства (Computed Properties)
  • Управление доступом (access control)
  • assertions ( утверждения)
  • extensions ( расширения)
  • enum (перечисление)
  • Optionals— это enums
  • Обзор структур данных (включая управление памятью)

Читать далее

Лекция 2 CS193P Fall 2017 — MVC.

В Лекции 2 профессор подробно с картинками объясняет использование паттерна MVC для разработки iOS приложений.

Затем следует продолжение разработки демонстрационной игры Концентрация, начатой на прошлой лекции. Происходит разделение кода Модели и кода, обслуживающего View Controller. Появляется новый класс class Concentration и новая структура struct Card, которые представляют лагерь Модели. Возможно, вы привыкли использовать структуры struct в других языках и думаете о них, как о маленькой коллекции других переменных. В Swift структура struct — это “гражданин” первого класса, очень похожий на класс class. У класса class и структуры  struct много отличий, но самых главных два:

  1. Классы class имеют наследование (inheritance), а структуры struct — нет.
  2. Классы class ”живут” в “куче”, и у вас есть на них указатели.  Классы class используют стиль передачи по ссылке reference types. Структуры struct НЕ ”живут” в “куче” и передаются повсюду путем их копирования (точнее с использованием механизма copy-on-write). Мы называем этот стиль передачи value types.

Профессор рассказывает, как проектировать Модель, отталкиваясь от ее public API.   На очень коротких фрагментах кода показано, как исходя из семантического содержания Optional, можно легко и просто построить всю логику игры Концентрация, как использовать преимущества механизма copy-on-write (COW), действующего в структурах struct.
Как синхронизировать Модель и View Controller.

Читать далее

Лекция 1 CS193P Fall 2017 — Введение в iOS 11, Xcode 9 и Swift 4. Часть 2.

На сайте представлен полный неавторизованный хронометрированный конспект Лекции 1 на русском языке курса  Разработка iOS 11 приложений с помощью Swift 4.

Первая часть — 0 — 50 минута находится здесь,
Вторая часть — 50 — 82 минута — находится  в этом посте.

Код демонстрационного примера для Лекции 1 находится на Github  для iOS 11  и на Github для iOS 12 в папке Concentration L1.

———   ПРОДОЛЖЕНИЕ КОНСПЕКТА  ——————-
——- 50 -ая минута лекции ———
Но метод touchCard вызывается ОБЕИМИ картами:

И в этом проблема.
Почему так произошло? Это произошло из-за того, что я копировал (⌘C Copy) и вставлял (⌘V Paste) карту с “привидением” ? для создания второй карты.  При проведении операции копирования и вставки происходит копирование всех методов. Это очень распространенная ошибка, которую очень легко сделать.
Конечно, я намеренно создал новую карту копированием, чтобы показать вам, как избавиться от вышеупомянутой  ошибки.
Для этого вам нужно кликнуть правой клавишей “мышки” (или CTRL -кликнуть) на элементе UI, и он вам покажет все свои связи (connections).
Давайте CTRL -кликнем на карте с “тыквой” ?:
Читать далее

Лекция 1 CS193P Fall 2017 — Введение в iOS 11, Xcode 9 и Swift 4. Часть 1.

На сайте представлен полный неавторизованный хронометрированный конспект Лекции 1 на русском языке курса  Разработка iOS 11 приложений с помощью Swift 4.

Первая часть — 0 — 50 минута находится в этом посте,
Вторая часть — 50 — 82 минута — находится  здесь.

Код демонстрационного примера для Лекции 1 находится на Github для iOS 11  и на Github для iOS 12 в папке Concentration L1

На Лекции 1 профессор Пол Хэгерти представляет этот курс, предварительные требования для его успешного прохождения и дает беглый обзор iOS 11. Затем полностью погружается в очень большой и продолжительный демонстрационный пример.

Темы демонстрационного примера:

  • Создание проекта Project в Xcode 9
  • Построение пользовательского интерфейса (UI)
  • iOS симуляторы
  • print (вывод на консоль, используя \( ) нотацию)
  • Определение класса в Swift, включая определение переменных экземпляра класса и методов
  • Связывание свойств (переменных экземпляра класса) в Swift коде с элементами пользовательского интерфейса UI (Outlets)
  • Привязка элементов UI к методам в коде Swift (Actions)
  • Доступ к iOS документации из кода
  • Автоматическое выполнение кода при каждом изменении значения свойства
  • Optionals (?, неявное развертывание путем декларирования со знаком !, явное развертывание с помощью ! и if let)
  • Array

За этими сухими пунктами скрывается блестящее изложение основных синтаксических конструкций Swift, начиная от самых элементарных и заканчивая такими сложными и непривычными как Optional и неявно развернутое Optional (implicitly unwrapped  Optional). Очень небольшое количество языков программирования имеет концепцию Optional. Это действительно крутая концепция, которую обязательно нужно понять, ибо в Swift она встречается повсюду, ей пронизаны всех iOS APIs. Но требуется некоторое время, чтобы к ней привыкнуть и эффективно ее использовать.

Попутно профессор подробно рассказывает про среду разработки Xcode 9, симуляторы, и показывает их новые возможности, а также предостерегает от распространенных ошибок, связанных с «подводными камнями» Xcode 9.
Поэтому для начинающих изучать Swift (а не программирование как таковое) Лекции 1 и 2 являются must have. Но даже если вы опытный разработчик iOS, вы все равно обнаружите в Лекции 1 что-то новое для себя.
В Лекции 2 продолжится демонстрационный пример, начатый на этой Лекции.

Читать далее

Появился новый стэнфордский курс  «Developing  iOS 11 Apps with Swift» для Swift 4

Стэнфордский курс  «Developing  iOS 11 Apps with Swift» теперь доступен на iTunes. Это обновление предыдущего курса по  «Developing iOS 10 Apps with Swift». Пока выложены 6 лекций, 2 домашних Задания на программирование и 2 Задания на чтение.

 

Мы будем предоставлять на этом сайте все необходимые материалы для стэнфордского курса «Developing  iOS 11 Apps with Swift»:

Видео можно смотреть в Youtube.

Демонстрационные примеры находятся на Github.

Тексты заданий, а также слайды для Лекций выкладываются на

iOS 11 Задания

Если вас интересуют русскоязычные не авторизованные переводы Лекций и Заданий, а также коды демонстрационных примеров и Заданий, то следите за страницей iOS 11 + Swift 4.

Обновление демонстрационных примеров и решений Заданий курса CS193P Winter 2017 до Swift 4 и iOS 11

Вышли официальные версий Swift 4iOS 11 и Xcode 9.  Поэтому я решила на своем сайте обновить демонстрационные примеры, сопровождающие замечательный стэнфордский курс  CS193P Spring 2017  «Developing  iOS 10 Apps with Swift»,  для  Swift 4.0 и iOS 11.

Демонстрационные примеры для Swift 4, iOS 11 и Xcode 9 находятся на Github.

Решения Заданий  для курса CS193P Spring 2017  «Developing  iOS 10 Apps with Swift» для Swift 4, iOS 11 и Xcode 9 находятся на Github.

Надо сказать, что большинство демонстрационных примеров не претерпели никаких изменений в коде для Swift 4, за исключением добавления атрибута @objc для методов, сопровождающих жесты.

Однако очень значительные изменения пришлось внести для iOS 11 в демонстрационные примеры Smashtag L9 и Smashtag L11, так как в iOS 11 больше не поддерживаются accounts для социальных сетей Twitter, Facebook, Flickr, Vimeo. Более того, iOS 11 больше не поддерживает использование Twitter с помощью встроенного фреймворка Social. Вместо этого  вы можете использовать Twitter Kit 3 и Twitter API. Поэтому в наборе демонстрационных примеров для Swift 4 для Лекций 9 и 11 присутствуют две папки:  iOS10 и iOS11. В папке iOS10 находится привычная нам версия, которую демонстрировал профессор на лекциях с использование фреймворка Twitter, созданном на основе  Social. А в папке iOS11 находится версия с использованием Twitter Kit 3 и Twitter API ( о ней подробнее в самом конце этого поста).

Читать далее