49886

Игра Кубики-перевертыши

Курсовая

Информатика, кибернетика и программирование

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

Русский

2014-01-16

132.5 KB

1 чел.

Содержание:

1.Цель курсовой работы (Формулировка задачи) …………………………………3

2.Системный анализ…………………………………………………………………………………………………………3

3.Проектирование………………………………………………………………………………………………………………5

 3.1.Идентификация классов и объектов……………………………………………………5

 3.2.Идентификация содержания классов……………………………………………………5

 3.3.Идентификация связей между классами и объектами……………6

 3.4.Реализация классов и объектов……………………………………………………………6

4.Программирование…………………………………………………………………………………………………………6

5.Тестирование……………………………………………………………………………………………………………………6

6.Приложение 1

    1)Диаграмма классов на стадии анализа…………………………………………9

    2)Диаграмма классов на стадии проектирования………………………9

    3)Диаграмма управления для тестирования…………………………………10

    4)Диаграмма модулей учебного процесса ……………………………………10  

7.Приложение 2

    1)Текст программы……………………………………………………………………………………………11

    2)Программа – драйвер тестирования………………………………………………18

    3) Результаты тестирования……………………………………………………………………19  

Список использованной литературы…………………………………………………………………21

  1.  Цель курсовой работы.

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

 

2.Формулировка задачи

Игра Кубики-перевертыши“.

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

2.Системный анализ

2.1.Составление словаря системной области.

   

   2.1.1.Перечислим факты, которые характеризуют предметную область:

1.Одинаковые кубики лежат в прямоугольной коробке.

2.Каждый кубик окрашен в шесть цветов, по числу граней.

3.Дно коробки разделено на квадраты.

4.В каждом квадрате, кроме одного, лежит по кубику.

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

6.В исходном состоянии цветные грани кубиков располагаются одинаково.

7.Вынимать и переворачивать кубики нельзя.

8.Пользователю предоставляется возможность изменить цвет верхних граней на любой другой цвет, указывая курсором на перекатываемый кубик, возвращать ходы на любую глубину, восстанавливать начальное состояние игры.

9.Возникновение целевой ситуации сопровождается соответствующим сообщением.

 

    2.1.2.  Перечислим все объекты (существительные) с указанием фактов, в которых они упоминаются.   

1.Коробка(1,3).

2.Кубик(1,2,4,5,6,7,8).

3.Квадрат(3,4,5,).

4.Грань(2,6,8).

5.Цвет(2,8).

6.Сообщение(9).

7.Курсор(8).

8.Дно коробки(3).

9.Начальное состояние(6,8).

   2.1.3. Разделим факты, относящиеся к каждому объекту, на три группы: “атрибуты”, ”поведение” и ”сообщения другим объектам”. В результате получим словарь системной области.

  •  Коробка(TBox)

 Атрибуты:

  •  Дно
  •  Квадраты
  •  Кубики (Cubics)

Действия:

Начать игру(Start)

Выполнить начальную расстановку(Initiate)

  •  Кубик(TCub)

Атрибуты:

  - Грани

  - Цвета граней куба

  •  Курсор(TCursor)

  Атрибуты:

  - Цвет курсора

  Действия:

   Рисование курсора.

    

  •  Сообщение(TMessage)

Атрибуты:

Цвет сообщения.

Звуковой сигнал.

  •  Игра (TGame)

Действия:

Выполнить моделирование.

Оределение действия

Реакция на действия.

Проверить на победу.

2.2. Техническое задание на проектирование

   2.2.1. Функции системы.

   2.2.2. Эксплуатационные требования.

  •  Технические средства – ПЭВМ IBM PC;
  •  Операционная система – MS DOS;
  •  Процесс моделирования управляется одним оператором.

   2.2.3. Ограничения на процесс разработки.

  •  Срок выполнения проекта – 24 мая 1999 года.

   2.2.4. Диаграммы классов и объектов на стадии анализа приведены в    Приложении 1.

3. ПРОЕКТИРОВАНИЕ

3.1. Идентификация классов и объектов

