Игра 'Ловушка'

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    43,67 Кб
  • Опубликовано:
    2012-10-01
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Игра 'Ловушка'

Содержание

Введение

.        Постановка задачи

.        Описание игры

.1.      Интерфейс

.1.1.   Меню

.1.2.   Игровой процесс

.2.      Игровой процесс

.        Программная реализация

.1.      Описание заголовочных файлов

.1.1.   Файл «menufunc.h»

.1.2.   Файл «gameclass.h»

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

Список используемой литературы

Введение

Язык программирования C++ в настоящее время считается господствующим языком, используемым для разработки коммерческих программных продуктов.

Разработчиком языка С++ является Бьерн Страуструп.

Безусловно, С++ многим обязан языку С, который сохраняется как его подмножество. Язык программирования С++ задумывался как язык, который будет лучше языка С. В отличие от языка C язык C++ поддерживает абстракцию данных и объектно-ориентированное программирование.

В данной курсовой работе представлен проект, для создания которого был использован язык программирования C++.

1. Постановка задачи

Создать игру «Ловушка».

Правила игры. С верхней части экрана падают шары. Управляя ловушкой, игрок должен собрать как можно больше шаров за одну минуту. С течением времени плотность падения шаров уменьшается, а скорость увеличивается. По истечении указанного времени (1 мин.) на экран выводится количество пойманных шаров. 10 лучших результатов хранятся в файле и выводятся на экран по запросу пользователя.

Замечание. По желанию программиста иногда может падать что-нибудь «полезное» или «вредное».

Цель игры: набрать наибольшее количество очков до того как кончится время ( 1 минута).

2. Описание игры

.1 Интерфейс

При запуске игры выводится заставка, после предлагается ввести имя игрока. Имя может содержать в себе только латинские буквы. Клавишей «Backspace» можно удалить последний символ. После ввода имени высвечивается «Главное меню».

2.1.1 Меню

Навигация по меня осуществляется клавишами «стрелка вверх» - переместить указатель на пункт меню выше, «стрелка вниз» - переместить указатель на пункт меню ниже, «Ввод» - выбор текущего пункта меню.

В качестве указателя выступает окружность красного цвета.

·        Главное меню

Главное меню содержит в себе пять или шесть пунктов (в зависимости от наличия сохраненной игры данного игрока)

Продолжить

Продолжает сохраненную игру

Новая игра

Стирает сохранение игрока (если имеется) и начинается новая игра.

Просмотр результатов

Вывод 10 лучших результатов в виде таблицы

Пункт «Очистить»

Очищает рекорды

Пункт «Печать»

Запись результатов в текстовый файл для возможности распечатки

Пункт «Выйти в главное меню»

Выход в «Главное меню»

Об игре

Выводит описание игры: управление, обозначения и правила игры. Внизу окна содержится сообщение «Нажмите Esc для выхода в главное меню»

Выход

Выводит сообщение о просьбе подтвердить выход из игры


Пункт «Нет»

Выход в «Главное меню»


Пункт «Да»

Выход из игры

 

·        Меню паузы

Во время игры с помощью клавиши «Esc» можно вызвать «Меню паузы», содержащее в себе 3 пункта:

Продолжить

Продолжает сохраненную игру

Заново

Стирает сохранение игрока (если имеется) и начинается новая игра.

Выйти в главное меню

Выход в главное меню


·        Просмотр результатов

В этом разделе меню находится таблица, заполненная десятью лучшими результатами. Есть возможность очистить таблицу рекордов или же вывести информацию в текстовый файл, например, для печати на принтере.

·        Об игре

Раздел содержит информацию по игре: описание объектов игры, управления и правил игры.

2.1.2 Игровой процесс

Окно во время игры состоит из трех зон:

«Игровая зона» включает в себя движущиеся объекты - шары и ловушку. игра файл программирование заголовочный

«Мертвая зона» служит для разделения друг от друга двух других зон, но об её главной роли будет сказано далее.

