Работа с языками объектно-ориентированного программирования (на примере Borland C++)

Страницы работы

Фрагмент текста работы

Министерство образования и науки РФ

Новосибирский государственный технический университет

Кафедра Автоматики

Курсовая работа

по дисциплине программирование


Группа:       АА-86

Студент:     Сапрыкин О.Н.

Проверил:

Ханин А.Г.


Новосибирск

2010


Курсовой проект

          Проекты обязаны быть реализованы с использованием классов или готовых пакетов, построенных на основе объектно-ориентированного программирования. В зависимости от техники, к которой имеется доступ, в качестве таких пакетов могут быть использованы TVISION для Borland C++, Object Windows Library 1.0 или Object Windows Library 2.0 для Borland C++ или Visual C++ 6.0. Программа может выполнять любые функции, но студенты должны показать в ней умение пользоваться достаточно сложными библиотеками классов.  В качестве таких программ могут быть предложены различные игры,

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

          Примерные задания на курсовое проектирование.

1.1.  Разработать графическую игру.

1.2.  Разработать пользовательский интерфейс к файловой системе, включая манипулирование, просмотр и редактирование текстовых файлов.

1.3.  Разработать программу визуализации табличных данных.

1.4.  Разработать HTML-редактор с подсветкой тегов.

1.5.  Разработать редактор электронных таблиц.

1.6.  Разработать программу графического оформления текстовых объявлений.

          Предпочтение отдается реальной тематике, определяемой интересами студента и согласуемой с преподавателем.


Правила игры:

На игровой доске (поле размером 10:10) игроки начинают ходить, при каждом ходе все соседние фишки становятся такого же цвета, что и ходивший игрок. Выигрывает тот игрок, который имеет большее количество закрашенных фишек.

Реализация:

В своей игре я использую объекты. Фишки реализуются в объекте, клетки игровой доски тоже реализуются объектом, сама доска является потомком клетки и имеет свойства доски.

Для того чтобы создать игровую доску, я сначала создаю клетку в классе “TCells - Клетка”, которая имеет свой размер. В классе “TDoska-доска”, который является производным от класса “TCells - Клетка” я рисую игровую доску с помощью функции draw, в которую ничего не передается. Эта игровая доска размером 10:10, зеленого цвета. Также мне нужно создать объекты, которыми я буду ходить – фишки. Их я создаю в базовом классе “TFishka”. Полями этого класса являются: массив размером 10:10 для хранения положений фишек, массив размером 10:10 для хранения цветов фишек на доске, целые параметры: x, y, size, count_1, count_2 – координаты фишки, размер, счет первого и второго игрока соответственно.

Методы класса: конструктор для создания поля зеленого цвета с неустановленными фишками; функция void draw для рисования одной фишки с установленными координатами; функция init, в которую передаются координаты фишки походившего игрока, ее цвет и номер игрока. Эта функция закрашивает соседние фишки, если они еще не установлены. Функция Game_over, для проверки на окончание игры. Игра оканчивается, когда все фишки установлены. Потом сравнивается счет игроков и выводится сообщение о победителе.


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

Unit1.cpp

#include <vcl.h>

#pragma hdrstop

#include "Unit1.h"

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

TFishka f;

TDoska doska;

__fastcall TForm1::TForm1(TComponent* Owner)

        : TForm(Owner)

{

}

//----------- обработчик прорисовки формы -----------------------------------------void __fastcall TForm1::FormPaint(TObject *Sender)

{

doska.draw();

}

//----------------------------------------------------------------

//Ход первого игрока

void __fastcall TForm1::Button1Click(TObject *Sender) {

//Запись ходов

Label9->Caption=Label9->Caption+"Игрок1: X="+Edit1->Text+ "Y="+Edit2->Text+"\t";

f.init(StrToInt(Edit1->Text),StrToInt(Edit2->Text),clBlue,1);

f.draw(); //Прорисовываем фишку

f.count_1++;

Edit5->Text=IntToStr(f.count_1);//Выводим очки

//Выключаем интерфейс

Button1->Enabled=false;

Edit1->Enabled=false;

Edit1->Text="";

Edit2->Enabled=false;

Edit2->Text="";

//Включаем интерфейс второго игрока

if (Button2->Enabled==false)

{ Button2->Enabled=true;

     Edit3->Enabled=true;

     Edit4->Enabled=true;

   }

   else

   {

   Button2->Enabled=false;

   }

f.Game_over();// Проверяем условие конца игры

}