По отношению к программной системе должны возникать внешние события: звуковое сообщение и сигнал об окончании работы программной системы. Поэтому синтезируем класс «событие» (TEvent), в классе «Игра» (TGame) предусматриваем определение действия, реакцию на действие и проверку победы, в классе TMessage – звуковое сообщение.

Проектируемая система должна обеспечивать отображение моделируемых объектов в виде графических фигур на экране дисплея. Для этого предусмотрены классы прорисовки кубиков (TCub), коробки (TBox) и курсора (TCursor).  

3.2. Идентификация содержания классов

На этом шаге последовательно рассмотрим все классы, полученные в процессе выполнения анализа и синтеза.

Класс TCub. Этот класс предусматривает прорисовку кубиков и установку цвета граней. Поэтому у класса предусмотрены правила Show – прорисовка, InitSides – начальная установка цветов граней, Rotate – поворот кубиков, Hide – спрятать кубик  и SetPosition – установка позиции кубиков.

Класс TCursor. Класс отвечает за атрибуты курсора на экране, поэтому у него определены SetPosition – установка позиции курсора и Show – прорисовка.

Класс TBox. Этот класс отвечает за атрибуты коробки с кубиками. Этот класс отвечает за возврат хода MoveBack, удаление ходов DeleteMoves, начальную установку кубиков SetCubics, прорисовку коробки Show, выбор кубика Select_Cubic и проверку всех граней на заданный цвет CheckTopColor.

Класс TMessage. Содержит параметры звуковой мелодии Beep, Show – прорисовку и Hide – спрятать.

Класс TGame. В этом классе заданы условия, при которых присваивается победа, установки игры: определение действия – GetAction, реакция на действие – ActOnAction, проверка победы – CheckVictory, сама игра – PlayGame.

3.3. Идентификация связей между классами и объектами

 

Класс TBox. В процессе моделирования всех отображаемых объектов  небходимо знать координаты кубиков для выполнения перемещения, возврата хода и перемещения курсора. Поэтому определяем операцию GetDistance получения расстояния от произвольной точки экрана до центра фигуры, SetPosition – установка позиции курсора и кубика.

 Класс TGame. Этот класс отвечает за игру, поэтому для него должны быть определены положение кубиков SetCubics, положение текста SetMessage и установки цвета GetCubicsTopColor. 

3.4. Реализация классов и объектов

Все разработанные классы и выявленные объекты должны быть включены в проект. Уточненные диаграммы классов и объектов показаны в Приложении 1. Для диаграммы объектов составлена диаграмма взаимодействия.

4. ПРОГРАММИРОВАНИЕ

Программирование выполняется на языке С++, что определено общими требованиями к курсовой работе. Основу для программирования составляют диаграммы и спецификации этапа проектирования. Необходимые детали разъясняются комментариями в тексте программы в Приложении 2.

5. ТЕСТИРОВАНИЕ

Тестирование программного модуля рассмотрим на примере метода MoveCursor(D_typ) класса Tсursor.

Спецификация тестируемого метода.

  •  Имя: MoveCursor;
  •  Назначение: переместить курсор;
  •  Квалификация: управление;
  •  Действия: если полученная координата по Y больше 1, то перемещать вверх, если полученная координата по X больше 1, то перемещать влево, если больше координаты коробки по X, то вниз, а если больше по Y – вправо.

Тесты допустимых границ входных данных и функциональных границ сведем в таблицу.

N

Входные данные

Выходные данные

1

X:5
Y:5
                             _Right

атрибут X:  Факт 6; ожидается 6
атрибут Y:  Факт 5; ожидается 5

2

X:5
Y:5
                              _Left.

атрибут X:  Факт 4; ожидается 4
атрибут Y:  Факт 5; ожидается 5

3

X:5
Y:5

                                
_Up.

атрибут X:  Факт 5; ожидается 5
атрибут Y:  Факт 4; ожидается 4

4

X:5
Y:5

                                
_Down.

атрибут X:  Факт 5; ожидается 5
атрибут Y:  Факт 6; ожидается 6

5

X:0
Y:0

                                    
_Left.