«Информационная зона» отображает всю необходимую во время игры информацию: остаток времени (Time), уровень/скорость шаров (Level), количество очков (Score), имя текущего игрока (Name).


В самом начале игры ловушка находится в центре экрана. Нажатием клавиш «стрелка влево» и «стрелка вправо» осуществляется движение ловушки.

Шары летят с верхней точки экрана, положение по оси X задается случайным образом. Как только какой-либо шар долетает до «мертвой зоны», то он заново начинает движение сверху экрана. В начале игры на экране падают один плохой и четыре хороших шара. Каждые 15 секунд количество хороших шаров уменьшается ровно на один шар, но скорость падения остальных шаров увеличивается. При соприкосновении ловушки с шарами прибавляются (отнимаются) очки.

Отчет времени ведется от 60 секунд в обратном порядке. Когда истечет время, выделенное на игру, выводится окно о завершении игры, где указано количество набранных очков. Далее, после нажатия любой клавиши, отображается окно с таблицей рекордов.

3. Программная реализация

.1 Описание заголовочных файлов

.1.1 Файл «menufunc.h»

Заголовочный файл «menufunc.h» содержит в себе базовый класс «Menu» и описание функций, объявленных в данном классе:

MenuGame(void);          Главное меню(void);     Окно подтверждения выхода из игры(int);    Функция, отвечающая за нажатие "Enter" в Главном меню(void);                    Заставка(void);            Функция ввода имени(void);                    Меню "Таблица результатов"

About(void);                            Меню "Об игре"

Game(int);                      Функция «Игры»(void);                            Меню "Паузы"(void);                            Функция записи результата в файл рекордов(void);            Функция печати рекордов в текстовый файл

Также в этом файле находятся структуры, помогающие работе программы:

struct namescore            хранения имени и очков текущего игрокаindex                  оптимизация работы с объектами

struct savegame              служащит для работы с сохранениями

3.1.2 Файл «gameclass.h»

Данный заголовочный файл отвечает за отображение движущихся объектов игры на экране.

При написании курсовой работы было использовано четыре класса, между которыми реализовано наследование при прорисовке объектов. Каждый класс отвечает за рисование и закрашивание объекта.

·        Class Base                     точка (пиксель).

·        Class NormalBall           обычный шарик

·        Class BadBall                 плохой шарик

·        Class Catch                    ловушка

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

Main.cpp

#include <iostream.h>

#include <process.h>

#include <stdlib.h>

#include <string.h>

#include <stdio.h>

#include <time.h>

#define N 4

#include "graphics.h"

#include "gameclass.h"

#include "menufunc.h"()

{m;gd = DETECT, gm;(&gd, &gm, "");.StartGame();();0;

}

MenuFunc.h

//Структура для хранения имени и очков текущего игрока

struct namescore

{ char name[16];score;

}ns;

//Структура, служащая для работы с сохранениями.

struct savegame

{ int x[N+2];y[N+2];n, time, score, step;

}sg;

//Класс меню, содержащий в себе все функции программы

class Menu

{ protected:

char savepath[23];//переменная, которая позволяет помещать файлы сохранения в папку ./save/

public:() {}

~Menu(){}MenuGame(void); //Главное меню ExitOutGame(void); //Окно подтверждения выхода из игры

void MenuEnterKey(int); //Функция, отвечающая за нажатие "Enter" в Главном меню

void StartGame(void); //Заставка

void InputName(void); //Функция ввода имени

void Score(void); //Меню "Таблица результатов"

void About(void); //Меню "Об игре" Game(int); //Самая главная функция, осуществляющая игровой процесс

void Pause(void); //Меню "Паузы" AddScore(void); //Функция записи результата в файл рекордов

void PrintScore(void); //Функция печати рекордов в текстовый файл

};Menu::StartGame(void)

