Использование двумерного массива для реализации алгоритма анимации движения на экране консоли

Страницы работы

Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.

Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.

Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.

Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.

Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.

Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.

Содержание работы

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

Федеральное агентство по образованию 

НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ

 ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

Учебный Центр Информационных Технологий «Информатика»

Контрольная работа

по дисциплине «Информатика и программирование ч.1»

Направление подготовки: 230105 - «Программное обеспечение вычислительной техники и автоматизированных систем»

Выполнил слушатель:

Вариант: 6

Дата сдачи: __/__/____

Преподаватель:

Новосибирск, 2016


1.  Цель

Использовать функции getch для ввода без "эха", gotoxy для позиционирования курсора, sleep - для задержки, kbhit - для проверки наличия нажатой клавиши на клавиатуре.

2.  Вариант задания №6.

"Червяк". По экрану движется червяк, направление движения головы которого можно менять (стрелками). Червяк ест призы и растет. Задача - при движении головы не наткнуться на хвост и границы экрана.

3.  Теория.

Работа программы осуществляется в текстовом режиме. Анимация движения червя реализуется методом вывода его нового положения и затирания символом пробела старого.При этом не нужно затирать всё тело червя – достаточно затереть только хвостовой элемент.

4.  Анализ задачи и алгоритм

1)  Анализ задачи

Входные данные: целочисленный двумерный массив, содержащий координаты элементов червя.

Результат: движение червя.

Метод решения: сдвиг элементов массива, проверка на совпадение координат головы червя с координатами приза, тела червя или на выход за пределы игрового поля.

2)  Алгоритм решения задачи

·  создаём массив для тела червя;

·  задаём стартовую длину червя;

·  создаем структуру со случайными координатами приза;

·  организуем циклическую проверку нажатия клавиш;

·  изменяем переменные сдвига по осям в соответствии с нажатыми клавишами;

·  при отсутствии нажатия выводим элементы червя с учётом текущего сдвига;

·  проверяем координаты головы червя на совпадение с координатами приза, на выход за пределы игрового поля и на совпадение с одним из элементов хвоста;

·  при выполнении одного из условий вызываем соответствующие функции и операции.

5.  Описание программной реализации

1) Используемые переменные

enumColor– перечисляемый тип, удобное представление значений цвета;

structprizeструктура пользовательского типа PRIZE, полям которой присваиваются значения свойств очередного приза: координаты x и y, faceсимвол которым обозначен на поле приз, colorцвет приза, wormColorцвет червя;

intquiteCode –  переменная-признак, которой присваивается значение кода выхода функцией crawling();

intlenght – размер тела червя;

intwormArray [][] – массив, содержащий координаты элементов тела червя;

dX, dY – сдвиги по осям Х и Y;

2) Используемые функции

—  voidnewGame() – функция запуска новой игры.

Принцип работы:         с помощью функции gotoXY(0,0,White) устанавливается белый цвет фона, а system(“cls”)  очищает окно консоли. Определяется стартовая длина червя lenght и двумерный массив wormArray. Происходит вызов функции crawling(), в которой находится основной рабочий цикл, содержащий функции формирования массива с координатами элементов червя wormBuilt() и вывода этих элементов в окно консоли worm(). Здесь же находится библиотечная функция Sleep(), приостанавливающая выполнение  программы на указанное время.

—  voidnewPrize() – функция генерирует случайные координаты очередного приза и код его символа, а также выводит его в консоль.

Принцип работы:         функция rand() генерирует случайные значения, которые присваиваются переменным координат и цвета приза, а затем и полям структуры prize.

—  intcrawling() – функция предназначена для осуществления проверки нажатых клавиш, а также в ней находится основной рабочий цикл движения червя.

Принцип работы:         в процессе работы основного цикла функция kbhit() следит за нажатиями клавиш. Она прерывает цикл и код нажатой клавиши обрабатывается конструкцией switch/case. Функция Sleep() позволяет регулировать скорость движения.

–  intwormBuilt() – функция, изменяющая координаты тела червя, его длину, и производящая сдвиг элементов, необходимого для анимации движения.

Принцип работы:         вычисленные с учётом переданного в функцию сдвига  dX и dY координаты головного элемента червя присваиваются временным переменным tmpX и tmpY и проверяются на совпадение с координатами приза, других элементов тела червя, а также на пересечение границ игрового пространства. При совпадении координат происходят соответствующие изменения длины тела червя (увеличение или уменьшение), а также вывод червя с изменёнными координатами, создаётся новый приз (вызовом функции newPrize()), либо происходит перезапуск игры.

Похожие материалы

Информация о работе

Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.

Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.

Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.

Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.

Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.

Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.