атрибут X:  Факт 0; ожидается 0
атрибут Y:  Факт 0; ожидается 0

6

X:8
Y:0

                               
_Right.

атрибут X:  Факт 8; ожидается 8
атрибут Y:  Факт 0; ожидается 0

7

X:5
Y:8

                               
_Down.

атрибут X:  Факт 5; ожидается 5
атрибут Y:  Факт 8; ожидается 8

8

X:5
Y:0

                                   
_Up.

атрибут X:  Факт 5; ожидается 5
атрибут Y:  Факт 0; ожидается 0

Введем обозначения для ветвлений:

(A== D=Rigth)

(B== D=Left )

(C== D=Up  )

(D== D=Down )

(E== CX<BoxX )

(F== CX>1)

(J== CY<BoxY )

(G== CY>1 )

Условия

1

2

3

4

5

6

7

8

A

_Right

T

X

X

F

X

X

X

X

X

X

E: X:5
Y:5

T

X

F

X

X

X

X:8 Y:0

T

F

X

X

X

X

B

_Left.

T

X

X

F

X

X

X

X

X

X

F: X:5
Y:5

T

X

F

X

X

X

X:0 ;Y:0

T

F

X

X

X

X

C

_Up.

T

X

X

F

X

X

X

X

X

X

G:

X:5
Y:5

T

X

F

X

X

X

X:5;Y:0

T

F

X

X

X

X

D

Down.

T

X

X

F

X

X

X

X

X

X

J:

X:5

Y:5

T

X

F

X

X

X

X:5 Y:8

T

F

X

X

X

X

Драйвер для выполнения тестов  и результаты тестирования приводятся в приложениях.

Построим диаграмму управления (Приложение1).

Приложение 1.

  1.  Диаграмма классов на стадии анализа

  1.  Диаграмма классов на стадии проектирования

  1.  Диаграмма управления для тестирования.

Приложение 2.

  1.  Текст программы

#ifndef _cubic
#define _cubic
#define CubSize 50
#define Backgrnd 0
#define BoxX 3  // максимум 8

#define BoxY 1  // максимум 7    дальше не влазит на экран

//************************************************************************

typedef enum D_typ{_Up,_Down,_Left,_Right};    //направления движения

typedef enum Action_typ{MUp,MDown,MLeft,MRight,MoveCub,Restart,Exit,MoveBack,Wait};

//************************************************************************

class TCub

 {

private:

int Top,Left,Right,

   Up,Down,Bottom;

int X,Y;

public:

TCub *Next;

void Rotate(D_typ Direction);

void SetPosition(int _x, int _y){X=_x;Y=_y;};

void GetPosition(int &_x, int &_y){_x=X;_y=Y;};

void InitSides();

int  GetTopColor(){return Top;};

void Show(int BaseX,int BaseY);

void Hide(int BaseX,int BaseY);

 };

//************************************************************************

class TCursor

{

private:

int X;

int Y;

public:

TCursor();

void GetPosition(int &_x, int &_y){_x=X;_y=Y;};

void SetPosition(int _x, int _y){X=_x;Y=_y;};

void Show(int BaseX,int BaseY);

void Hide(int BaseX,int BaseY);

};

//************************************************************************

class TBox

{

private:

TCursor Cursor;

TCub *Cubics,*Cub_ptr;

TCub *Moves;

int EmptyX,EmptyY;

public:

TBox();

void MoveCubic();

void MoveCursor(D_typ);

void MoveBack();

void DeleteMoves();

void SetCubics();

void Select_Cub(int x,int y);

int GetCubicTopColor(){return Cub_ptr->GetTopColor();};

int CheckTopColor(int Color);

void Show();

};

//************************************************************************

class TMessage

{

private:

char* Text;

public:

void SetText(char * T){Text=T;};

void Show();

void Hide();

void Beep();

};

//************************************************************************

class TGame

{

private:

TMessage Message;

int FirstColor;

int Victory;

TBox Box;

Action_typ GetAction();

void ActOnAction(Action_typ);

int CheckVictory();

public:

TGame();

void PlayGame();

void Show();

};