{ setcolor(3);(5, HORIZ_DIR, 16);(400,450,"Елохин Алексей, группа И512");(GREEN);(DEFAULT_FONT, HORIZ_DIR, 16);(230,300,"[Нажмите любую клавишу]");(DEFAULT_FONT, HORIZ_DIR, 100);(1,0);key=0;i=180;

//Небольшая анимация появления заставки в начале игры

while (key==0&&i>80)

{ key=getch();(GREEN);(100,60,"ЛоВуШкА");(0, 80, 640,i);-;(DEFAULT_FONT, HORIZ_DIR, 100);(1,0);(50);

}(100,60,"ЛоВуШкА");(DEFAULT_FONT, HORIZ_DIR, 16);(230,300,"[Нажмите любую клавишу]");(230,300,430,320);(); //Вызов функции ввода имени игрока

}Menu::MenuGame(void)

{*fin;x0=280,y0=220,i=0, key=0,pos=1,flagexit=1,p=1;();

fin=fopen("temp.dat","rb"); //Открываем файл, содержащий информацию текущего профиля

fread(&ns,sizeof(ns),1,fin); //Получаем из него данные

fclose(fin);(3);(5, HORIZ_DIR, 16);(400,450,"Елохин Алексей, группа И512");

setcolor(GREEN);(DEFAULT_FONT, HORIZ_DIR, 100);(100,60,"ЛоВуШкА");(DEFAULT_FONT, HORIZ_DIR, 16);(8);

outtextxy(x0+120,y0+20,ns.name); //Вывод имени текущего профиля в главном меню

//Вывод пунктов меню

if(fin) //Проверка на наличие сохраненной игры

{

outtextxy(x0,y0-20,"Продолжить");

p=0;

pos=0;(fin);

}(x0,y0,"Новая игра");(x0,y0+20,"Смена игрока:");

outtextxy(x0,y0+40,"Просмотр результатов");

outtextxy(x0,y0+60,"Правила игры");

outtextxy(x0,y0+80,"Выход");(RED);(x0-10,y0+10+(p-1)*20,4); //Указатель на пункт меню

while (flagexit)

{ key=getch();(key)

{ case 38: { if (pos>p) { setcolor(BLACK); //Движение указателя вниз(x0-10,y0+10+(pos-1)*20,4);-;(RED);(x0-10,y0+10+(pos-1)*20,4);

};

}40: { if (pos<5) { setcolor(BLACK); //Движение указателя вверх(x0-10,y0+10+(pos-1)*20,4);++;(RED);(x0-10,y0+10+(pos-1)*20,4);

}

break;

}

case (27): {ExitOutGame();} //Вызов функции "Подтверждения выхода из игры", если нажали "Esc" в главном меню

case (13): {MenuEnterKey(pos);} //Вызов функции выбора пункта, если нажали "Enter"

}

}

}

void Menu::ExitOutGame(void) //Функция "Подтверждение выхода из игры

{x0=300,y0=200,i=0,flag=0;();(DEFAULT_FONT, HORIZ_DIR, 16);(YELLOW);(x0,y0,"Хотите выйти?");(GREEN);(x0,y0+20,"Нет");(x0,y0+40,"Да");key,pos=2,flagexit=1;(RED);(x0-10,y0+10+(pos-1)*20,4);(flag!=1)

{ key=getch();(key)

{ case 38: { if (pos>2) { setcolor(BLACK); //Движение указателя вниз(x0-10,y0+10+(pos-1)*20,4);-;(RED);(x0-10,y0+10+(pos-1)*20,4);

};

}40: { if (pos<3) { setcolor(BLACK); //Движение указателя вверх(x0-10,y0+10+(pos-1)*20,4);++;(RED);(x0-10,y0+10+(pos-1)*20,4);

}

break;

}

case (27): {MenuGame();} //Возврат в главное меню

case (13): {if (pos==3) //Выход, если на позиции "Да"

{ remove("temp.dat");//При выходе удаляется временный файл, содержащий информацию о текущем профиле

_exit(1);

}

else MenuGame();//Возврат в главное меню, если на позиции "Нет"

}

}

}

}

