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»


 

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

75114. Основные части и движущие силы организации 59.28 KB
  В стратегическую вершину входят все управляющие звенья компании. Основная цель – управление стратегией и развитием компании управление границами компании. Производственное ядро профессионалы цеха люди выполняющие основную деятельность по профилю компании...
75115. Традиционные модели организационных структур: звёздчатая, линейно-функциональная, дивизиональная, холдинговая, ТНК 2.46 MB
  Под организационной структурой управления понимается совокупность подразделений и уровней управления обеспечивающих развитие компании и ее конкурентоспособность. Оргструктура имеет определенные элементы: структурные подразделения выполняющие определенные функции управления; уровни управления как совокупность подразделений и руководителей занимающих определенную иерархическую ступень; горизонтальные и вертикальные связи обеспечивающие взаимодействие всех подразделений и руководителей; полномочия – право руководителей использовать...
75116. Стратегические партнёрства. Управление проектами 46.52 KB
  Управление проектами. Управление проектами заключается в осуществлении и доведении проекта до логического завершения путем организации и управления людьми временем издержками и ресурсами. Функциональная структура управления проектами включает в себя девять разделов: Управление координацией Project Integrtion Mngement. Управление целями Project Scope Mngement.
75117. Бизнес-планирование. Содержание и цель бизнес-плана 21.64 KB
  Бизнес-план краткое точное доступное и понятное описание предполагаемого бизнеса важнейший инструмент при рассмотрении большого количества различных ситуаций позволяющий выбрать наиболее перспективный желаемый результат и определить средства для его достижения. Бизнес-план является документом позволяющим управлять бизнесом поэтому его можно представить как неотъемлемый элемент стратегического планирования и как руководство для исполнения и контроля.
75118. Управление изменениями. Эволюционный и революционный подходы 18.15 KB
  Не затрагивает глубинных качественных изменений в организации а касается оптимизации процессов и повышения общей рентабельности производства. РЕВОЛЮЦИОННЫЕ изменения изменения 2го уровня – носят иной качественный характер; сопровождаются переформатированием ряда процессов или организации в целом...
75119. Глобальные менеджеры. Основные профессиональные качества, способы подготовки и условия работы 64.24 KB
  Для того чтобы думать глобально руководителю необходимо изменить свое мышление. Думать глобально означает распространять концепции и модели от двусторонних отношений мы им к одновременному учету многочисленных реалий и отношений профессионально действовать внутри этого более сложного окружения. Эволюция бизнеса к глобально ориентированной деятельности потребует нового мышления и управленческих навыков. Одной из основных стратегических задач функции управления персоналом в многонациональных корпорациях является переориентация узких...
75120. Глобальный менеджмент 57.27 KB
  Революционные трансформации экономических и социальных структур в ХХ веке подвели мир к формированию принципиально нового глобального мирового порядка и адекватной ему системы глобального менеджмента. К системе глобального менеджмента следует отнести систему глобального прогнозирования моделирования и программирования инициированную международными организациями и прежде всего ООН. Речь идет о системе глобального менеджмента пригодную для периода перехода от экономического человека...
75121. Понятие организации, этапы её развития, жизненный цикл 64.34 KB
  Понятие организации этапы её развития жизненный цикл. В истории известны три формы организации совместной деятельности людей ради общей цели община корпорация ассоциация. В зависимости от количества целей целей организации делятся на простые и сложные. Простые организации ставят перед собой одну цель сложные – две и больше.