Вы находитесь на странице: 1из 21

Размещено на http://www.allbest.

ru/
Государственное образовательное учреждение высшего
профессионального образования
«Сибирская государственная автомобильно-дорожная академия
(СибАДИ)»
Факультет Информационные системы в управлении
Направление Информационная безопасность
Кафедра Информационная безопасность

Пояснительная записка к курсовой работе


по дисциплине «Языки программирования»
Название работы «Разработка программы «Игра «Змейка»

Выполнил: студент гр. БИб-13И1


Щепов Олег Максимович
Проверил преподаватель
Толкачева Е.В.

Омск 2014
Размещено на http://www.allbest.ru/
Содержание

Введение
1. Среда разработки приложений Microsoft Visual C++
1.1 Основы языка C++
1.2 Элементы управления в Microsoft Visual C++
2. Описание программы
2.1 Правила игры
2.2 Блок-схема программы
2.2 Демонстрация работы программы
Заключение
Приложение А Листинг программы
Размещено на http://www.allbest.ru/
Введение

Целью курсовой работы является получение опыта самостоятельной


разработки в соответствии с заданием пользовательского приложения,
работающего под управлением ОС Microsoft Windows, в среде разработки
приложений Microsoft Visual C++, а также получение навыка составления
пояснительной записки и оформления в соответствии с требованиями,
принятыми на факультете «Информационные системы в управлении».
Задачами курсовой работы являются: 1) разработка программы
в соответствии с заданием; 2) составление пояснительной записки
в соответствии с требованиями.
В первой главе пояснительной записки к курсовой работе приводится
краткое описание возможностей интегрированной среды разработки
приложений Microsoft Visual C++, основных алгоритмических конструкций
языка программирования Visual C++ и базовых элементов управления.
Во второй главе приводится краткое описание программы, блок-схема
программы и демонстрация работы программы.
В заключении приводится перечень изученных вопросов и основных
результатов курсовой работы.
В приложение вынесен программный код с подробными
комментариями.
Размещено на http://www.allbest.ru/
1. Среда разработки приложений Microsoft Visual C++

Microsoft Visual C++ (MSVC) — интегрированная среда разработки


приложений на языке C++, разработанная фирмой Microsoft и поставляемая
либо как часть комплекта Microsoft Visual Studio, либо отдельно в виде
бесплатного функционально ограниченного комплекта Visual C++ Express
Edition.

1.1 Основы языка С++

C++ — компилируемый статически типизированный язык


программирования общего назначения.
Поддерживает такие парадигмы программирования как процедурное
программирование, объектно-ориентированное программирование,
обобщённое программирование, обеспечивает модульность, раздельную
компиляцию, обработку исключений, абстракцию данных, объявление типов
(классов) объектов, виртуальные функции. Стандартная библиотека включает,
в том числе, общеупотребительные контейнеры и алгоритмы. C++ сочетает
свойства как высокоуровневых, так и низкоуровневых языков. В сравнении с
его предшественником — языком C, — наибольшее внимание уделено
поддержке объектно-ориентированного и обобщённого программирования.
язык программирование клавиатура visual
Размещено на http://www.allbest.ru/
1.2 Элементы управления в Microsoft Visual C++

Рисунок 1.1 – Главное окно Microsoft Visual Studio

Рисунок 1.2 – Окно создания проекта


Размещено на http://www.allbest.ru/

Рисунок 1.3 – Окно разработки программы


Размещено на http://www.allbest.ru/
2. Описание программы

Приложение представляет собой стандартное консольное приложение,


которое можно свернуть или закрыть.
В таблице 2.1 перечислены используемые в программе глобальные
константы и переменные, в таблице 2.2 – функции.

Таблица 2.1 – Глобальные константы и переменные


Имя Тип Назначение
main_color[] char шаблон для цвета
size int размер змейки
X, Y int в какую сторону движется змейка
coordinates_x[1000], int массивы, хранящие координаты частей тела змейки
coordinates_y[1000]
food_x, food_y int координаты еды
symbol char хранит ASCII код нажатой клавиши
А[1000][1000] char таблица, в которой происходит вся игра
N const int высота таблицы
M const int ширина таблицы
TIME const int время за которое змейка перемещается на одну клетку