void Menu::Score(void) //Таблица результатов

{x0=400,y0=300,i=0,flag=0,j=1;* fin;number[3];();(DEFAULT_FONT, HORIZ_DIR, 16);

//Вывод пунктов меню(YELLOW);(x0,y0,"Рекорды");(GREEN);(x0,y0+20,"Очистить");

outtextxy(x0,y0+40,"Печать результатов");

outtextxy(x0,y0+60,"Выйти в главное меню");

//Построение таблицы

setcolor(WHITE);

outtextxy(x0-295,y0-225,"№");

outtextxy(x0-270,y0-225,"Имя");

outtextxy(x0-95,y0-225,"Очки");

line(x0-300,y0-230,x0-300,y0+100);(x0-275,y0-230,x0-275,y0+100);(x0-100,y0-230,x0-100,y0+100);(x0-50,y0-230,x0-50,y0+100);(x0-300,y0-230,x0-50,y0-230);(x0-300,y0+100,x0-50,y0+100);(i=y0-200;i<y0+100;i+=30,j++)

{ line(x0-300,i,x0-50,i);(number,"%d",j);(x0-295,i+5,number);

}

//Сам вывод результатов

fin=fopen("score.dat","rb");

if(fin)

{(i=y0-200;fread(&ns,sizeof(ns),1,fin);i+=30)

{ sprintf(number,"%d",ns.score);(x0-270,i+5,ns.name);(x0-95,i+5,number);

}(fin);

}

//Навигация по менюkey,pos=3,flagexit=1;(RED);(x0-10,y0+10+(pos-1)*20,4);(flag!=1)

{ key=getch();(key)

{ case 38: { if (pos>2) { setcolor(BLACK);(x0-10,y0+10+(pos-1)*20,4);-;(RED);(x0-10,y0+10+(pos-1)*20,4);

};

}40: { if (pos<4) { setcolor(BLACK);(x0-10,y0+10+(pos-1)*20,4);++;(RED);(x0-10,y0+10+(pos-1)*20,4);

};

}(27): {MenuGame();}(13): {(pos==4) {MenuGame();break;} //Выйти в главное меню(pos==3) {PrintScore();break;} //Печать результатов(pos==2) { remove("score.dat"); //Очистка результатов();;

}

}

}

}Menu::About(void) // Меню "Об игре"

{x0=300,y0=220,key=0;*d;();(DEFAULT_FONT, HORIZ_DIR, 16);(WHITE);(50,50,590,50);(50,50,50,430);(590,430,50,430);(590,430,590,50);(GREEN);(60,60,"Управление");(300,60,"Обозначения");

outtextxy(250,170,"Правила игры");

outtextxy(250,330,"Приятной игры :)");(BROWN);(60,80,"<- - Ловушка влево.");

outtextxy(60,100,"-> - Ловушка вправо.");

outtextxy(60,120,"Esc - Пауза, выход в меню.");

setcolor(3);

outtextxy(60,200,"С верхней части экрана падают шары. Управляя ловушкой, игрок");

outtextxy(60,220,"должен собрать как можно больше шаров за одну минуту. С течением ");

outtextxy(60,240,"времени, каждые 15 секунд, плотность падения шаров уменьшается,");

outtextxy(60,260,"а скорость увеличивается. Если игрок ловит 'Хороший шарик', то");

outtextxy(60,280,"прибавляется одно очко, если же 'Плохой шарик', то одно очко");

outtextxy(60,300,"вычитается.");

d = new NormalBall; d->show(550,92); outtextxy(300,80,"Хороший шарик, +1 очко");

d = new BadBall; d->show(550,112); outtextxy(300,100,"Плохой шарик, -1 очко");= new Catch; d->show(550,132); outtextxy(300,120,"Ловушка");(325,450,"Нажмите Esc для выхода в главное меню");

while (key==0)

{ key=getch();

}d;();

} Menu::AddScore(void) //Запись результатов

