Реферат по предмету "Информатика, программирование"


Разработка приложения, представляющего собой компьютерную игру "Змейка"

ФЕДЕРАЛЬНОЕ АГЕНСТВО ПО ОБРАЗОВАНИЮ
Государственное образовательное учреждение
Высшего профессионального образования
«Нижегородский государственный университет им. Н.И.Лобачевского»
(ННГУ)
ЭКОНОМИЧЕСКИЙ ФАКУЛЬТЕТ
Кафедра «Экономическая информатика»
КУРСОВАЯ РАБОТА
по дисциплине: ВМиП
(вычислительные методы информатики и программирования)
на тему:
Разработкаприложения, представляющего собой
компьютерную игру«Змейка»
Выполнил( ла) студент(ка) курс
  группы,очного отделения
        
    (ф.и.о.)
    подпись
Научныйруководитель:
                                                                                           
   (ф.и.о.)
Н.Новгород 2008
СОДЕРЖАНИЕ
1. Введение
2. Постановка задачи 
3.Опиание алгоритма решения впсевдокоде(команды в виде текста на русском языке
4.Исходный текст программы на С
5.Тестирование программы
6.Заключение
7.Список литературы
8.Приложения

1.Введение.
Введение вобъектно-ориентированное программирование.
Объектно-ориентированное программирование представляет собой чуть болееавтоматизированный способ программирования. Объектно-ориентированные программы– это не просто процедурные программы, переведенные на новый синтаксис. Онидолжны строится на новой философии разработки. Для них требуется новаястратегия программирования, которую часто бывает трудно освоить
Основная идея ООП:программа состоит из группы объектов, часто связанных между собой. В С++объекты описываются при помощи нового типа данных class. Класс включает в себянабор переменных (данных) и операций (методов или функций-членов), которыедействуют на эти переменные. Полученными объектами можно управлять при помощисообщений. В ООП объекты включают в себя не только данные (данные-члены), но иметоды (функции-члены) воздействия на эти данные. Эти две части в сочетанииобразуют функциональную единицу программы. Другими словами, объекты содержатданные и методы работы с этими данными. Ниже приведены три основныхпреимущества объектно-ориентированных программ по сравнению с эквивалентнымипрограммами, разработанными сверху вниз.
 Сопровождение программы.Программы проще читать и понимать, ООП позволяет управлять сложностьюпрограммы, оставляя видимыми программисту только существенные детали.
 Модификация программы(добавление или исключение возможностей). Вы можете часто делать дополнения илиисключения в программе, например при работе с базой данных, просто добавляя иисключая объекты. Новые объекты могут наследовать все свойства базовыхобъектов, необходимо только добавить или убрать отличающиеся свойства.Повторное использование. Можно сохранить грамотно разработанный объект в набореполезных программ и затем вставить его в новую программу с небольшимиизменениями или без изменений..
Основные термины иположения ООП. Инкапсуляция данных. Этот термин включает в себя логическоесвязывание данных с конкретной операцией. Она так же означает, что они являютсяне -глобальными доступными всей программе, а локальными – доступными толькомалой ее части. Инкапсуляция также автоматически подразумевает защиту данных.Именно для этого предназначена структура class в С++. В классе управлениефункциональными деталями объекта осуществляется при помощи спецификаторов private,public, protected.
Иерархия классов. В общемслучае можно представить себе иерархию классов как родословную вгенеалогическом древе, где класс С++ представляет собой шаблон для созданияклассов-потомков. Объекты, полученные из описания класса, называют экземплярамиэтого класса. Можно создать иерархию классов с классом-родителем и несколькимиклассами-потомками. Основой для этого являются производные классы.
Наследование.
Наследование в ООПпозволяет классу получать свойства другого класса объектов. Родительский классслужит шаблоном для производного класса; этот шаблон можно менять различнымиспособами. Наследование является важным положением, поскольку оно позволяетповторно использовать определение класса без значительных изменений в коде.
Полиморфизм. Строится наописанной выше концепции наследования. Программа посылает одно и тоже сообщениекак объекту родительского класса, так и всем объектам производных классов. Иродительский класс, и классы-потомки ответят на сообщение соответствующимобразом. Полиморфизм дает возможность дополнять уже существующие частипрограммы.
Виртуальные функции. Виртуальныефункции определяются в родительском классе, а в производных классах происходитдоопределение этих функций и для них создаются новые реализации. При работе свиртуальными функциями сообщения передаются как указатели, которые указывают наобъект вместо прямой передачи объекту. Виртуальные функции используют таблицудля адресной информации. Эта таблица инициализируется во время выполнения припомощи конструктора. Конструктор вызывается каждый раз, когда создается объектего класса. Задача конструктора в данном случае состоит в связывании виртуальнойфункции с таблицей адресной информации. Во время компиляции адрес виртуальнойфункции неизвестен; вместо этого ей отводится позиция в таблице адресов.

2.Постановка задачи.
ООП полностью принадлежитк миру С++, поскольку в С нет основного ядра– абстрактного типа данных class.Поэтому переписать процедурно-ориентированную программу какобъектно-ориентированную гораздо сложнее, чем просто подставить вместо одногоключевого слова другое.
ООП представляет собойтехнику программирования, которая позволяет рассматривать основные идеи какмножество объектов. Используя объекты, можно представить задачи, которыенеобходимо выполнить, их взаимодействие и любые заданные условия, которыедолжны быть соблюдены. Структура данных часто образует основы объектов; такимобразом в С или С++ тип struct может образовывать элементарный объект. Связь собъектом можно организовать при помощи сообщений. Использование сообщенийпохоже на вызов функций в процедурно-ориентированной программе. Когда объектполучает сообщение, вступают в действие методы, содержащиеся в объекте. Методы(их иногда называют функциями — членами) аналогичны функциямпроцедурно-ориентированного программирования. Тем не менее метод являетсячастью объекта, а не чем-то отдельным, как было бы в процедурном аналоге.
С++ -языкпредметно-ориентированного программирования. Язык С++ поддерживает процедурнуюи объектно-ориентированную парадигмы программирования.
Объектно-ориентированноепрограммирование – это новый способ подхода к программированию. Такое программирование,взяв лучшие черты структурного программирования, дополняет его новыми идеями,которые переводят в новое качество подход к созданию программ.
Наиболее важное понятиеязыков объектно-ориентированного программирования –это понятие объекта(object). Объект – это логическая единица, которая содержит данные и правила(методы) обработки этих данных. В языке С++ в качестве таких правил обработкивыступают функции, т. е. объект в Borland C++ объединяет в себе данные ифункции, обрабатывающие эти данные. Одним из самых главных понятий языка С++является понятие класса. В языке С++ для того, чтобы определить объект, надосначала определить его форму с помощью ключевого слова Ближайшей аналогиейкласса является структура. Память выделяется объекту только тогда, когда классиспользуется для его создания. Любой объект языка С++ имеет одинаковые атрибутыи функциональность с другими объектами того же класса. За создание своихклассов и поведение объектов этих классов полную ответственность несет сампрограммист. Работая в некоторой среде, программист получает доступ к обширнымбиблиотекам
стандартных классов.Обычно, объект находится в некотором уникальном состоянии, определяемомтекущими значениями его атрибутов. Функциональность объектного классаопределяется возможными операциями над экземпляром этого класса.
Структуры.
Структура-группа данныхразличных типов и(или) назначения, которые представляют собой единыйинформационный элемент.
struct Zmeja //структура змейка
{
     COORD*t; //точки
     intPCount; //количество яблок
};
Каждый элемент данных,называемый полем, имеет различное назначение. Одно поле содержит точки, другоеколичество яблок Однако все эти поля связаны между собой, поскольку относятся кодному и тому же объекту «змейка».
Поскольку в объектах такжеможно хранить группы разнотипных данных, то они тоже содержат структуры.Отличие структуры от класса в том, что в структуре нет закрытых и защищенныхчленов. Все члены структуры открыты.
Объявление структурыаналогично объявлению класса но вместо ключевого слова class ставится ключевое слово Struct :
struct идентификатор
{
Объявление данных илиобъектов
};
Объявлений структуры неподразумевает создание объекта или переменной. Объявление-это просто описаниебудущего объекта, в данном случае змейки. Чтобы использовать объектопределенного класса или переменную определенного типа их сначала необходимообъявить в качестве объекта этого класса или переменной этого типа.
Аналогично дляиспользования структурной переменной необходимо объявить переменную этой структуры.
Графический интерфейс.
Пользовательскийинтерфейс-это средства общения пользователя с вашей программой. которые могутвключать в себя изображения, звуки и текст. Ориентируясь на среднегопользователя интерфейс должен быть простым и удобным. Это снизит вероятностьошибок.
Постановка задачи.
Цель: Создать игру наловкость “Змейка”
Законченный вариант игрызмейка должен содержать:
1)  “Змейку”, котораяможет двигаться в ограниченной плоскости. Маневрами “Змейки” должен управлятьиграющий. “Змейка” должна увеличиваться в размерах при столкновении с “яблоком”и погибать при столкновении с “стеной”, при пересечении самой себя и при выходеза границы плоскости заданной программистом.
2)  “Яблоко” илидругой объект, при столкновении с которым “Змейка” “съедает” его(увеличиваетсяв длину в зависимости от условий заданных программистом.
3)  “стена” объектпри столкновении с которым змейка погибает.
“змейка” можетуправляться с помощью клавиш на форме, игра может иметь счетчик набранныхочков, таблицу лучших игроков, которая может сохранятся и считываться из файла,а также другие элементы которые увеличивают играбельность игры.