Таблица 2.2 – функции


Имя Тип Назначение
change_color void функция изменения цвета консоли
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 Осуществление всех функций
Размещено на http://www.allbest.ru/

2.1 Правила игры

Правила игры "Змейка" :


Змейка всё время движется, перемещаясь на одну клетку через
определённый промежуток времени.
Управление змейкой происходит через клавиши «WASD» (язык
клавиатуры должен быть переключён на английский).
Когда змейка достигает еды, её длина увеличивается на одну клетку.
Когда змейка втыкается в саму себя, вы проигрываете.
Достигнув края поля, змейка появляется с другой стороны поля.
Суть игры увеличить змейку на столько, на сколько это возможно.
Размещено на http://www.allbest.ru/
2.2 Блок-схема части программы
Размещено на http://www.allbest.ru/
2.3 Демонстрация работы программы

Для начала работы с программой нужно запустить файл Змейка.exe.


Появится окно программы (рисунок 2.3).

Рисунок 2.3 – окно программы «Змейка»

Во время игры вы должны управлять змейкой через клавиши «WASD».


(рисунок 2.4).

Рисунок 2.4 – Результат нажатия клавиши «S»


Размещено на http://www.allbest.ru/
При достижении головой змейки еды, её длина увеличивается. (рисунок
2.5).

Рисунок 2.5 – Съев одну единицу еды змейка увеличилась на одну


клетку

Достигнув края поля, змейка появляется с другой стороны поля.

Рисунок 2.6 – Результат достижения края поля


Размещено на http://www.allbest.ru/
Когда змейка втыкается в саму себя, вы проигрываете (рисунок 2.7).

Рисунок 2.7 –Конец игры


Размещено на http://www.allbest.ru/
Заключение

В ходе выполнения курсовой работы были более подробно изучены


и изложены в пояснительной записке следующие вопросы:
- базовые элементы управления, их свойства и методы;
- управление программой с помощью клавиатуры;
Полученные знания использованы на практике. Результатом работы
является приложение-игра «Змейка».
Размещено на http://www.allbest.ru/
Приложение А

Листинг программы

// Змейка.cpp.
//

# include <iostream>
# include <windows.h>
# include <time.h>
# include <conio.h> // библиотека, нужна для использования функций
kbhit() и getch()
using namespace std;
char main_color[] = "color ##"; // шаблон для цвета
int size; // размер змейки
int X, Y; // в какую сторону движется змейка
int coordinates_x[1000], coordinates_y[1000]; // массивы, хранящие
координаты частей тела змейки
int food_x = -1, food_y = -1; // координаты еды
char symbol; // хранит ASCII код нажатой клавиши
char А[1000][1000]; // таблица, в которой происходит вся игра
const int N = 15; // высота таблицы
const int M = 20; // ширина таблицы
const int TIME = 100; // время за которое змейка перемещается на одну
клетку