//-------------------------------------------------------------------//Ход второго игрока

void __fastcall TForm1::Button2Click(TObject *Sender) {

//Запись ходов

Label9->Caption=Label9->Caption+"Игрок2: X="+Edit3->Text+" Y="+Edit4->Text+"\n";

f.init(StrToInt(Edit3->Text),StrToInt(Edit4->Text),clRed,2);

f.draw(); //Прорисовываем фишку

f.count_2++;

Edit6->Text=IntToStr(f.count_2); //Выводим очки

//Выключаем интерфейс

Button2->Enabled=false;

Edit3->Enabled=false;

Edit3->Text="";

Edit4->Enabled=false;

Edit4->Text="";

//Включаем интерфейс первого игрока

if (Button1->Enabled==false)

   {

     Button1->Enabled=true;

     Edit1->Enabled=true;

     Edit2->Enabled=true;

   }

else

{Button1->Enabled=false;}

f.Game_over();    // Проверяем условие конца игры

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Timer1Timer(TObject *Sender) //Каждые 10 мс

{

f.draw_greed();//прорисовываем поле

}

//---------------------------------------------------------------------------

void __fastcall TForm1::FormCreate(TObject *Sender)//При создании формы

{

//Выводим счет игроков

Edit5->Text=IntToStr(f.count_1);

Edit6->Text=IntToStr(f.count_2);

}

//Выключаем интерфейс второго игрока, чтобы начал ходить первый

Edit3->Enabled=false;

Edit4->Enabled=false;

}


Unit.h

#ifndef Unit1H

#define Unit1H

//---------------------------------------------------------------------------

#include <Classes.hpp>

#include <Controls.hpp>

#include <StdCtrls.hpp>

#include <Forms.hpp>

#include <ExtCtrls.hpp>

//---------------------------------------------------------------------------

class TForm1 : public TForm

{

__published:  // IDE-managed Components

        TGroupBox *GroupBox1;

        TGroupBox *GroupBox2;

        TGroupBox *GroupBox3;

        TEdit *Edit1;

        TEdit *Edit2;

        TEdit *Edit3;

        TEdit *Edit4;

        TLabel *Label1;

        TLabel *Label2;

        TLabel *Label3;

        TLabel *Label4;

        TLabel *Label5;

        TLabel *Label6;

        TButton *Button1;

        TButton *Button2;

        TLabel *Label7;

        TLabel *Label8;

        TEdit *Edit5;

        TEdit *Edit6;

        TShape *Shape1;

        TShape *Shape2;

        TTimer *Timer1;

        TGroupBox *GroupBox4;

        TLabel *Label9;

        void __fastcall FormPaint(TObject *Sender);

        void __fastcall Button1Click(TObject *Sender);

        void __fastcall Button2Click(TObject *Sender);

        void __fastcall Timer1Timer(TObject *Sender);

        void __fastcall FormCreate(TObject *Sender);

private:           // User declarations

public:                        // User declarations

        __fastcall TForm1(TComponent* Owner);

};

//---------------------------------------------------------------------------

extern PACKAGE TForm1 *Form1;

//---------------------------------------------------------------------------

#endif

class TCells                // Классклетка

{

public:

        int size;              // Размерклеток

        void init(_size){size=_size;}  //Устанавливаетразмерклеток

};

class TDoska:public TCells  // Классдоска. Производный от класса клетка.

{

public:

  TDoska()                  //Устанавливаем размер клетки 40

   {

    init(40);

   }

 void draw()               //Рисуетдоску.

 {

for (int i=0;i<10;i++)

for (int j=0;j<10;j++)

{

 Form1->Canvas->Brush->Color=clLime;                        // Выбираемцвет

Form1->Canvas->Ellipse(i*size,j*size,(i+1)*size,(j+1)*size);//Рисуемкруг

 }

}

};

//---------------------------------------------------------------------------

class TFishka             // КлассФишка.

{

public:

        int mas[10][10];                       //Массив для хранения положений фишек.

TColor color[10][10];  // Массив для хранения цветов фишек на доске

Похожие материалы

Информация о работе