//************************************************************************

#endif

#include "D:\#Work\politech\boxes.h"
#include <graphics.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <dos.h>
#define BPX 200  //координаты верхнего

#define BPY 100  //левого угла коробки

//********** Поворот кубика ******************************************

void TCub::Rotate(D_typ D)

{

int Cl;

switch (D)

{

case _Up:Cl=Top;Top=Down;Down=Bottom;Bottom=Up;Up=Cl;break;//вверх

case _Down:Cl=Top;Top=Up;Up=Bottom;Bottom=Down;Down=Cl;break;//вниз

case _Left:Cl=Top;Top=Right;Right=Bottom;Bottom=Left;Left=Cl;break;//влево

case _Right:Cl=Top;Top=Left;Left=Bottom;Bottom=Right;Right=Cl;break;//вправо

};

};

//******Начальная установка цветов граней кубиков*********************

void TCub::InitSides()

{

Top=1;

Up=2;

Down=3;

Left=4;

Right=5;

Bottom=6;

};

//****************Прорисовка кубика***********************************

void TCub::Show(int BaseX, int BaseY)

{

setfillstyle(1,Top);

bar(BaseX+X*CubSize-1,BaseY+Y*CubSize-1,

   BaseX+(X-1)*CubSize+1,BaseY+(Y-1)*CubSize+1);

};

//********************************************************************

void TCub::Hide(int BaseX, int BaseY)

{

setfillstyle(1,Backgrnd);

bar(BaseX+X*CubSize-1,BaseY+Y*CubSize-1,

   BaseX+(X-1)*CubSize+1,BaseY+(Y-1)*CubSize+1);

};

//******************Прорисовка курсора********************************

void TCursor::Show(int BaseX, int BaseY)

{

setcolor(15);

rectangle(BaseX+(X-1)*CubSize,BaseY+(Y-1)*CubSize,

  BaseX+X*CubSize,BaseY+Y*CubSize);

};

//********************************************************************

void TCursor::Hide(int BaseX, int BaseY)

{

setcolor(Backgrnd);

rectangle(BaseX+(X-1)*CubSize,BaseY+(Y-1)*CubSize,

  BaseX+X*CubSize,BaseY+Y*CubSize);

};

//****************Конструктор курсора*********************************

TCursor::TCursor()

{

X=1;Y=1;

};

//*****Обработка действия Переместить Кубик***************************

void TBox::MoveCubic()

{

TCub*M;

int CurX,CurY,RX,RY;

Cursor.GetPosition(CurX,CurY);        //Определение координат курсора

Select_Cub(CurX,CurY);                //Выбор кубика под курсоров

Cub_ptr->Hide(BPX,BPY);               //спрятать кубик

RX=EmptyX-CurX;                       //Вычисление смещения кубика

RY=EmptyY-CurY;                       //относительно пустой клетки

if (RX==-1&&RY==0){                   //если кубик левее

    Cub_ptr->Rotate(_Right);       //повернуть вправо

    Cub_ptr->SetPosition(EmptyX,EmptyY); //поменять местами

    M=new(TCub);

    M->SetPosition(EmptyX,EmptyY);

    M->Next=Moves;

    Moves=M;

    EmptyX=CurX;EmptyY=CurY; //кубик и пустую клетку

   };

if (RX==1&&RY==0){ // если правее

    Cub_ptr->Rotate(_Left);

    Cub_ptr->SetPosition(EmptyX,EmptyY);

    M=new(TCub);

    M->SetPosition(EmptyX,EmptyY);

    M->Next=Moves;

    Moves=M;

    EmptyX=CurX;EmptyY=CurY;

   };

if (RX==0&&RY==1){ //если выше

    Cub_ptr->Rotate(_Down);

    Cub_ptr->SetPosition(EmptyX,EmptyY);

    M=new(TCub);

    M->SetPosition(EmptyX,EmptyY);

    M->Next=Moves;

    Moves=M;

    EmptyX=CurX;EmptyY=CurY;

   };

if (RX==0&&RY==-1){ //если ниже

    Cub_ptr->Rotate(_Up);

    Cub_ptr->SetPosition(EmptyX,EmptyY);

    M=new(TCub);

    M->SetPosition(EmptyX,EmptyY);

    M->Next=Moves;

    Moves=M;

    EmptyX=CurX;EmptyY=CurY;

   };

Cub_ptr->Show(BPX,BPY); //нарисовать кубик

};

