Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Немного о списках и индексах




Двигаем трубы

Самая сложная часть позади! Теперь только осталось сделать движение труб и проверку ударилась птичка о трубы или нет.

Начнем с движения труб.

Прежде чем мы приступим к самой анимации, нужно ответить на вопрос, а сколько же труб у нас будет в игре? Правильный ответ - много! А теперь следующий вопрос - хватит ли нам только одной переменной для того, чтобы хранить ссылки на все трубы? И правильный ответ здесь - нет, не хватит. Нам потребуется много переменных, но их точное количество не известно. Что же нам делать в этом случае?
Использовать массивы или коллекции! Только что же нам подойдет в данном случае? Массив или коллекция?

Чтобы ответить на этот вопрос, нужно вспомнить, чем отличается массив от коллекции. Массив - это участок памяти со строго заданным количество ячеек. Это значит, что если мы создадим массив с 10 элементами, а нам вдруг понадобится добавить ещё один, мы не сможем сделать это просто так. Коллекция же, в отличие от массива, позволяет добавлять и удалять новые элементы прямо на ходу.

В нашем случае мы будем добавлять трубы по прошествии определенного времени и удалять их, когда они будут за пределами экрана (мы ведь хотим экономно использовать память компьютера, не так ли?). 

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


Такой командой можно создать новый пустой список, в котором мы будем хранить ссылки на наши трубы. Список в данном случае и есть наша коллекция.

Выражение в < > скобках - это тип данных элементов списка. В данном случае это означает, что наш список будет содержать в себе элементы с типом Pipes.

Теперь давай научимся добавлять в список новые элементы.

В прошлом семинаре мы написали функцию для создания труб, которую мы назвали CreatePipes. Вкратце, напомним смысл этой функции. Мы используем её для создания нового экземпляра труб, причем трубы появляются за правой границей нашей формы. И чтобы они попали в поле видимости, их, конечно же, нужно двигать.

Как ты помнишь, функция CreatePipes возвращает новый экземпляр объекта Pipes.

Вот такими простыми командами можно создать новый объект типа Pipes и добавить его в список.

Напиши эти команды в обработчике события загрузки формы.

 





Немного о списках и индексах

До того, как мы добавили объект в список, длина нашего списка была равна 0. Теперь же, после выполнения команд выше, длина списка стала равна 1. Если мы продолжим добавлять элементы в коллекцию, длина списка продолжит расти.

У тебя мог бы возникнуть вопрос, как же получить доступ к объекту, который мы только что добавили в список? Очень просто - точно так же, как мы бы делали это для массива. У массивов есть очень важный параметр - индекс ячейки.

Индексы всегда начинаются с нуля. Указывая индекс ячейки, мы можем получить доступ к содержимому этой ячейки. Так, к примеру, указав индекс 2 я получу значение 1, по индексу 6 - значение 32. А вот индекс 7 вызовет ошибку - ячейки с таким индексом не существует.

Со списком все точно так же - он тоже имеет индексы. Когда мы добавили туда первый элемент, он оказался с индексом 0. Каждый последующий будет на единицу больше.

И так же, как и с массивом, мы можем очень просто получить значение ячейки, просто указав её индекс.











Последнее изменение этой страницы: 2018-05-10; просмотров: 172.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...