{ FILE* fin;nss[10];i,j=0,n=0;temp[16];=fopen("score.dat","rb"); (fread(&nss[n],sizeof(ns),1,fin)&&n<=10) //Считываем данные и считаем количество уже записанных

{n++;}

fclose(fin);

for (i=0;i<=n-1 && (ns.score<=nss[i].score);i++) j++;//Находим позицию, куда вписать наш результат

for (i=n;i>=j+1;i--)

{ nss[i].score=nss[i-1].score;(temp,"%s",nss[i-1].name);(nss[i].name,"%s",temp);

}

//Запись результата в массив

nss[j].score=ns.score;

sprintf(temp,"%s",ns.name);(nss[j].name,"%s",temp);

//Очистка файла и запись в него всех результатов

fin=fopen("score.dat","wb");(n==10) n--;(&nss,sizeof(ns),n+1,fin);();(fin);

}Menu::PrintScore(void) //Печать результатов

{ FILE* fin;nss[10];i,j=0,n=0;temp[16];=fopen("score.dat","rb");(fread(&nss[n],sizeof(ns),1,fin)&&n<=10)

{n++;}(fin);=fopen("score.txt","wt");(i=0;i<n;i++)(fin,"%s\t%d\n",nss[i].name,nss[i].score);(fin);

}Menu::Game(int g) //Функция "Игры"