//*****************Возврат хода***************************************

void TBox::MoveBack()

{

int x,y;

TCub * T;

if (Moves)

{

Moves->GetPosition(x,y);

Cursor.Hide(BPX,BPY);

Cursor.SetPosition(x,y);

Cursor.Show(BPX,BPY);

MoveCubic();

T=Moves;

Moves=Moves->Next;

       delete(T);

};

};

//*****************Удаление ходов*************************************

void TBox::DeleteMoves()

{

TCub*M;

while (Moves)

{

 M=Moves;

 Moves=Moves->Next;

 delete(M);

};

};

//*****************Перемещение курсора********************************

void TBox::MoveCursor(D_typ D)

{

int CX,CY;

Cursor.GetPosition(CX,CY); //получить координаты

Cursor.Hide(BPX,BPY);      //спратать

switch (D)

{

case _Up   : if (CY>1) CY--;break; //вверх

case _Down : if (CY<BoxY) CY++;break; //вниз

case _Left : if (CX>1) CX--;break;    //влево

case _Right: if (CX<BoxX) CX++;break; //вправо

};

Cursor.SetPosition(CX,CY); //установить

Cursor.Show(BPX,BPY);      //нарисовать

};

//***********Начальная установка кубиков******************************

void TBox::SetCubics()

{

DeleteMoves();           //Удалить ходы

int x=1,y=1;

TCub * Temp=Cubics;

while (Temp)

 {

 Temp->SetPosition(x,y);

 Temp->InitSides();

 Temp=Temp->Next;

 if (x==BoxX){x=1;y++;}else x++;

 };

EmptyX=BoxX;

EmptyY=BoxY;

};

//************Прорисовка коробки с кубиками***************************

void TBox::Show()

{

TCub * Temp=Cubics;

setcolor(4);

rectangle(BPX-1,BPY-1,BPX+BoxX*CubSize+1,BPY+BoxY*CubSize+1);

while(Temp)

{

Temp->Show(BPX,BPY);

Temp=Temp->Next;

}

Cursor.Show(BPX,BPY);

};

//***********Выбор кубика с координатами х и у ***********************

void TBox::Select_Cub(int x,int y)

{

int cx,cy;

TCub * Temp=Cubics;

Temp->GetPosition(cx,cy);

 while (Temp&&(x!=cx||y!=cy))

 {

 Temp=Temp->Next;

 if(Temp)Temp->GetPosition(cx,cy);

 };

if (Temp)Cub_ptr=Temp;

};

//*************Проверка всех верхних граней на заданный цвет *************

int TBox::CheckTopColor(int Color)

{

TCub * Temp=Cubics;

while (Temp)

{

if(Temp->GetTopColor()!=Color) return 0;

Temp=Temp->Next;

};

return 1;

};

//********************************************************************

TBox::TBox()

{

Moves=NULL;

Cubics=0;Cub_ptr=0;

TCub * Temp;

int x=1,y=1;

for(int t=1;t<BoxY*BoxX;t++)

 {

 Temp=new(TCub);             //Создание кубиков

 Temp->SetPosition(x,y);     //в коробке

 Temp->InitSides();

 Temp->Next=Cubics;

 Cubics=Temp;

 };

Cub_ptr=Cubics;

EmptyX=BoxX;

EmptyY=BoxY;

};

//*****************Звуковая мелодия***********************************

void TMessage::Beep()

{

sound(300);delay(600);nosound();

delay(50);

sound(370);delay(300);nosound();

sound(440);delay(300);nosound();

for (int i=1;i<=8;i++)

{sound(600);delay(75);nosound();};

for (i=1;i<=8;i++)

{sound(670);delay(75);nosound();};

sound(740);delay(600);nosound();

sound(670);delay(600);nosound();

sound(600);delay(300);nosound();

sound(440);delay(300);nosound();

sound(600);delay(300);nosound();

};

