Вход

Игры (пункт 5.3) 1 вопрос

Рекомендуемая категория для самостоятельной подготовки:
Курсовая работа*
Код 356394
Дата создания 06 июля 2013
Страниц 37
Мы сможем обработать ваш заказ (!) 25 апреля в 12:00 [мск]
Файлы будут доступны для скачивания только после обработки заказа.
1 310руб.
КУПИТЬ

Содержание


Введение
1 Разработка эскизного и технического проектов программы
1.1 Постановка задачи
1.2 Описание алгоритма
1.3 Входные и выходные данные
1.4 Выбор состава технических и программных средств
2 Разработка проекта
2.1 Разработка программы
2.2 Описание переменных
2.3 Написание программы
2.4 Спецификация программы
3 Тестирование программы
3.1 Запуск программы
3.2 Задание исходных данных
3.2.1 Генерация случайной шахматной позиции
3.2.2 Ввод шахматной позиции пользователем
3.3 Получение результатов
3.3 Очистка доски
Заключение
Глоссарий
Список использованных источников

Введение

Игры (пункт 5.3) 1 вопрос

Фрагмент работы для ознакомления

Наименование
Обозначение
Примечание
Chess.Dpr
Файл проекта
Связывает все файлы, из которых состоит приложение
Chess.Res
Файл ресурсов
Содержит пиктограммы, графические изображения
ChessGame.Pas
Файл программного модуля для формы
Определяет функциональность формы
ChessGame.Dfm
Файл формы № 1
Содержит список свойств, всех компонентов, включенных в форму
wSquare.bmp
Растровое изображение
Белая клетка поля
bSquare.bmp
Растровое изображение
Черная клетка поля
WhitePawn.bmp
Растровое изображение
Пешка белая
BlackPawn.bmp
Растровое изображение
Пешка черная
WhiteRook.bmp
Растровое изображение
Ладья белая
BlackRook.bmp
Растровое изображение
Ладья черная
WhiteKnight.bmp
Растровое изображение
Конь белый
BlackKnight.bmp
Растровое изображение
Конь черный
WhiteBishop.bmp
Растровое изображение
Слон белый
BlackBishop.bmp
Растровое изображение
Слон черный
WhiteQueen.bmp
Растровое изображение
Ферзь белый
BlackQueen.bmp
Растровое изображение
Ферзь черный
WhiteKing.bmp
Растровое изображение
Король белый
BlackKing.bmp
Растровое изображение
Король черный
3 Тестирование программы
3.1 Запуск программы
Для начала работы с программой запускаем файл “Chess.exe” из каталога с программой.
После запуска на экране появляется главное окно программы, которое имеет вид, показанный на рис. 11 (приложение 1).
В главном окне имеются следующие элементы:
1 – главное меню программы, состоящее из следующих пунктов: «Сгенерировать позицию», «Очистить доску», «Выход».
2 – поле доски, на которой размещаются фигуры.
3, 4 – поля, где изображены фигуры, которые могут быть размещены на доске, и информация об их количестве.
5, 6 – поля, в которые выводится информация о положении черного и белого королей, если им объявлены шах или мат.
7 – информация о подсветке, которая используется для выделения фигур на доске.
В начале работы шахматная доска пуста, а количества фигур в полях «Оставшиеся черные фигуры» и «Оставшиеся белые фигуры» максимальны. Для продолжения работы надо задать шахматную позицию.
3.2 Задание исходных данных
Ввод исходных данных может быть выполнен двумя способами:
1) шахматная позиция генерируется с помощью датчиков случайных чисел;
2) шахматная позиция вводится с пользователем.
3.2.1 Генерация случайной шахматной позиции
Чтобы сгенерировать случайную шахматную позицию надо выбрать пункт меню «Игра->Сгенерировать позицию». Сгенерированная позиция может быть изменена перетаскиванием фигур с помощью мыши (см. подробнее в пункте 1.2.2).
3.2.2 Ввод шахматной позиции пользователем
Пользователь может задать шахматную позицию, перетаскивая фигуры с помощью мыши. Возможны следующие перемещения фигур:
1) Перетаскивание фигур из областей «Оставшиеся черные фигуры» и «Оставшиеся белые фигуры» в нужную клетку шахматной доски. Количество соответствующих оставшихся фигур при этом уменьшается.
2) Фигура может быть перемещена из одной клетки доски в другую.
3) Перетаскивание фигур с шахматной доски в поля «Оставшиеся черные фигуры» и «Оставшиеся белые фигуры». При этом фигура удаляется с шахматной доски, а соответствующий счетчик оставшихся фигур увеличивается.
3.3 Получение результатов
Результаты выводятся в поле «Информация о позиции» после каждого изменения шахматной позиции, а также на шахматную доску путем подсвечивания клеток доски цветным прямоугольником.
Если белому королю объявлен шах или мат, то в поле «Белый король» выводятся надписи «ШАХ» или «МАТ» соответственно. Отсутствие в поле «Белый король» какой-либо надписи означает, что на короля не нападает ни одна из фигур.
Аналогично результаты для черного короля выводятся в поле «Черный король».
Для выделения фигур на доске используются следующие цвета подсветки шахматных клеток:
1) Синим прямоугольником подсвечиваются клетки, в которых находится фигура, нападающая на белого короля.
2) Красным прямоугольником подсвечиваются клетки, в которых находится фигура, нападающая на черного короля.
3) Зеленым цветом подсвечиваются клетки, в которые король может уйти от шаха.
Эта информация о цветах подсветки также выведена в поле «Информация о позиции» для удобной трактовки результатов.
Если нападающая фигура находится в клетке, куда король может уйти («съев» фигуру), то эта клетка подсвечивается двумя цветами одновременно: красным и зеленым, если под шахом находится черный король, или синим и зеленым, если под шахом белый король.
На рис.12 (приложение 1) показана сгенерированная случайно шахматная позиция, где белый король может уйти от шаха, съев черную ладью.
3.3 Очистка доски
Для очистки доски выбираем пункт меню «Игра->Очистить доску». При этом доска станет пустой, а счетчики оставшихся фигур – максимальными.
Заключение
В ходе выполнения курсовой работы были решены следующие задачи, возникающие при разработке любой шахматной программы:
1) Хранение информации о текущей шахматной позиции.
Для хранения шахматной позиции используется массив размерами 8х8, где пустой клетке соответствует число - 0, белым фигурам – числа от 1 до 6, черным фигурам – числа от 7 до 12.
2) Анализ шахматной позиции – находится ли один из королей под шахом, и является ли шах матом.
При этом решаются две подзадачи:
а) Анализ, объявлен ли шах королям.
Анализ осуществляется проходом по всем фигурам, размещенным на доске, и проверкой, угрожает ли данная фигура королю противоположного цвета.
б) Поиск выхода королей из-под шаха
Для всех свободных клеток, соседних с клеткой, где находится король, решается предыдущая подзадача, т.е. выполняется проверка, есть ли фигуры, угрожающие королю в данной клетке. Если таких фигур нет, то клетка помечается как возможный ход короля.
3) Генерация случайной шахматной позиции
Для этого сначала генерируется число фигур, которые будут размещены на доске, потом генерируются номера фигур, которые можно поместить на доску, и для каждой такой фигуры генерируется номер клетки, где фигура может быть размещена.
4) Создание пользовательского интерфейса, позволяющего задавать шахматную позицию или генерировать ее случайным образом, а также получать результаты анализа.
Разработанный пользовательский интерфейс позволяет неограниченное число раз генерировать шахматную позицию, изменять ее или создавать с нуля путем перетаскивания фигур на доску или с доски в область нерасставленных фигур. Для всех состояний шахматной позиции указывается, в каком состоянии находится король (шах или мат), выделяются цветом фигуры, угрожающие королю, и клетки, куда король может уйти от нападения.
Программа разработана в среде визуального программирования Borland Delphi 7.0. Среда Delphi включает в себя полный набор визуальных средств для быстрой разработки приложений и создания пользовательских интерфейсов. Особенно удобной при разработке интерфейса для игры в шахматы оказалась технология Drag and Drop - прием, когда пользователь может нажать над объектом левую кнопку мыши, и, не отпуская ее, переместить мышь в другое место. При этом образ объекта следует за курсором мыши. При отпускании кнопки объект перемещается в новое место (если это предусмотрено программистом).
При расстановке фигур пользователь может ухватиться за необходимую фигуру в верхней или нижней части главного окна и перетащить ее на ту клетку, на которую хотел бы ее поставить. Так же возможно перетаскивание фигуры с клетки на клетку.
Созданная программа может применяться для обучения игре в шахматы.
В дальнейшем, при разработке и реализации алгоритма сравнения ходов и позиций и алгоритма выбора хода, приложение может быть расширено и предоставлять возможность игры в шахматы с компьютером. При этом алгоритмы, уже разработанные в рамках данной курсовой, будут целиком использоваться при создании игры. Разработанный интерфейс также может использоваться при создании игры и потребует лишь небольших дополнений.
Глоссарий