4.Опиание алгоритмарешения в псевдокоде (команды в виде текста на русском языке).
Алгоритм.
1) Описываются переменные и константы
2) Выбор начальных координат случайным образом
3) Прорисовка начального положения
4) Генерация на поле яблок случайным образом
5) Проверка: не появилось ли яблоко на черве.
6) Управление “Змейкой” с клавиатуры.
7) Проверка: “не укусила” ли “змейка сама себя”, если укусилавыводится информационное окно (Информационная форма), в противном случаепереходим к следующему пункту.
8) Проверка: “не съела” ли “змейка” “яблоко” если съела, тонаращиваем ей хвост и переходим к пункту 3), в противном случае см. Следующийпункт.
9) Перерисовка “Змейки”
Игра на ловкость“Змейка”
Законченный вариант игрызмейка должен содержать:
4)  “Змейку”, котораяможет двигаться в ограниченной плоскости. Маневрами “Змейки” должен управлятьиграющий. “Змейка” должна увеличиваться в размерах при столкновении с “яблоком”и погибать при столкновении с “стеной”, при пересечении самой себя и при выходеза границы плоскости заданной программистом.
5)  “Яблоко” илидругой объект, при столкновении с которым “Змейка” “съедает” его(увеличиваетсяв длину в зависимости от условий заданных программистом.
6)  “стена” объектпри столкновении с которым змейка погибает.
“змейка” можетуправляться с помощью клавиш на форме, игра может иметь счетчик набранныхочков, таблицу лучших игроков, которая может сохранятся и считываться из файла,а также другие элементы которые увеличивают играбельность игры.
 