//********************************************************************

void TMessage::Show()

{

setfillstyle(1,7);

setcolor(8);

bar(200,10,400,60);

rectangle(202,12,398,59);

setcolor(4);

outtextxy(220,35,Text);

};

//********************************************************************

void TMessage::Hide()

{

setfillstyle(1,0);

bar(200,10,400,60);

};

//********************************************************************

TGame::TGame()

{

Victory=0;

Box.SetCubics();

Message.SetText("!!! Вы победили !!!");

Box.Show();

FirstColor=Box.GetCubicTopColor();

};

//**************Определение действия *********************************

Action_typ TGame::GetAction()

{

int k=getch();

if (k==0) k=getch();  //чтение дополнения

switch (k)

{

 case 77:return MRight;

 case 75:return MLeft;

 case 72:return MUp;

 case 80:return MDown;

 case 13:return MoveCub;

 case 32:return MoveCub;

 case 27:return Exit;

 case 8 :return MoveBack;

        case 19:return Restart;

 };

 return Wait;

};

//**************Реакция на действие***********************************

void TGame::ActOnAction(Action_typ A)

{

if (!Victory)   //Если ситуация не победная

switch(A)

{

case MUp:Box.MoveCursor(_Up);break;

case MDown:Box.MoveCursor(_Down);break;

case MLeft:Box.MoveCursor(_Left);break;

case MRight:Box.MoveCursor(_Right);break;

case MoveCub:Box.MoveCubic();break;

};

switch(A)

{

case MoveBack:Box.MoveBack();break;

case Exit:closegraph();exit(1);break;

case Restart:clearviewport();

      Box.SetCubics();

      Box.Show();break;

};

};

//***************Проверка победы**************************************

int TGame::CheckVictory()

{

int Color=Box.GetCubicTopColor();;

if (Color==FirstColor)return 0;else

return Box.CheckTopColor(Color);

};

//***************Игра*************************************************

void TGame::PlayGame()

{

Action_typ A;

do

{

A=GetAction();

ActOnAction(A);

Victory=CheckVictory();

if (Victory){

 Message.Show();

 Message.Beep();

    }

     else Message.Hide();

}

while(A!=Exit);

};

//********************************************************************

void main(void)

{

int gdriver = DETECT, gmode, errorcode;

initgraph(&gdriver, &gmode, "d:\\borlandc\\bgi");

errorcode = graphresult();

if (errorcode != grOk)  /* an error occurred */

{

  printf("Graphics error: %s\n", grapherrormsg(errorcode));

  printf("Press any key to halt:");

  getch();

  exit(1);             /* return with error code */

}

TGame Game;

Game.PlayGame();

closegraph();

};

  1.  Программа – драйвер тестирования

//Проект "Кубики перевертыши".Драйвер для тестирования подпрограммы
// void TBox::MoveCursor(D_typ D)
#include<iostream.h>
#include<conio.h>
#include<graphics.h>
#include"boxes.h"

//Подпрограмма сравнения результатов

//с ожидаемыми значениями

void OutputResults(TCursor Result,//результат выполнения процедуры

int tx,int ty)   //ожжидаемый результат

{int px,py;

 cout <<"Результаты теста."<<endl;

 cout << "Cursor" << endl;

 cout << "атрибут X: ";

 Result.GetPosition(px,py);

 if (px!=tx) cout << "ОШИБКА!";

 cout <<" Факт " << px << "; ожидается " << tx << endl;

 cout << "атрибут Y: ";

 if (py!=ty) cout << "ОШИБКА!";

 cout <<" Факт " << py << "; ожидается " << ty << endl;

}

void Testing

(float NTest,float X,float Y,D_typ D,float TX,float TY)