void change_color()
// функция изменения цвета консоли
{
char x = rand() % 16, y = rand() % 16;
Размещено на http://www.allbest.ru/
if (x == y)
++y;
y %= 16;
if (x > 9)
x += 'A' - 10;
else
x += '0';
if (y > 9)
y += 'A' - 10;
else
y += '0';
// выбираем рандомные цвета
main_color[6] = x;
main_color[7] = y;
system(main_color);
// меняем цвет
}
void change_direction()
// функция, считывающая нажатую клавишу
{
symbol = _getch();
switch (symbol)
{
case 119: if(X != 1 || Y != 0) { X = -1; Y = 0; } break;
case 97 : if(X != 0 || Y != 1) { X = 0; Y = -1; } break;
case 115 : if(X != -1 || Y != 0) { X = 1; Y = 0; } break;
case 100 : if(X != 0 || Y != -1) { X = 0; Y = 1; } break;
case 32 : change_color(); break;
default : break;
}
Размещено на http://www.allbest.ru/
}
void show_table()
// функция для вывода таблицы
{
system("cls");
// очистка консоли
for (int i = 0; i <= N + 1; ++i)
for (int j = 0; j <= M + 1; ++j)
cout << (i == 0 || j == 0 || i == N + 1 || j == M + 1 ? '#' : А[i][j]) << (j <= M ?
"" : "\n");
// вывод таблицы
}
void clear_snake_on_table()
// очищаем координаты, в которых располагалась змейка
{
for (int i = 1; i <= size; ++i)
А[coordinates_x[i]][coordinates_y[i]] = ' ';
}
void show_snake_on_table()
// обозначаем координаты змейки
{
if(X == 1 && Y == 0) А[coordinates_x[1]][coordinates_y[1]] = 'v';
if(X == -1 && Y == 0) А[coordinates_x[1]][coordinates_y[1]] = '^';
if(X == 0 && Y == 1) А[coordinates_x[1]][coordinates_y[1]] = '>';
if(X == 0 && Y == -1) А[coordinates_x[1]][coordinates_y[1]] = '<';
// изменяем тип головы

for (int i = 2; i <= size; ++i)


А[coordinates_x[i]][coordinates_y[i]] = '8';
// красим змейку
Размещено на http://www.allbest.ru/
}
bool game_over()
// проверяем, съела ли змейка саму себя
{
for (int i = 2; i <= size; ++i)
if (coordinates_x[1] == coordinates_x[i] && coordinates_y[1] ==
coordinates_y[i]) return true;
// если координаты головы змейки равны координате какой-либо части
тела змейки, то змейка съела саму себя
return false;
}
void check_coordinates()
// проверяем, не вышла ли змейка за поле, если да то возвращаем ее
обратно
{
if (coordinates_x[1] > N) coordinates_x[1] = 1;
if (coordinates_x[1] < 1) coordinates_x[1] = N;
if (coordinates_y[1] > M) coordinates_y[1] = 1;
if (coordinates_y[1] < 1) coordinates_y[1] = M;
}
void next_step()
// функция перемещения змейки
{
clear_snake_on_table();
// чистим таблицу от змейки

for (int i = size; i >= 2; --i)


{
coordinates_x[i] = coordinates_x[i - 1];
coordinates_y[i] = coordinates_y[i - 1];
Размещено на http://www.allbest.ru/
}
// передвигаем тело змейки

coordinates_x[1] += X;
coordinates_y[1] += Y;
// передвигаем голову змейки

check_coordinates();
// проверяем в порядке ли координаты

if(coordinates_x[1] == food_x && coordinates_y[1] == food_y)


{
size++;
food_x = -1;
food_y = -1;
}
// если голова змейки там же где и еда, то увеличиваем размер змейки

show_snake_on_table();
// рисуем змейку

if (game_over() == true)
// если змея укусила себя
{
cout << "Vi proigrali! \n";
system("pause");
exit(0);
}
}
bool food_check()
Размещено на http://www.allbest.ru/
// функция проверки на наличие еды на карте
{
if(food_x == -1 && food_y == -1) return false;
// если координаты еды неопределенны то возвращаем true
return true;
// в остальных случаях false
}
void place_food()
// функция добавления еды на карту
{
srand(time(NULL));
for (int i = 1; i <= 9; ++i)
{
int x = rand(), y = rand();
if(x < 0) x *= -1;
if(y < 0) y *= -1;
x %= (N + 1);
y %= (M + 1);
if(x == 0) ++x;
if(y == 0) ++y;
if(А[x][y] != '8' && А[x][y] != 'v' && А[x][y] != '^' && А[x][y] != '<' &&
А[x][y] != '>')
{
food_x = x;
food_y = y;
А[x][y] = '+';
return;
}
}
// ставим в рандомное место еду
Размещено на http://www.allbest.ru/
}
void standart_settings()
// начальные установки
{
size = 1;
coordinates_x[1] = 5;
coordinates_y[1] = 5;
X = 0;
Y = 1;
// змейка движется вправо
}
int main ()
{
standart_settings();
// задаем стандартные настройки

while (1)
// бесконечный цикл
{
if (_kbhit() == true)
// если нажата клавиша
change_direction();
// обрабатываем нажатую клавишу

next_step();
// двигаем змейку

if(food_check() == false)
place_food();
// если нет еды, то ставим ее
Размещено на http://www.allbest.ru/
show_table();
// рисуем змейку

Sleep(TIME);
// "усыпляем" программу на заданный интервал
}
}
Размещено на Allbest.ur

Вам также может понравиться