Функции управленияэкранными объектами.
 сообщение назначение аргументы GotoXY( ) Размещение объекта Координаты х, у Level() Вы никогда не выиграете, если не будете бдительны Координаты х, у Move(Game &g) Функция которая двигает и рисует Game &g PlusJabloko(Game &g) Функция разброски яблок Game &g skorostGame(Game &g) Функция старта змейки ее координат и скорости Game &g SetColor(ConsoleColor text, ConsoleColor background) Изменение цвета ConsoleColor text, ConsoleColor background STENA_2()                    Функция рисования стены
Координаты х, у
стены ZmejaStart() Старт игры GotoXY(10,15) Main() Главная функция
Описание функций.
//Функцияразброски яблок
void PlusJabloko(Game &g){}
1.Процесс….int x,y,i;
Int n=g.gaduka.pCount;
2.Заводимцикл do while, в котором задаем координаты объекта- яблоко
x= rand() % 56+3; //
y = rand() % 19+3;//кординаты яблока
3.проверяемобъект-яблоко, попало ли оно на объект-змейку.
4.Если попало->break;
5.Есливсе нормально, запоминаем позицию объекта-яблоко
6.переносимкурсор в эту позицию
7.присваиваемцвет объкту-яблоко
8.рисуемобъект-яблоко-> символом 4(5,6)
printf("%c",6); //рисуем яблоко каким хотим символом
//Функция старта змейки ее координат и скорости
void skorostGame(Game &g){}
1.задаем точки-размеробъека-змейка
2.когда создали-запоминампозицию
3.задаем скоростьпередвижения объекта-змейки
4.рисуем объект-яблоко
//Функциякоторая двигает и рисует
int Move(Game &g){}
1.вводимкоординаты головы объекта- змейка
2.вводим координаты хвоста объекта- змейка
3.проверяемследующую точку по направлению.
4.проверяемобъект-змейка и объект- стенка, не наехал ли объект-змейка на объект-стенка
         -еслида-то выход
         -еслинет, то продолжаем