{TBox Box;

cout <<"------- Тест № " << NTest << endl;

cout <<"Входные данные" << endl;

cout <<"Cursor" << endl;

cout <<"X:"<< X <<endl;

cout <<"Y:"<< Y <<endl;

if (D==_Left) cout <<"_Left." << endl;

if (D==_Right) cout <<"_Right." << endl;

if (D==_Up) cout <<"_Up." << endl;

if (D==_Down) cout <<"_Down." << endl;

Box.Cursor.SetPosition(X,Y);

Box.MoveCursor(D);

OutputResults(Box.Cursor,TX,TY);

getch();

}

//Головная программа драйвера

int main()

{

cout << "Тестирование подпрограммы" << endl;

cout <<

"void TBox::MoveCursor(D_typ D)"

<< endl << endl;

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

int gdriver = DETECT, gmode, errorcode;

initgraph(&gdriver,&gmode,"c:\\Langs\\bc\\bgi");

//Реализация тестов

Testing(1,5,5,_Right,6,5);

Testing(2,5,5,_Left,4,5);

Testing(3,5,5,_Up,5,4);

Testing(4,5,5,_Down,5,6);

Testing(5,0,0,_Left,0,0);

Testing(6,BoxX,0,_Right,BoxX,0);

Testing(7,5,BoxY,_Down,5,BoxY);

Testing(8,5,0,_Up,5,0);

return 0;

;}

  1.  Результат тестирования

Тестирование подпрограммы
void TBox::MoveCursor(D_typ D)

------- Тест № 1
Входные данные
Cursor
X:5
Y:5
_Right.
Результаты теста.
Cursor
атрибут X:  Факт 6; ожидается 6
атрибут Y:  Факт 5; ожидается 5

------- Тест № 2

Входные данные

Cursor

X:5

Y:5

_Left.

Результаты теста.

Cursor

атрибут X:  Факт 4; ожидается 4

атрибут Y:  Факт 5; ожидается 5

------- Тест № 3

Входные данные

Cursor

X:5

Y:5

_Up.

Результаты теста.

Cursor

атрибут X:  Факт 5; ожидается 5

атрибут Y:  Факт 4; ожидается 4

------- Тест № 4

Входные данные

Cursor

X:5

Y:5

_Down.

Результаты теста.

Cursor

атрибут X:  Факт 5; ожидается 5

атрибут Y:  Факт 6; ожидается 6

------- Тест № 5

Входные данные

Cursor

X:0

Y:0

_Left.

Результаты теста.

Cursor

атрибут X:  Факт 0; ожидается 0

атрибут Y:  Факт 0; ожидается 0

------- Тест № 6

Входные данные

Cursor

X:8

Y:0

_Right.

Результаты теста.

Cursor

атрибут X:  Факт 8; ожидается 8

атрибут Y:  Факт 0; ожидается 0

------- Тест № 7

Входные данные

Cursor

X:5

Y:8

_Down.

Результаты теста.

Cursor

атрибут X:  Факт 5; ожидается 5

атрибут Y:  Факт 8; ожидается 8

------- Тест № 8

Входные данные

Cursor

X:5

Y:0

_Up.

Результаты теста.

Cursor

атрибут X:  Факт 5; ожидается 5

атрибут Y:  Факт 0; ожидается 0

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

1.Методические указания к курсовой работе.      Дубов, Барков, Долинин. Владимир 1999 48с.

     

  2.Курс лекций по дисциплине « Технология программирования» Дубов.

   

  1.  «C++ for Dummis»


 

А также другие работы, которые могут Вас заинтересовать

22752. Американсько-радянські переговори і угоди на найвищому рівні у 1991 р. Договір СНО-1 22.5 KB
  Этот и другие недостатки Договора разный подход к ограничению охватываемых документом видов СНВ вывод за скобки установленных количественных пределов крылатых ракет морского базирования отказ США подтвердить свою приверженность Договору по ПРО по существу ставили под вопрос соответствие этого Договора принципу равенства и одинаковой безопасности США обеспечили себе возможность достижения военностратегического перевеса над СССР не выходя формально за рамки принятых обязательств. В соответствии с Договором СНВ1 более строгому...