{*fin, *save;();n=N, key=0,i,step=1,stt,st,sn, flag=0;//n-количество шариков

//key - "клавишная" переменная

//i - переменная для циклов

//step - скорость шаров

//stt - отчет времени (60 - если игра новая, или из сохранения)

//st - оставшееся время

//sn - количество очков

//flag - определение на "Паузу" или "Конец игры"

NormalBall *nb=new NormalBall;*bb=new BadBall; *c= new Catch;

char time[3], score[3], level[2]; //Строковые переменные, для отображения в "информационной зоне"

fin=fopen("temp.dat","rb");//Считывание данных о текущем профиле

fread(&ns,sizeof(ns),1,fin);(fin);_t t2,t1;1 = clock();//Время начала игры

if (g!=0) //проверка на "новая игра" или "продолжить"

{ save=fopen(savepath,"rb");//Продолжить, загрузка сохранения

fread(&sg,sizeof(sg),1,save);=sg.time;=sg.n;=sg.score;=sg.time;=sg.step;(save);

}

else //Новая игра, присвоение "Обычных" значений

{ for (i=0;i<=n-1;i++)

{ sg.x[i]=20+rand()%620;.y[i]=0;

}.x[5]=20+rand()%620;.y[5]=0;.x[N]=320;.y[N]=400;=60;=0;

}(1,GREEN); //Мертвая зона(0,401,640,420);

//Информационная зона(1,WHITE);(0,420,640,480);(DEFAULT_FONT, HORIZ_DIR, 16);(10,420,"Time");(10,440,"Score");(100,420,"Level");(100,440,"Name");(300,420,"<1- - Ловушка влево.");(300,440,"-> - Ловушка вправо.");

outtextxy(300,460,"Esc - Пауза, выход в меню.");

setcolor(5);

outtextxy(150,440,ns.name);

//В принципе, игра начинается с этого момента, отрисовка объектов в начальных положениях

for (i=0;i<=n-1;i++)>show(sg.x[i],sg.y[i]);>show(sg.x[5],sg.y[5]);>show(sg.x[N],sg.y[N]);(!flag)

{ for (i=0;i<=n-1;i++) //Прячем все объекты>hide(sg.x[i],sg.y[i]);>hide(sg.x[5],sg.y[5]); (st) //"временная" проверка

{

case 45: { step=2;//скорость

n=N-1; //количество шаров

break;

}30: { step=4;// --/--=N-2; // --/--;

}

case 0 : { flag=1; //Конец игры

}

}

//Запись значений в структуру для осуществления сохранений

sg.n=n;.time=st;.score=sn;.step=step;=getch();(key)

{37: { if (sg.x[N]!=20)//Ловушка влево

{ c->hide(sg.x[N],sg.y[N]);.x[N]-=20;>show(sg.x[N],sg.y[N]);

};

}39: { if (sg.x[N]!=620)//Ловушка вправо

{ c->hide(sg.x[N],sg.y[N]);.x[N]+=20;>show(sg.x[N],sg.y[N]);

};

}27: { save=fopen(savepath,"wb");//Пауза(&sg,sizeof(sg),1,save);//Запись сохранения

fclose(save);

Pause();

break;

}

}

for (i=0;i<=n-1;i++)//Провека на столкновение шаров с ловушкой

if ( (sg.y[i]>=390) && (sg.x[i]>=sg.x[4]-20) && (sg.x[i]<=sg.x[4]+20) ) sn++; //Обычный шар( sn>0 && (sg.y[5]>=390) && (sg.x[5]>=sg.x[4]-20) && (sg.x[5]<=sg.x[4]+20)) sn--; //Вредный шар

//проверка на дотяжение шаров "мертвой зоны"

for (i=0;i<=n-1;i++)

{ if (sg.y[i]<390) sg.y[i]+=(1+i)*step;{.x[i]=20+rand()%620;.y[i]=0;

}

}(sg.y[5]<390) sg.y[5]+=(1+i)*step;{.x[5]=20+rand()%620;.y[5]=0;}

//Отрисовка объектов

for (i=0;i<=n-1;i++)

{ nb->show(sg.x[i],sg.y[i]);

}>show(sg.x[5],sg.y[5]);

// время= clock();//Текущее время=stt-(t2-t1)/CLOCKS_PER_SEC; //Вычисление оставшегося времени(time,"%d",st);(score,"%d",sn);(level,"%d",N-n+1);(1,WHITE);

bar(60,424,78,436);//Закрашивание старой информации

bar(60,444,78,456);(150,424,160,436);(DEFAULT_FONT, HORIZ_DIR, 16);(5);

setfillstyle(1,BLUE); //Запись новой информации

outtextxy(60,420,time);//Информационная зона, Время

outtextxy(60,440,score);//Информационная зона, Очки

outtextxy(150,420,level);//Информационная зона, Уровень

setfillstyle(1,GREEN);

bar(0,401,640,420);

sleep(10);

}

ns.score=sn; //Запись кол-ва набранных очков

cleardevice();nb;bb; //Вредный шарc;(DEFAULT_FONT, HORIZ_DIR, 20);(YELLOW);//Вывод окна "завершения игры"

outtextxy(60,60,"Игра окончена!");

outtextxy(60,120,"Вы набрали: ");

outtextxy(300,230,"очков");

outtextxy(60,400,"Нажмите любую клавишу...");

remove(savepath);//Удаление сохранения, так как игра закончена

settextstyle(DEFAULT_FONT, HORIZ_DIR, 50);(GREEN);(230,200,score);//Вывод очков=0;(); //Запись результатов(key==0)

{ key=getch();

}(); //Вывод таблицы результатов

}Menu::Pause(void) //Функция "Паузы"

{x0=300,y0=220,i=0;();(0,0,640,480);(YELLOW);(x0,y0-20,"Пауза");(GREEN);(x0,y0,"Продолжить");(x0,y0+20,"Заново");

outtextxy(x0,y0+40,"Выйти в главное меню");

int key=1,pos=1,flagexit=1;(RED);(x0-10,y0+12+(pos-1)*20,4);(flagexit)//Навигация по меню

{ key=getch();(key)

{ case 38: { if (pos>1) { setcolor(BLACK);(x0-10,y0+12+(pos-1)*20,4);-;(RED);(x0-10,y0+12+(pos-1)*20,4);

};

}40: { if (pos<3) { setcolor(BLACK);(x0-10,y0+12+(pos-1)*20,4);++;(RED);(x0-10,y0+12+(pos-1)*20,4);

};

}(27): {ExitOutGame();}(13): {if (pos==1) {Game(1);return;}(pos==2) {remove(savepath);Game(0);return;}(pos==3) {MenuGame();return;};

}

}

}

}Menu::MenuEnterKey(int pos) //Функция "Нажатия клавиши Enter"