п/п
Новое понятие
Содержание
1
2
3
1
Инспектор объектов
элемент интегрированной среды Delphi, позволяющий настраивать свойства и события форм и компонентов на этапе проектирования программы
2
Класс
структурный тип, состоящий из фиксированного числа элементов – полей, методов и свойств. Описывается с помощью ключевого слова class.
3
Компонент
класс, порожденный от базового компонента – класса TComponent, а также объект этого класса. Почти все компоненты, за исключением тех, которые «встроены» в другие компоненты (например, ToolButton или TabSheet), располагаются в палитре компонентов и могут быть перенесены на форму при проектировании программы. Форма также считается особым компонентом. Многие свойства компонентов могут быть настроены в инспекторе объектов на этапе проектирования программы.
4
Мат
в шахматах ситуация, когда король находится под шахом, и нет возможности этого шаха избежать
5
Метод
процедура или функция, включенная в описание класса. Совокупность методов определяет «действия», которые могут выполнять объекты данного класса.
6
Модуль
текстовый файл с расширением PAS, содержащий фрагмент программного кода.
7
Объект
переменная классового типа.
8
Палитра компонентов
элемент интегрированной среды Delphi, позволяющий добавлять в приложение компоненты на этапе проектирования программы (компоненты при этом размещаются на форме)
9
Поле
элемент класса, содержащий данные определенного типа. Для различных объектов данного класса поля могут принимать различные значения, определяя тем самым «текущее состояние» объектов
10
Свойство
элемент класса, снабженный особыми методами для своего чтения и записи. Обращение к свойству из программы выглядит как обращение к полю, однако фактически приводит к вызову связанных с ним методов.
11
Событие
особое свойство компонента, позволяющее связывать с компонентом обработчик события — процедуру, которая вызывается в определенной ситуации (например, при получении компонентом фокуса или щелчке на нем мышью). Имена событий начинаются с префикса «On».
12
Форма
класс, порожденный от класса TForm, а также объект этого класса. Форма представляет собой объектную реализацию окна операционной системы Windows. Графическое приложение может включать несколько форм, одна из которых считается главной
13
Шах
шахматная позиция, в которой король атакован вражеской фигурой или пешкой.
14
Шахматная позиция
положение, случившееся в практической партии
Список использованных источников
1. Адельсон-Вельский Г.М., Арлазаров В.Л., Битман А.Р., Донской М.В. Машина играет в шахматы. М., 1983
2. Архангельский А.Я. Программирование в Delphi 6. М., 2006
3. Ботвинник М.М. Алгоритм игры в шахматы. М., 1968
4. Гудман С., Хидетниеми С. Введение в разработку и анализ алгоритмов. М., 1981.
5. Емельянов В.И., Воробьев В.И., Тюрина Т.П. Основы программирования на Delphi. . М., 2005.
6. Зуев. Язык программирования Turbo Pascal 6.0. М., 1992.
7. Корнилов Е. Программирование ШАХМАТ и других логических игр. Спб., 2005
8. Фаронов В.В. Турбо Паскаль. Книга 1. Основы Турбо Паскаля. М., 1992.
9. Фаронов В. В. Delphi 2005. Язык, среда, разработка приложений. Спб., 2007
10. Хомоненко А. Д., Гофман В., Мещеряков Е. и др. Delphi 7. Спб., 2008
Приложение 1. Иллюстрации работы программы
Рис. 12. Вид главного окна программы
Рис. 13. Пример случайной шахматной позиции
Приложение 2. Текст программы
unit ChessGame;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Menus, ExtCtrls, Math;
type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
GroupBox1: TGroupBox;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
Image1: TImage;
GroupBox2: TGroupBox;
GroupBox3: TGroupBox;
BPawnImage: TImage;
Label1: TLabel;
BPawnLabel: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
BRookImage: TImage;
BRookLabel: TLabel;
Label9: TLabel;
BKnightImage: TImage;
BKnightLabel: TLabel;
Label11: TLabel;
BQueenImage: TImage;
BBishopLabel: TLabel;
Label13: TLabel;
Label14: TLabel;
Label15: TLabel;
BBishopImage: TImage;
BQueenLabel: TLabel;
Label17: TLabel;
BKingImage: TImage;
BKingLabel: TLabel;
Label19: TLabel;
WPawnImage: TImage;
WPawnLabel: TLabel;
Label21: TLabel;
WRookImage: TImage;
WRookLabel: TLabel;
Label23: TLabel;
WKnightImage: TImage;
WKnightLabel: TLabel;
Label25: TLabel;
WBishopImage: TImage;
WBishopLabel: TLabel;
Label27: TLabel;
WQueenImage: TImage;
WQueenLabel: TLabel;
Label29: TLabel;
WKingImage: TImage;
WKingLabel: TLabel;
GroupBox4: TGroupBox;
WKingState: TLabel;
GroupBox5: TGroupBox;
BKingState: TLabel;
Shape2: TShape;
Label32: TLabel;
Shape1: TShape;
Label33: TLabel;
Shape3: TShape;
Label34: TLabel;
procedure FormCreate(Sender: TObject);
procedure GroupBox1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
procedure Image1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Image1EndDrag(Sender, Target: TObject; X, Y: Integer);
procedure BPawnImageEndDrag(Sender, Target: TObject; X, Y: Integer);
procedure N3Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure N2Click(Sender: TObject);
private
{ Private declarations }
Field:Tbitmap; // поле на котором будет все прорисоввываться;
Figure:Array[0..1, 1..6] Of TBitmap; {массив для шахматных фигур
0 - белые 1 - черные
1 - пешка 2 - ладья
3 - конь 4 - слон
5 - ферзь 6 - король}
Figure_count:Array[0..1, 1..6] Of byte; {массив для хранения
количества нерасставленных шахматных фигур}
Field_data:Array[0..7, 0..7] Of byte; {массив для хранения данных о расставленных фигурах
1 - Белая пешка 8 - Черная пешка
2 - Белая ладья 9 - Черная ладья
3 - Белый конь 10 - Черный конь
4 - Белый слон 11 - Черный слон
5 - Белый ферзь 12 - Черный ферзь
6 - Белый король 13 - Черный король}
SquareW, SquareB:Tbitmap; // Белая и черная клетки поля
BkPosX, BkPosY:byte; {предыдущие координаты фигуры. Необходимы для перетаскивания
фигуры с одного места на другое}
WhiteX, WhiteY, BlackX, BlackY:byte; // положение белого и черного королей
Procedure ClearField; // очистка доски
Procedure UpdateFigureCount; // обновление данных о количестве не расставленных фигур
Procedure RefreshField; // обновление изображения поля
Procedure DrawFigure(x, y:byte; Figure:Tbitmap); // прорисовка одной фигуры на поле
Procedure BoardAnalysis; // полный анализ шахматной позиции
Procedure AnalysePosition(Var White, Black:boolean; Colored:boolean=true);
// анализ позиции на наличие шахов королям
Function PawnAttackKing(x, y:smallint):boolean; // нападает ли пешка на короля
Function KnightAttackKing(x, y:smallint):boolean; // нападает ли конь на короля
Function RookAttackKing(x, y:smallint):boolean; // нападает ли тура на короля
Function BishopAttackKing(x, y:smallint):boolean; // нападает ли офицер на короля
Function QueenAttackKing(x, y:smallint):boolean; // нападает ли ферзь на короля
Function KingAttackKing(x, y:smallint):boolean; // нападает ли король на короля
Procedure SelectCell(x, y:integer; color:Tcolor=clred); // выделяет клетку рамкой
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
Const
FigureNames:Array[1..6] Of String[6]=('Pawn', 'Rook', 'Knight', 'Bishop', 'Queen', 'King');
BorWKing:Array[boolean] Of byte=(6, 13); // коды белого и черного королей
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
Var
x, y:integer;
Begin
SquareW:=Tbitmap.Create;
SquareB:=Tbitmap.Create;
SquareW.LoadFromFile('wSquare.bmp');
SquareB.LoadFromFile('bSquare.bmp');
For x:=0 To 1 Do
For y:=1 To 6 Do
Begin
Figure[x, y]:=Tbitmap.create;
Figure[x, y].Transparent:=true;
Figure[x, y].TransparentColor:=clred;
If x=0 Then
Figure[x, y].LoadFromFile('White'+FigureNames[y]+'.bmp') Else
Figure[x, y].LoadFromFile('Black'+FigureNames[y]+'.bmp');
End;
Field:=Tbitmap.Create;
Field.Width:=SquareW.Width*8+9;
Field.Height:=SquareW.Height*8+9;
Image1.Picture.Bitmap:=Field;
Image1.Width:=Field.Width;
Image1.Height:=Field.Height;
ClearField;
UpdateFigureCount;
end;
Procedure TForm1.ClearField;
// очистка поля
Var
x, y:byte;
Const
FigureCount:Array[1..6] Of byte=(8, 2, 2, 2, 1, 1);
Begin
For x:=0 To 1 Do
For y:=1 To 6 Do // нет не расставленных фигур
Figure_count[x, y]:=FigureCount[y];
Image1.Canvas.Brush.Color:=clBlack;
Image1.Canvas.FillRect(Image1.Canvas.ClipRect); // Заполнение поля черным цветом
With Image1.Canvas Do
For x:=0 To 7 Do
For y:=0 To 7 Do
Begin // Заполнение поля клетками
Field_data[x, y]:=0;
If (x*7+y)Mod 2<>0 Then
draw(x*(SquareW.Width+1)+1, y*(SquareW.Height+1)+1, SquareW) Else
draw(x*(SquareB.Width+1)+1, y*(SquareB.Height+1)+1, SquareB);
End;
WKingState.Caption:=''; BKingState.Caption:='';
End;
Procedure TForm1.UpdateFigureCount;
// обновление данных о количестве нерасставленных фигур
Begin
wPawnLabel.Caption := IntToStr(Figure_count[0,1]) + ' шт';
If Figure_count[0,1]=0 Then wPawnImage.DragMode:=dmManual Else wPawnImage.DragMode:=dmAutomatic;
wRookLabel.Caption := IntToStr(Figure_count[0,2]) + ' шт';
If Figure_count[0,2]=0 Then wRookImage.DragMode:=dmManual Else wRookImage.DragMode:=dmAutomatic;
wKnightLabel.Caption := IntToStr(Figure_count[0,3]) + ' шт';
If Figure_count[0,3]=0 Then wKnightImage.DragMode:=dmManual Else wKnightImage.DragMode:=dmAutomatic;
wBishopLabel.Caption := IntToStr(Figure_count[0,4]) + ' шт';
If Figure_count[0,4]=0 Then wBishopImage.DragMode:=dmManual Else wBishopImage.DragMode:=dmAutomatic;
wQueenLabel.Caption := IntToStr(Figure_count[0,5]) + ' шт';
If Figure_count[0,5]=0 Then wQueenImage.DragMode:=dmManual Else wQueenImage.DragMode:=dmAutomatic;
wKingLabel.Caption := IntToStr(Figure_count[0,6]) + ' шт';
If Figure_count[0,6]=0 Then wKingImage.DragMode:=dmManual Else wKingImage.DragMode:=dmAutomatic;
bPawnLabel.Caption := IntToStr(Figure_count[1,1]) + ' шт';
If Figure_count[1,1]=0 Then bPawnImage.DragMode:=dmManual Else bPawnImage.DragMode:=dmAutomatic;
bRookLabel.Caption := IntToStr(Figure_count[1,2]) + ' шт';
If Figure_count[1,2]=0 Then bRookImage.DragMode:=dmManual Else bRookImage.DragMode:=dmAutomatic;
bKnightLabel.Caption := IntToStr(Figure_count[1,3]) + ' шт';
If Figure_count[1,3]=0 Then bKnightImage.DragMode:=dmManual Else bKnightImage.DragMode:=dmAutomatic;
bBishopLabel.Caption := IntToStr(Figure_count[1,4]) + ' шт';
If Figure_count[1,4]=0 Then bBishopImage.DragMode:=dmManual Else bBishopImage.DragMode:=dmAutomatic;
bQueenLabel.Caption := IntToStr(Figure_count[1,5]) + ' шт';
If Figure_count[1,5]=0 Then bQueenImage.DragMode:=dmManual Else bQueenImage.DragMode:=dmAutomatic;
bKingLabel.Caption := IntToStr(Figure_count[1,6]) + ' шт';
If Figure_count[1,6]=0 Then bKingImage.DragMode:=dmManual Else bKingImage.DragMode:=dmAutomatic;
End;
procedure TForm1.GroupBox1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
if Source=Image1 then Accept:=true else Accept:=false;
end;
procedure TForm1.Image1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
x:=(X-1)Div(SquareW.Width+1);
y:=(Y-1)Div(SquareW.Height+1);
If Field_data[x, y]=0 Then Accept:=true Else Accept:=false;
end;
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
x:=(x-1)Div(SquareW.Width+1);
y:=(y-1)Div(SquareW.Height+1);
If Field_data[x, y]>0 Then
Begin
Image1.DragMode:=dmAutomatic;
BkPosX:=x; BkPosY:=y;
image1.BeginDrag(true);
End Else image1.EndDrag(false);
end;
procedure TForm1.Image1EndDrag(Sender, Target: TObject; X, Y: Integer);
var
k:byte;
begin
Image1.DragMode:=dmManual;
k:=Field_data[BkPosX, BkPosY];
If Target=Image1 Then
Begin
x:=(x-1)Div(SquareW.Width+1);
y:=(y-1)Div(SquareW.Height+1);
If k=6 Then
Begin
WhiteX:=x; WhiteY:=y;
End
Else
If k=13 Then
Begin
BlackX:=x; BlackY:=y;
End;
Field_data[BkPosX, BkPosY]:=0;
Field_data[x, Y]:=k;
End Else
If target<>Nil Then
Begin