22753. Участь УРСР у розвязанні територіальних проблем на Паризький мирній конференції 55.5 KB
  Підходи України до проблем реформування ООН. укладенням угоди про встановлення нового кордону між двома державами і поділом між ними зі згоди ООН Вільної території Трієст. Еритрея після проведення в ній референдуму за рішенням Генеральної Асамблеї ООН була приєднана до Ефіопії на федеративних засадах у 1952 р. Підходи України до проблем реформування ООН.
22754. Міжнародна громадськість про суть і значення конституційних змін в СРСР 1944р. Полеміка з цих питань 74 KB
  Становлення та розвиток відносин України з державами ЦСЄ. Миротворча діяльність України: досягнення та проблеми. При всьому тому членам КУК як українським патріотам імовірно імпонував вихід України на світову арену нехай і в такому ущемленому вигляді.Цегельський інформував громадськість що його делегація мала у СанФранціско зустрічі з усіма представниками Об'єднаних Націй домагаючись включення України в число учасників конференції .
22755. Участь делегації УРСР в роботі Дунайської конференції 73 KB
  право України було відновлено. У 19941996 роках ЄС ухвалив Спільну позицію щодо України 28 листопада 1994 р. Указом Президента України було затверджено Стратегію інтеграції України до ЄС€ розраховану на період до 2007 року. на Гельсінському самміті Євросоюзу була ухвалена Спільна стратегія ЄС щодо України яка спрямована на зміцнення стратегічного партнерства з Україною.
22756. Участь УРСР в роботі конференції в Сан-Франциско 55.5 KB
  Політика ЄС стосовно України. Основні проблеми безпеки України зовнішній аспект та механізми їх гарантування. Політика ЄС стосовно України. У 19941996 роках ЄС ухвалив Спільну позицію щодо України 28 листопада 1994 р.
22757. VI сесія (1944р.) Верховної Ради УРСР щодо формування союзного Наркомату закордонних справ 37 KB
  Наслідки розширення ЄС для зовнішньої політики України. питання про утворення НКЗС Українибуло розглянуто на Політбюро ЦК КПб України. Поперше було вирішено встановити дипломатичні відносини України з Великою Британією і США подруге з іншими країнами антигітлерівської коаліції. Наслідки розширення ЄС для зовнішньої політики України Розширення Європейського Союзу яке відбулося 1 травня 2004 року призвело до історичних змін політичних географічних та економічних умов для України та Євросоюзу.
22758. Діяльність УРСР в ООН 1945 - 1990 рр 38 KB
  Економічне співробітництво України та Росії: стан проблеми та механізми їх вирішення. Європейська політика України: концептуальні засади та практика. Виступивши проти зосередженості ЮНЕСКО тільки на фінансуванні та інших формах розв'язання проблеми встановлення причин ракових захворювань делегат від України Тульчинська порушила питання про негайне впровадження у життя вже одержаних результатів її пропозиція була схвалена більшістю делегацій 21 проти 18 при 7 що утрималися. Економічне співробітництво України та Росії: стан проблеми та...
22759. Участь УРСР в обговоренні ООН грецького та індонезійського питань 35.5 KB
  Питання делімітації та демаркації кордонів кордону України: досягнення і проблеми. Інтереси України в Балканському регіоні та механізми їх реалізації. Півстоліття назад саме міністр закордонних справ України Мануїльский із трибуни ООН проголосив Руки геть від Індонезії . Погана спадщина радянськоіндонезійських відносин що повністю дісталося Росії абсолютно не стосується України той самий випадок коли не варто шкодувати про усіх без винятку боргах й активах колишнього СРСР.
22760. Участь делегації УРСР в конференції в Сан-Франциско 43 KB
  На території РФ функціонують Посольство України м. На території України здійснюють діяльність Посольство Російської Федерації м. розстрілу Білого дому та зміцнення позицій реформаторів у Кремлі курс щодо України став жорсткішим що виявилось у намаганнях на дострокових виборах 1994 р. У першу чергу це стосується умов тимчасового перебування та функціонування Чорноморського Флоту РФ на території України договірноправового оформлення українськоросійського державного кордону тощо.