{ int key=0;(pos)

{ case 0: { Game(1);;

}1: { remove(savepath);(0);;

}2: { cleardevice();();;

}3: { Score();;

}4: { About();;

}

}

}Menu::InputName () //Функция "Ввода имени профиля"

{i=0,x,ii=0;key;[0]='\0';(1,1,16);(YELLOW);(240,220,"Введите имя игрока:");(key!=13)

{ key=getch();(key==-67) { ns.name[i]=45;.name[i+1]='\0';(240,260,ns.name);++;

}(key==8) { setfillstyle(1,0); //Удаление символа(240,250,400,290);(i>0) i--;.name[i]='\0';(240,260,ns.name);

}(i<15&&((key>=97&&key<=122)||(key>=65&&key<=90)||(key==32))) { ns.name[i]=key;.name[i+1]='\0';(240,260,ns.name);++;

}

}(i==0)

{ InputName();;

}*fin;.score=0;=fopen("temp.dat","wb");//temp.dat - временный файл, для хранения информации о текущем профиле(&ns,sizeof(ns),1,fin);(savepath,"./save/");(savepath,ns.name);(fin);();();

}

Gameclass.h

class Base // Основной класс

{ public:x,y;:() {}void show(int dx,int dy)

{ putpixel(dx,dy,WHITE);

}void hide(int dx,int dy)

{ putpixel(dx,dy,BLACK);

}

};NormalBall: public Base // Обычный шарик

{ public :R;:() { R=5;}show(int dx,int dy)

{(WHITE);(SOLID_FILL,WHITE);(dx,dy,R);

}hide(int dx,int dy)

{ setcolor(BLACK);(SOLID_FILL,BLACK);(dx,dy,R);

}

};BadBall: public Base // Вредный шарик

{ public :R;:()

{ R=5;

}show(int dx,int dy)

{(YELLOW);(SOLID_FILL,YELLOW);(dx,dy,R);

}hide(int dx,int dy)

{ setcolor(BLACK);(SOLID_FILL,BLACK);(dx,dy,R);

}

};Catch: public Base // Ловушка

{ public:R;:() { R=5;}show(int dx,int dy)

{(9);(8, 9);(dx-10,dy,dx+10,dy);(dx-10,dy,dx-15,dy-R);(dx+10,dy,dx+15,dy-R);(dx-15,dy-R,dx+15,dy-R);(dx,dy-4,9);

}hide(int dx,int dy)

{ setcolor(RED);(8, BLACK);(dx-10,dy,dx+10,dy);(dx-10,dy,dx-15,dy-R);(dx+10,dy,dx+15,dy-R);(dx-15,dy-R,dx+15,dy-R);(dx,dy-4,RED);(BLACK);(dx-10,dy,dx+10,dy);(dx-10,dy,dx-15,dy-R);(dx+10,dy,dx+15,dy-R);(dx-15,dy-5,dx+15,dy-R);

}

};

Список используемой литературы

1. Керниган Б., Ритчи Д.. Язык программирования Си.\ Пер. с англ., 3-е изд., испр. - СПб.: «Невский Диалект», 2001. - 352с: ил.

. Поляков К.Ю. Программирование на языке Си.\ Электронный учебник, 1995-2009.

. Библиотека MSDN : [Электронный ресурс] . -http://msdn.microsoft.com.

Похожие работы на - Игра 'Ловушка'

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!