5.проверяемобъект-змейка саму на себя, не наехали на себя
         -если да – токонец
         -если нет – топродолжаем
6.при создании объекта-змейка перекомпилируем змейку путем увеличения ее длины на одну точку
7.появляется новыймассив, больший на 1-цу
8.при съеданииобъекта-яблока -закрашиваем его в цвет змейки
9.закрашиваем хвостикзмеи в зеленый цвет
10.закрашиваем курсор вбелый цвет(голова змейки)
Цвета.
Экранные объекты можнозакрашивать разными цветами.В объекте могут присутствовать два цвета-внутренний и цвет контура.
Цвета кодируются цифрами:
enumConsoleColor
{
           Pink  = 0,
                   Blue = 1,
                   Green = 2,
                   Cyan = 3,
                   Red  = 4,
                   Magenta = 5,
                   Brown = 6,
                   LightGray= 7,
                   DarkGray = 8,
                   LightBlue= 9,
                   LightGreen= 10,
                   LightCyan= 11,
                   LightRed = 12,
                   LightMagenta= 13,
                   Yellow= 14,
                   White  = 15
Если значение кода задатьбольшим 7, будет использован остаток от его деления на 7.
При создании экранныхобъектов по умолчанию происходит следующее:
-информационные рамкирасполагаются вертикально друг под другом в правой части экрана, остальныеобъекты размещаются в точке с координатами(0,0)
-все объекты создаютсябелыми с черным контуром.
Структуры:
struct Zmeja // структура змейка
{        COORD *t; //точки
         int PCount; //количество яблок
};
enum uprawlenie{LEFT,UP,RIGHT,DOWN}; //направление змейки
structGame //даные-точности: змейки, яблок, передвижение по X и Y, задержка,направление
{
         Zmejagaduka; //змейка
         COORDjabloko; //яблоко
         intdx,dy, //передвижение
                   pause;//задержка
         intnap; //направление
};
Сообщения.
 функция координаты сообщения Void Level()
GotoXY(10,10)
GotoXY(10,11)

Void ZmejaStart() GotoXY(10,15) GotoXY(20,0)
GotoXY(64,2)
GotoXY(64,3)
GotoXY(64,4)
GotoXY(64,5)
GotoXY(64,7)
GotoXY(64,8)
GotoXY(64,9)
GotoXY(64,10)
GotoXY(64,11)
GotoXY(64,13)
GotoXY(64,14)
GotoXY(64,15)
GotoXY(64,16)
GotoXY(2,2)-(2,23)
GotoXY(61,3)-(61,23)














printf("*");
                                                              
printf("*"); Void main()
GotoXY(15,1)
GotoXY(15,6)
GotoXY(15,7)
GotoXY(23,1)

printf( "\n\t\t\t" );
printf( "\n\t\t\t" );
printf(«Wu proigrali(xa-xa-xa!!!)\n\n\t\t\t»);
Входные параметры:
1.установка позициикурсора х, у;
void GotoXY(int X, int Y)
{
         COORD coord = { X, Y };
         SetConsoleCursorPosition(hStdOut, coord);
}
2.Структура объекта – змейка
 
struct Zmeja // структура змейка
{
         COORD *t; //точки
         int PCount; //количество яблок
};
3.даные-точности: змейки, яблок, передвижение по X и Y
structGame задержка, направление
{
         Zmejagaduka; //змейка
         COORDjabloko; //яблоко
         intdx,dy, //передвижение
         pause;//задержка
         intnap; //направление
};
Выходныепараметры:
1.Есливыиграл
GotoXY(15,1);cout
                                               GotoXY(15,6);printf("\n\t\t\t" );
                                               GotoXY(15,7);printf("\n\t\t\t" );
                                               getch();
                                               getch();
                                               getch();
                                               getch();
                                               getch();
                                               return;
2.Еслипроиграл
case KONEC:
GotoXY(23,1); printf(«Wu proigrali(xa-xa-xa!!!)\n\n\t\t\t»);
                                      getch();
                                      return;
                                      break;

5.Исходныйтекст программы С++
Разработка приложения,представляющего собой компьютерную игру «Змейка».
 
#include //стандартная библиотека
#include //случайные числа
#include //для printf
#include // для HANDLE, курсора, цвета
#include //для kbhit
#include
#include
#include
#include
#include
#include«stdafx.h»
#include  // Описания математических функций
#include // Описания функций malloc и free
usingnamespace std;
HANDLEhConsole;
//HANDLEhStdout, hStdin;
HANDLEhStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
voidGotoXY(int X, int Y)
{
     COORDcoord = { X, Y };
     SetConsoleCursorPosition(hStdOut,coord);
}
//Цвет
enumConsoleColor
{
      Pink = 0,
     Blue = 1,
     Green = 2,
     Cyan = 3,
     Red  = 4,
         Magenta  = 5,
         Brown  = 6,
         LightGray =7,
         DarkGray  =8,
         LightBlue =9,
         LightGreen =10,
         LightCyan =11,
         LightRed  =12,
         LightMagenta =13,
         Yellow = 14,
         White  = 15
};
voidSetColor(ConsoleColor text, ConsoleColor background)
{
 SetConsoleTextAttribute(hStdOut,(WORD)((background
}
structZmeja // структура змейка
{
COORD*t; //точки
intPCount; //количество яблок
};
enumuprawlenie{LEFT,UP,RIGHT,DOWN}; //направление змейки
struct Game//даные-точности: змейки, яблок, передвижение по X и Y, задержка, направление
{
Zmeja gaduka;//змейка
COORDjabloko; //яблоко
int dx,dy,//передвижение
pause;//задержка
int nap;//направление
};
//Функцияразброски яблок
void PlusJabloko(Game&g)
{
     int i,x,y;
     int n = g.gaduka.PCount;
     do
     {
         x = rand() %56+3; //
         y = rand() %19+3; //кординаты яблока
         for(i = 0; i
         {
              if(x == g.gaduka.t[i].X && y== g.gaduka.t[i].Y) // проверкачтоб яблоко не бросить на змею
                   break;
         }
     }
     while(i
     g.jabloko.X = x;//
     g.jabloko.Y = y; //запоминаем позицию яблока
     SetConsoleCursorPosition(hConsole,g.jabloko); //переносим курсор в эту позицию
     SetConsoleTextAttribute(hConsole,0x0c);//цвет яблока
     printf("%c", 6);//рисуем яблоко каким хотим символом
    
}
// Функцыя старта змейки еекоординат и скорости
void skorostGame(Game&g)
{
     system(«cls»);
     g.gaduka.PCount = 3; //сколько точек в змейки
     g.gaduka.t = new COORD [3];//создалиточки
     for(int i = 0; i
     {
         g.gaduka.t[i].X= 20 + i;
         g.gaduka.t[i].Y= 20;
        
     }
     g.dx = 1;
     g.dy = 0;
     g.pause = 100;//скоростьпередвижение змеи
     PlusJabloko(g);//рисуемяблока
}
void Level()
{
     GotoXY(10,10);cout
     GotoXY(10,11);cout
}
void ZmejaStart()
{
     GotoXY(10,15);cout
}
void STENA_2()
{
     SetColor(LightBlue, Pink);GotoXY(20,0);cout
     GotoXY(64,2);cout
     GotoXY(64,3);cout
     GotoXY(64,4);cout
     GotoXY(64,5);cout
     GotoXY(64,7);cout
     GotoXY(64,8);cout
     GotoXY(64,9);cout
     GotoXY(64,10);cout
     GotoXY(64,11);cout
     GotoXY(64,13);printf("%c",24);cout
     GotoXY(64,14);printf("%c",25);cout
     GotoXY(64,15);printf("%c",27);cout
     GotoXY(64,16);printf("%c",26);cout
                   {
                   SetColor(LightMagenta, Pink);
                   GotoXY(2,2);
                   intm = 0;
                   for(m= 0; m
                   {
                        printf("*");
                   }
                   }
                  
                   {
                        GotoXY(2,24);
                        intm = 0;
                        for(m= 0; m
                        {
                            printf("*");
                        }
                  }
                   {   
                        GotoXY(2,3);cout
                        GotoXY(2,4);cout
                        GotoXY(2,5);cout
                        GotoXY(2,6);cout
                        GotoXY(2,7);cout
                        GotoXY(2,8);cout
                        GotoXY(2,9);cout
                        GotoXY(2,10);cout
                        GotoXY(2,11);cout
                        GotoXY(2,12);cout
                        GotoXY(2,13);cout
                        GotoXY(2,14);cout
                        GotoXY(2,15);cout
                        GotoXY(2,16);cout
                        GotoXY(2,17);cout
                        GotoXY(2,18);cout
                        GotoXY(2,19);cout
                        GotoXY(2,20);cout
                        GotoXY(2,21);cout
                        GotoXY(2,22);cout
                        GotoXY(2,23);cout
                   }
                   {
                        GotoXY(61,3);cout
                        GotoXY(61,4);cout
                        GotoXY(61,5);cout
                        GotoXY(61,6);cout
                        GotoXY(61,7);cout
                        GotoXY(61,8);cout
                        GotoXY(61,9);cout
                        GotoXY(61,10);cout
                        GotoXY(61,11);cout
                        GotoXY(61,12);cout
                        GotoXY(61,13);cout
                        GotoXY(61,14);cout
                        GotoXY(61,15);cout
                        GotoXY(61,16);cout
                        GotoXY(61,17);cout
                        GotoXY(61,18);cout
                        GotoXY(61,19);cout
                        GotoXY(61,20);cout
                        GotoXY(61,21);cout
                        GotoXY(61,22);cout
                        GotoXY(61,23);cout
                   }
}
//Функция которая двигает ирисует
enum {KONEC, STENA, PLUS,MOVE};
int Move(Game &g)
{
     int & n =g.gaduka.PCount;
     COORD head = g.gaduka.t[n- 1]; //голова
     COORD tail =g.gaduka.t[0]; //хвост
     COORD next;
     next.X = head.X +g.dx;
     next.Y = head.Y + g.dy; //проверка следующейточки по направлению
     if(next.X 60 || next.Y > 23)//не уперлась ли в стену?
        
        
         return STENA;
     if(n > 4)
     {
         for(int i =0; i
              if(next.X== g.gaduka.t[i].X && next.Y == g.gaduka.t[i].Y) //ненаехали ли на себя?
                   returnKONEC;
     }
    
     if(next.X ==g.jabloko.X && next.Y == g.jabloko.Y)
     {
         COORD*temp =new COORD[ ++n ]; //новый масив больший на 1
         for(int i =0; i
              temp[i]= g.gaduka.t[i]; //перекопируем
         temp[n — 1] =next; //добавляем одну
         delete []g.gaduka.t;
         g.gaduka.t =temp;
        
         SetConsoleCursorPosition(hConsole,head);
         SetConsoleTextAttribute(hConsole,0x0a); //закрашываем яблоко которое сели
         printf("*");
         SetConsoleCursorPosition(hConsole,next);
         SetConsoleTextAttribute(hConsole,0x0a);
         printf("%c",1);
         PlusJabloko(g);
         return PLUS;
     }
    
     for(int i = 0; i
         g.gaduka.t[i]= g.gaduka.t[i + 1];
     g.gaduka.t[n — 1]= next;
     SetConsoleCursorPosition(hConsole,tail);//закрашиваем хвостик
     printf("");
    
     SetConsoleCursorPosition(hConsole,head);
     SetConsoleTextAttribute(hConsole,0x0a);//красим хвост змеи в зелений цвет
     printf("*");
     SetConsoleCursorPosition(hConsole,next);
     SetConsoleTextAttribute(hConsole,0x0f);//красим курсор в белый цвет (голову змеи)
     printf("%c",1);
    
     return MOVE;
}
void main()
{
     hConsole =GetStdHandle(STD_OUTPUT_HANDLE); //получаем дескриптор консоли
     int key = 0,count = 0;
     bool Pause=false;
     Game g;
     skorostGame(g);
     STENA_2();
     srand(time(0));
     bool pause =false;
     while(key != 27)
     {
         while(!kbhit())//ждет пока нажмем
         {
              if(Pause==true)
              {
                   Sleep(1);
                   continue;
              }
             
              switch(Move(g))//движение
              {
                  
              casePLUS:
                   ++count;
                   g.pause-=1;
                   GotoXY(64,2);cout
                   GotoXY(64,3);cout
                   GotoXY(64,4);cout
                   GotoXY(64,5);cout
                   GotoXY(64,7);cout
                   GotoXY(64,8);cout
                   GotoXY(64,9);cout
                   GotoXY(64,10);cout
                   GotoXY(64,11);cout
                   GotoXY(64,13);printf("%c",24);cout
                   GotoXY(64,14);printf("%c",25);cout
                   GotoXY(64,15);printf("%c",27);cout
                   GotoXY(64,16);printf("%c",26);cout
                   if(count == 75)
                   {
                        GotoXY(15,1);cout
                        GotoXY(15,6);printf("\n\t\t\t" );
                        GotoXY(15,7);printf("\n\t\t\t" );
                        getch();
                        getch();
                        getch();
                        getch();
                        getch();
                        return;
                   }
                   break;
                  
              caseSTENA:
                  
              caseKONEC:
                   GotoXY(23,1);printf(«Wu proigrali(xa-xa-xa!!!)\n\n\t\t\t»);
                   getch();
                   return;
                   break;
              }
             
              Sleep(g.pause);//Задержка
         }
         key =getch();
        
         if(key=='P'||key=='p')
              Pause=!Pause;
         elseif(key=='S'||key=='s')
              ZmejaStart();
         elseif(key=='L'||key=='l')
              Level();
         elseif(key==0||key==224)
         {
              key=getch();
             
              if(key== 72 && g.nap != DOWN)
              {
                   g.nap= UP;
                   g.dx= 0;
                   g.dy= -1;
              }
              elseif(key == 80 && g.nap != UP)
              {
                   g.nap= DOWN;
                   g.dx= 0;
                   g.dy= 1;
              }
              elseif(key == 75 && g.nap != RIGHT)
              {
                   g.nap= LEFT;
                   g.dx= -1;
                   g.dy= 0;
              }
              elseif(key == 77 && g.nap != LEFT)
              {
                   g.nap= RIGHT;
                   g.dx= 1;
                   g.dy = 0;
              }
         }
     }
}


5.Тестированиепрограммы.
 
Первоначальный видигры при запуске
/>
Змейка ударилась обобъект стенку
/>
Объект ударился обобъект
/>
 
Окончание игры змейка
/>

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

8.Список литературы.
 
1. Начальный курс С и С++.: Учебник. /Б. И. Березин. Москва:«ДИАЛОГ-МИФИ»,1999г.
2. Язык программирования С++.: Учебник. /. Страуструп.Киев:«ДиаСофт», 1993 г.
3. Введение в язык С++: Учебник. /Бьярн Страустрап.
– СПб.: 1995.
4. Структуры и алгоритмы обработкиданных: Учебник. / Матьяш В.А., Путилов В.А., Фильчаков В.В., Щёкин С.В. — Апатиты, КФ Петр ГУ, 2000
5. С++ /Дэвис Стефан Р.,4-е издание:Пер. с англ.:- М.: Издательский дом «Вильямс»,2003
6. Основы программирования: Учеб. Длясред. проф. образования /И.Г.Семакин, А.П.Шестаков. – М., 2006.
7. С++ экспресс курс: Учебник./Лаптев В.В. – СПб.: БХВ- Петербург 2004.
8. С++ учебный курс: Учебник. /ФранкаП. – СПб.: Питер 2005.
9.МОДЕЛИ И CТРУКТУРЫ ДАННЫХ:/Учебное пособие/
Д.Далека, А.С. Деревянко, О.Г.Кравец, Л.Е. Тимановская -Харьков:ХГПУ, 2000
10.Высшая математика для экономистов:учебник для студентов вузов/Н.Ш.Кремер,3-е издание.-М.: ЮНИТИ-ДАНА,2006

 
9.Приложения.
Приложение 1
Изменение объектаяблоко
/> />
/>
Изменение объекта змейка
/>
/>
Меню на русском языке
/>

Приложение 2
 
К курсовой работеприлагается диск 1.44 Мб.
/>
/>


Не сдавайте скачаную работу преподавателю!
Данный реферат Вы можете использовать для подготовки курсовых проектов.

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем реферат самостоятельно:
! Как писать рефераты
Практические рекомендации по написанию студенческих рефератов.
! План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом.
! Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач.
! Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты.
! Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ.

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.

Сейчас смотрят :

Реферат Цели и методы регулирования естественных монополий
Реферат Ать свою книгу воспоминаний или точнее сказать, изложить свою жизнь на бумаге, у меня появлялись давно, я даже не могу сейчас точно сказать в какой год или день
Реферат Функциональная характеристика городского финансового отдела Украина
Реферат 1 Банківська політика її значення у процесі стратегічного планування
Реферат Системы оповещения и управления эвакуацией людей при пожарах в зданиях и сооружениях
Реферат Cвободные экономические зоны
Реферат Боровое
Реферат Экономические основы предпринимательства
Реферат Центральночерноземный экономический район
Реферат Шпаргалки по предмету Финансовая политика предприятия (ФПО)
Реферат Экзаменационные вопросы по Экономической теории, раздел Микроэкономика на 2003-2004 учебный год
Реферат География населения
Реферат Лекции - Патофизиология (заболевания печени)
Реферат Assimilation In Schools Essay Research Paper I
Реферат Организация собственной выставки