Список литературы

Список использованных источников
1.Адельсон-Вельский Г.М., Арлазаров В.Л., Битман А.Р., Донской М.В. Машина играет в шахматы. М., 1983
2.Архангельский А.Я. Программирование в Delphi 6. М., 2006
3.Ботвинник М.М. Алгоритм игры в шахматы. М., 1968
4.Гудман С., Хидетниеми С. Введение в разработку и анализ алгоритмов. М., 1981.
5.Емельянов В.И., Воробьев В.И., Тюрина Т.П. Основы программирования на Delphi. . М., 2005.
6.Зуев. Язык программирования Turbo Pascal 6.0. М., 1992.
7.Корнилов Е. Программирование ШАХМАТ и других логических игр. Спб., 2005
8.Фаронов В.В. Турбо Паскаль. Книга 1. Основы Турбо Паскаля. М., 1992.
9.Фаронов В. В. Delphi 2005. Язык, среда, разработка приложений. Спб., 2007
10.Хомоненко А. Д., Гофман В., Мещеряков Е. и др. Delphi 7. Спб., 2008
Очень похожие работы
Пожалуйста, внимательно изучайте содержание и фрагменты работы. Деньги за приобретённые готовые работы по причине несоответствия данной работы вашим требованиям или её уникальности не возвращаются.
* Категория работы носит оценочный характер в соответствии с качественными и количественными параметрами предоставляемого материала. Данный материал ни целиком, ни любая из его частей не является готовым научным трудом, выпускной квалификационной работой, научным докладом или иной работой, предусмотренной государственной системой научной аттестации или необходимой для прохождения промежуточной или итоговой аттестации. Данный материал представляет собой субъективный результат обработки, структурирования и форматирования собранной его автором информации и предназначен, прежде всего, для использования в качестве источника для самостоятельной подготовки работы указанной тематики.
bmt: 0.00375
© Рефератбанк, 2002 - 2024