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»


 

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

24642. Організація, зміст і методика проведення перспективного аналізу 28.5 KB
  Організація зміст і методика проведення перспективного аналізу Перспективний аналіз здійснюється у перспективній або довгостроковій системі управління. За допомогою перспективного аналізу визначаються можливі у перспективі економічні та соціальні результати розвитку науки і техніки розробляються науково обгрунтовані програми соціального економічного і технічного розвитку галузей народного господарства оптимальні управлінські рішення які забезпечують досягнення стратегічних цілей. Аналіз фактичних результатів діяльності за довготерміновий...
24643. Організація і методика поточного аналізу господарської діяльності 28.5 KB
  Організація і методика поточного аналізу господарської діяльності. Метою цього аналізу є виявлення та усунення негативних причин характерних для даної системи використання поточних резервів які сприяють досягненню поставленої мети. Поточний аналіз найбільш повний вид економічного аналізу що вбирає в себе результати оперативного аналізу і слугує базою для перспективного аналізу.
24644. Аналіз кредитоспроможності позичальника 59.5 KB
  Аналіз кредитоспроможності позичальника. До укладання кредитної угоди фахівець банку повинен ретельно проаналізувати кредитоспроможність потенційного позичальника тобто його здатність своєчасно повернути позичку вивчити фактори які можуть спровокувати її неповернення. Тому оцінка якості потенційного позичальника є одним із важливих етапів процесу кредитування. Одним з елементів оцінки кредитоспроможності є з’ясування персональних якостей потенційного позичальника.
24645. Обєкти та завдання економічного аналізу. Принципи його проведення 26.5 KB
  Обєкти та завдання економічного аналізу. Метою економічного аналізу є вивчення результатів діяльності підприємств визначення впливу факторів на показники і їх роботу для виявлення недоліків і резервів а також розробка заходів спрямованих на відновлення і збільшення обсягів виробництва та реалізації підвищення ефективності діяльності. Предметом економічного аналізу є фінансово господарська діяльність підприємства. Об’єкти економічного аналізу – це окремі явища і процеси проблеми питання наприклад виробнича діяльність наявність і...
24646. Інформаційне забезпечення економічного аналізу 26.5 KB
  Інформація – це порядкованя повідомлення про кількісний та якісний стан явищ і процесів сукупність знань і даних про них. Інформація може бутит виражена за допомогою цифр букв символів.В економіці інформація відображає процеси та явища господарської діяльності закономірності функціонування ринку та його складові.планово – нормативна інформація бізнес плани норми витрат прейскуранти цін і тарифів технологічна документація 2.
24647. Організація та етапи проведення аналітичної роботи на підприємстві 26 KB
  Організація та етапи проведення аналітичної роботи на підприємстві. Аналітична робота починається з планування розрізняють загальний план аналітичної роботи та конкретну програму аналітичних робіт. Виділяють три етапи аналітичної роботи: 1.попередній – попереднє ознайомлення зі станом справ визначають ступінь виконання плану за основними показниками робиться попередня оцінка роботи підприємства а також готують макети таблиць збирається і перевіряється головна інформація визначаються виконавці 2.
24648. Метод економічного аналізу. Класифікація методів економічного аналізу 51.5 KB
  Економіко математичні методи – дослідження яке проводять шляхом анкетування опитування співбесіди. Загальнонаукові методи: Методи теорії пізнання аналіз синтез індукція дедукція. Евристичні методи Метод мозкового штурму анкетування морфологічний метод метод семикратного пошуку Метод асоціацій та аналогій. Економікологічні методи Методи детермінованого факторного аналізу методи елімінування логарифмічний метод інтегральний метод Методи загального аналізу методи порівняння і групування методи середніх величин та...
24649. Порівняння – основний метод економічного аналізу 25 KB
  Порівняння – це один із самих розповсюджених аналіз будь якого показника починаючи із порівняння звітних даних з плановими за попередній період з базисним показниками аналітичних підприємств – конкурентів; аналіз порівняння до і після впровадження інвестицій порівняння якісних ознак фактично випущеної продукції зі стандартами і технічними умовами що дає можливість визначити.
24650. Методика аналізу обсягу випуску та реалізації продукції 28.5 KB
  Методика аналізу обсягу випуску та реалізації продукції. Аналіз випуску продукції передбачає загальну оцінку виконання плану оцінку впливу факторів на його величину аналіз ритмічності якості продії і її конкурентоспроможності оновлення продукції виконання плану з номенклатури і асортименту. Випуск продукції можна аналізувати у натуральному і вартісному виразі: 1. Для оцінки ритмічності і випуск продукції здійснюється за питомою вагою виробн продії в кожній декаді до місячного випуску і за допомогою узагальнюючого показника коефіцієнтів...