Similar presentations:
Игра «Змейка»
1.
2.
1.2.
3.
4.
5.
6.
Правила игры «Змейка»;
Алгоритм работы
программы;
Математическая модель;
Возникшие в ходе работы
затруднения;
Самые удачные, на взгляд
автора, моменты
реализации кода
программы;
Цели, достигнутые в ходе
выполнения курсовой работы
3.
1.Змейка двигается по полю
под управлением игрока.
2.
Основная цель – съесть
яблоко.
3.
По мере поедания яблок
размер змейки
увеличивается, скорость
передвижения возрастает.
4.
Игра считается
проигранной, если
змейка «заползает» за
пределы игрового поля.
4.
1.2.
3.
4.
5.
6.
Создание игрового поля,
состоящего из
проиндексированных ячеек;
Создание и вывод на экран
змейки;
Создание и вывод на экран
яблока;
Управление змейкой –
условие перемещения
внутри игрового поля;
Управление змейкой –
условие съедания яблока;
Увеличение размера
змейки;
5.
1.2.
3.
4.
5.
6.
В основе программы лежит модель игрового поля, поделенного на элементы квадраты, образующие сетку.
Структура квадрата – привязанные к осям координат границы его сторон.
Основная идея реализации движения змейки – заполнение цветом элементов поля
в направлении ее движения. Для чего все элементы поля были проиндексированы
путем составления вектора векторов со вложенной структурой элемента.
Создание яблок производится аналогичным способом путоем случайного выбора
индексов поля.
При совпадении индексов яблока и головы змейки размер вектора змейки
увеличивается на единицу, производится смена индексов и рисование нового
яблока, уменьшается время замедления работы графической библиотеки .
При превышении индексов головы змейки граничных индексов поля производится
завершение игрового процесса.
6.
1.2.
3.
Реализация модели змейки:
Задание движения для
последующих за первым
элементов «тела» змейки.
Замедленный отклик клавиш
управления.
Реализация модели игрового
поля: взаимодействие
структуры элементов поля с
функциями создания поля и
рисования змейки.
7.
Реализация функциисоздания игрового поля
через вектор векторов со
сложенной структурой
элемента поля.
std::vector<std::vector<field_element>> create_field() {
std::vector<std::vector<field_element>> v(53,
std::vector<field_element>(53));
int y = 50;
for (int i = 1; i < 51; ++i) {
int x = 50;
for (int j = 1; j < 51; ++j) {
field_element curr;
curr.left = x;
curr.top = y;
curr.right = x + 16;
curr.bottom = y + 16;
v[i][j] = curr;
x += 16;
}
y += 16;
}
return v;
}
8.
Реализация функциисоздания змейки через
вектор пар
Реализация функции
«отрисовки» змейки
через вектор векторов со
вложенной структурой
элементов поля
std::vector <std::pair <int, int>> create_snake(int b, int a, int m) {
std::vector <std::pair <int, int>> v(m);
v[0] = { b, a };
return v;
}
void draw_snake(std::vector<std::vector<field_element>>& v,
int b, int a) {
setfillstyle(SOLID_FILL, YELLOW);
bar(v[b][a].left, v[b][a].top, v[b][a].right,
v[b][a].bottom);
9.
В ходе работы были изученыдополнительные возможности и
особенности работы с графической
библиотекой
Улучшено понимание работы
векторной модели данных
Отработано взаимодействие
структур данных в составе векторов
Было улучшено понимание работы
программы, состоящей из
нескольких файлов
Были изучены дополнительные
возможности использования
функций
Улучшено понимание особенностей
работы со ссылками и указателями