Разработка программы 'Игра 'Змейка'
Государственное образовательное учреждение высшего профессионального
образования
«Сибирская государственная автомобильно-дорожная академия
(СибАДИ)»
Факультет Информационные системы в управлении
Направление Информационная безопасность
Кафедра Информационная безопасность
Пояснительная
записка к курсовой работе
по дисциплине
«Языки программирования»
Название
работы «Разработка программы «Игра «Змейка»
Выполнил: студент гр. БИб-13И1
Щепов Олег Максимович
Проверил преподаватель
Толкачева Е.В.
Омск 2014
Содержание
Введение
. Среда разработки приложений
Microsoft Visual C++
.1 Основы языка C++
.2 Элементы управления в Microsoft
Visual C++
. Описание программы
.1 Правила игры
.2 Блок-схема программы
.2 Демонстрация работы программы
Заключение
Приложение А Листинг программы
Введение
Целью курсовой работы является получение опыта самостоятельной разработки
в соответствии с заданием пользовательского приложения, работающего под
управлением ОС Microsoft Windows, в среде разработки приложений Microsoft Visual C++, а также получение навыка составления пояснительной
записки и оформления в соответствии с требованиями, принятыми на факультете
«Информационные системы в управлении».
Задачами курсовой работы являются: 1) разработка программы
в соответствии с заданием; 2) составление пояснительной записки
в соответствии с требованиями.
В первой главе пояснительной записки к курсовой работе приводится краткое
описание возможностей интегрированной среды разработки приложений Microsoft Visual C++, основных алгоритмических конструкций языка
программирования Visual C++ и базовых элементов управления.
Во второй главе приводится краткое описание программы, блок-схема
программы и демонстрация работы программы.
В заключении приводится перечень изученных вопросов и основных
результатов курсовой работы.
В приложение вынесен программный код с подробными комментариями.
1. Среда
разработки приложений Microsoft Visual C++
Visual C++ (MSVC) - интегрированная среда разработки приложений на языке
C++, разработанная фирмой Microsoft и поставляемая либо как часть комплекта
Microsoft Visual Studio, либо отдельно в виде бесплатного функционально
ограниченного комплекта Visual C++ Express Edition.
1.1 Основы
языка С++
C++
- компилируемый <#"784607.files/image001.gif">
Рисунок
1.1 - Главное окно Microsoft Visual Studio
Рисунок 1.2 - Окно создания проекта
Рисунок 1.3 - Окно разработки программы
2. Описание программы
Приложение представляет собой стандартное консольное приложение, которое
можно свернуть или закрыть.
В таблице 2.1 перечислены используемые в программе глобальные константы и
переменные, в таблице 2.2 - функции.
Таблица 2.1 - Глобальные константы и переменные
Имя
|
Тип
|
Назначение
|
main_color[]
|
char
|
шаблон для цвета
|
size
|
int
|
размер
змейки
|
X, Y
|
int
|
в какую
сторону движется змейка
|
coordinates_x[1000],
coordinates_y[1000]
|
int
|
массивы,
хранящие координаты частей тела змейки
|
food_x,
food_y
|
int
|
координаты
еды
|
symbol
|
char
|
хранит
ASCII код нажатой клавиши
|
А[1000][1000]
|
char
|
таблица, в
которой происходит вся игра
|
N
|
const int
|
высота таблицы
|
M
|
const int
|
ширина
таблицы
|
TIME
|
const int
|
время за
которое змейка перемещается на одну клетку
|
Таблица 2.2 - функции
Имя
|
Тип
|
Назначение
|
change_color
|
функция
изменения цвета консоли
|
change_direction
|
void
|
функция,
считывающая нажатую клавишу
|
show_table
|
void
|
функция
для вывода таблицы
|
clear_snake_on_table
|
void
|
очищаем
координаты, в которых располагалась змейка
|
show_snake_on_table
|
void
|
Обозначаем
координаты змейки
|
game_over
|
bool
|
проверяем,
съела ли змейка саму себя
|
check_coordinates
|
void
|
проверяем,
не вышла ли змейка за поле, если да то возвращаем ее обратно
|
next_step
|
void
|
функция
перемещения змейки
|
food_check
|
bool
|
функция
проверки на наличие еды на карте
|
place_food
|
void
|
функция
добавления еды на карту
|
standart_settings
|
void
|
начальные
установки
|
main
|
int
|
Осуществление всех функций
|
2.1 Правила игры
Правила игры "Змейка" :
· Змейка всё время движется, перемещаясь на одну клетку через
определённый промежуток времени.
· Управление змейкой происходит через клавиши «WASD» (язык клавиатуры должен быть
переключён на английский).
· Когда змейка достигает еды, её длина увеличивается на одну
клетку.
· Когда змейка втыкается в саму себя, вы проигрываете.
· Достигнув края поля, змейка появляется с другой стороны поля.
· Суть игры увеличить змейку на столько, на сколько это
возможно.
2.2 Блок-схема части программы
2.3
Демонстрация работы программы
Для
начала работы с программой нужно запустить файл Змейка.exe. Появится
окно программы (рисунок 2.3).
Рисунок
2.3 - окно программы «Змейка»
Во
время игры вы должны управлять змейкой через клавиши «WASD». (рисунок
2.4).
Рисунок
2.4 - Результат нажатия клавиши «S»
При
достижении головой змейки еды, её длина увеличивается. (рисунок 2.5).
Рисунок
2.5 - Съев одну единицу еды змейка увеличилась на одну клетку
Достигнув
края поля, змейка появляется с другой стороны поля.
Рисунок
2.6 - Результат достижения края поля
Когда
змейка втыкается в саму себя, вы проигрываете (рисунок 2.7).
Рисунок
2.7 -Конец игры
Заключение
В ходе выполнения курсовой работы были более подробно изучены
и изложены в пояснительной записке следующие вопросы:
- базовые элементы управления, их свойства и методы;
- управление программой с помощью клавиатуры;
Полученные знания использованы на практике. Результатом работы является приложение-игра
«Змейка».
Приложение А
Листинг программы
// Змейка.cpp.
//
# include <iostream>
# include <time.h>
# include <conio.h> // библиотека, нужна для использования функций kbhit() и
getch()namespace std;main_color[] = "color ##"; // шаблон для цвета
int size; // размер змейкиX, Y; // в какую сторону
движется змейкаcoordinates_x[1000], coordinates_y[1000]; // массивы, хранящие
координаты частей тела змейки
int food_x = -1, food_y = -1; // координаты едыsymbol;
// хранит ASCII код нажатой клавиши
char А[1000][1000]; // таблица, в которой происходит вся
играint N = 15; // высота таблицыint M = 20; // ширина таблицыint TIME = 100;
// время за которое змейка перемещается на одну клетку
change_color()
// функция изменения цвета консоли
{x = rand() % 16, y = rand() % 16;(x == y)
++y;%= 16;(x > 9)+= 'A' - 10;+= '0';(y
> 9)+= 'A' - 10;+= '0';
// выбираем рандомные цвета_color[6] = x;
main_color[7] = y;(main_color);
// меняем цвет
}change_direction()
// функция, считывающая нажатую клавишу
{= _getch();
switch (symbol)
{119: if(X != 1 || Y != 0) { X = -1; Y = 0;
} break;97 : if(X != 0 || Y != 1) { X = 0; Y = -1; } break;115 : if(X != -1 ||
Y != 0) { X = 1; Y = 0; } break;100 : if(X != 0 || Y != -1) { X = 0; Y = 1; }
break;32 : change_color(); break;: break;
}
}show_table()
// функция для вывода таблицы
{("cls");
// очистка консоли(int i = 0; i <=
N + 1; ++i)(int j = 0; j <= M + 1; ++j)<< (i == 0 || j == 0 || i == N
+ 1 || j == M + 1 ? '#' : А[i][j]) << (j <= M ? "" : "\n");
// вывод таблицы
}clear_snake_on_table()
// очищаем координаты, в которых располагалась змейка
{(int i = 1; i <= size; ++i)
А[coordinates_x[i]][coordinates_y[i]] = ' ';
}show_snake_on_table()
// обозначаем координаты змейки
{(X == 1 && Y == 0) А[coordinates_x[1]][coordinates_y[1]]
= 'v';(X == -1 && Y == 0) А[coordinates_x[1]][coordinates_y[1]]
= '^';(X == 0 && Y == 1) А[coordinates_x[1]][coordinates_y[1]]
= '>';(X == 0 && Y == -1) А[coordinates_x[1]][coordinates_y[1]]
= '<';
// изменяем тип головы
(int i = 2; i <= size; ++i)
А[coordinates_x[i]][coordinates_y[i]] = '8';
// красим змейку
}game_over()
// проверяем, съела ли змейка саму себя
{(int i = 2; i <= size;
++i)(coordinates_x[1] == coordinates_x[i] && coordinates_y[1] ==
coordinates_y[i]) return true;
// если координаты головы змейки равны координате
какой-либо части тела змейки, то змейка съела саму себя
return false;
}check_coordinates()
// проверяем, не вышла ли змейка за поле, если да то
возвращаем ее обратно
{(coordinates_x[1] > N) coordinates_x[1]
= 1;(coordinates_x[1] < 1) coordinates_x[1] = N;(coordinates_y[1] > M)
coordinates_y[1] = 1;(coordinates_y[1] < 1) coordinates_y[1] = M;
}next_step()
// функция перемещения змейки
{_snake_on_table();
// чистим таблицу от змейки
(int i = size; i >= 2; --i)
{_x[i] = coordinates_x[i - 1];_y[i] =
coordinates_y[i - 1];
}
// передвигаем тело змейки
_x[1] += X;_y[1] += Y;
// передвигаем голову змейки
_coordinates();
// проверяем в порядке ли координаты
if(coordinates_x[1] == food_x &&
coordinates_y[1] == food_y)
{++;_x = -1;_y = -1;
}
// если голова змейки там же где и еда, то увеличиваем
размер змейки
show_snake_on_table();
// рисуем змейку
(game_over() == true)
// если змея укусила себя
{<< "Vi proigrali!
\n";("pause");
exit(0);
}
}food_check()
// функция проверки на наличие еды на карте
{(food_x == -1 && food_y == -1)
return false;
// если координаты еды неопределенны то возвращаем
truetrue;
// в остальных случаях false
// функция добавления еды на карту
{(time(NULL));(int i = 1; i <= 9; ++i)
{x = rand(), y = rand();(x < 0) x *=
-1;(y < 0) y *= -1;%= (N + 1);%= (M + 1);(x == 0) ++x;(y == 0) ++y;
if(А[x][y] != '8' && А[x][y] != 'v' &&
А[x][y] != '^' && А[x][y] != '<' && А[x][y] !=
'>')
{_x = x;_y = y;
А[x][y] = '+';
return;
}
}
// ставим в рандомное место еду
}standart_settings()
// начальные установки
{= 1;_x[1] = 5;_y[1] = 5;= 0;
Y = 1;
// змейка движется вправо
}main ()
{_settings();
// задаем стандартные настройки
(1)
// бесконечный цикл
{(_kbhit() == true)
// если нажата клавиша_direction();
// обрабатываем нажатую клавишу
_step();
// двигаем змейку
(food_check() == false)
place_food();
// если нет еды, то ставим ее
show_table();
// рисуем змейку
(TIME);
// "усыпляем" программу на заданный интервал
}
}