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»


 

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

44244. Анализ качества атмосферного воздуха в салоне автотранспортных средств (АТС) 650 KB
  Вызывает тревогу тот факт что несмотря на проводимую работу выбросы загрязняющих веществ в атмосферу от автотранспортных средств увеличиваются в год в среднем на 31. В масштабах страны доля транспорта в суммарных выбросах загрязняющих веществ в атмосферу от всех источников достигает 45 в выбросах парниковых газов примерно 10 в массе промышленных отходов 2 в сбросах вредных веществ со сточными водами около 3 в потреблении озоноразрушающих веществ не более 5 Чуйкова 1996. т вредных веществ что представляет серьезную...
44245. Разработка рекомендаций по использованию стратегии диверсификации в организации на примере «ООО Премьер» 439.5 KB
  Сущность и виды стратегии диверсификации Разработка рекомендаций по использованию стратегии диверсификации в организации на примере ООО Премьер Рекомендации по реализации стратегии диверсификации Динамичность развития и глобализация современной мировой экономики обусловили необходимость диверсификации как способа снижения рисков неопределенности внешней среды и повышения конкурентоспособности компаний.
44246. Анализ и оценка текущего финансового состояния предприятия, и разработка возможных рекомендаций по его улучшению и эффективности деятельности ФГУП «ПО Завод имени Серго» 8.75 MB
  Цель работы провести анализ и оценку текущего финансового состояния предприятия и разработать рекомендации по его улучшению и эффективности деятельности предприятия. Рассмотрены теоретические и методологические основы финансового анализа его роль и значение в эффективности деятельности предприятия. Произведен полный анализ финансового состояния предприятия за 20092010 года предложены пути совершенствования финансовой и хозяйственной деятельности предприятия....
44247. Основные принципы и закономерности микромира 649 KB
  Квантовая (волновая) механика пытается объяснить как корпускулярные, так и волновые свойства веществ. Гипотеза об универсальности корпускулярно-волнового дуализма была предложена Луи де Бройлем в 1923 г. Он утверждал, что не только фотоны, но и электроны, и любые другие частицы материи наряду с корпускулярными обладают волновыми свойствами
44248. Изучение основных характеристик микрофлюидного чипа, определяющих его аналитические свойства 3.92 MB
  Смачиваемость поверхности.42 Изменение смачиваемости в зависимости от шероховатости поверхности. Измерения контактных углов после физической обработки поверхности. Измерения контактных углов после химической обработки поверхности.
44249. ППР на возведение офисного здания банка в г. Новосибирске 4.05 MB
  Дополнительным офисом Помещение специалистов Комната отдыха Зал обслуживания юридических лиц Серверная Гардероб Вент камера Помещение VIP клиентов Наружные стены выполнены толщиной 510 мм из керамического кирпича размерами В качестве утеплителя предусмотрены пенополистирольные плиты Урса толщиной. ЗАКЛЮЧЕНИЕ Дипломный проект состоит из пяти графических листов и пояснительной записки.
44252. Методические рекомендации. Экономика труда 469.5 KB
  Учебно-методические материалы предназначены для студентов обучающихся по специальности 060200 Экономика труда и проходящих преддипломную практику в организациях различных отраслей и организационно-правовых форм и форм собственности. наук доцент кафедры экономики труда УрСЭИ Рецензент Белкин В. Уральский социально-экономический институт Академии труда и социальных отношений 2005 Белкина Н.