Стадии и этапы разработки




Выполнение разработки должно включать две стадии:

· Техническое задание;

· Рабочий проект.

На стадии «Техническое задание» проводится постановка задачи, разработка требований к программному изделию, изучение литературы по задаче и оформление документа «Техническое задание».

На стадии «Рабочий проект» проводится разработка схем алгоритмов для каждого из функциональных модулей, физическое проектирование программного изделия, разработка тестов, тестирование и отладка программных модулей. В заключение данного этапа оформляется документ «Рабочий проект».

Порядок контроля и приемки

Тесты должны быть разработаны на этапе рабочего проектирования программного изделия.

Приемка программного изделия осуществляется при сдаче документально оформленных этапов разработки, передаче программного изделия и проведении испытаний на основе установленных тестов.

РАБОЧИЙ ПРОЕКТ

Введение

Приложение представляет собой игру «Мазайка», для которой не требуется особое оформление в связи с тем, что рабочее поле полностью закрывается загруженной картинкой. Игра затягивает пользователя, прежде всего популярностью близкой игры «Пятнашки», которая не так давно была очень популярна.

Функциональные и эксплуатационные характеристики изделия

Программные ограничения

Данная программа должна работать автономно под управлением операционных систем Windows 95, Windows 98, Windows ME, NT 4.0, Windows 2000, Windows XP.

 

Требования к составу и параметрам технических средств

Для работы программного изделия требуется персональный компьютер, обладающий следующими параметрами:

· объем ОЗУ не менее 32 Мб;

· объем жесткого диска не менее 900 Мб;

· микропроцессор с тактовой частотой не менее 133 МГц;

· монитор с глубиной цвета 16 бит;

· дисковод floppy-дисков.

 

Для бесперебойной работы программы рекомендуем следующие параметры компьютера:

· объем ОЗУ 128 Мб;

· объем жесткого диска 3 Гб;

· микропроцессор с тактовой частотой 333 МГц.

Результирующие компоненты изделия

· исполнительный файл программы Mazaika.exe;

· рабочие модули программы;

· программная документация на изделие.

Требования к надежности

Программа прошла функциональное тестирование и успешно отработала на всех тестах. Тесты разрабатывались на всех этапах выполнения проекта.

Удобство эксплуатации

Программа содержит интуитивный интерфейс, позволяющий без дополнительных подсказок запустить игру.

Мобильность

Для копирования программы с дискеты на компьютер необходимо скопировать содержимое папки «Курсовик» на жесткий диск компьютера.

 

 

Описание модулей

Модуль Unit1

2.3.1.1 Таблица компонентов

Название Страница палитры компонентов Изменяемые свойства Значение
  Form1 - Caption Мазайка
AutoSize false
  MainMenu1 Standard Items Файл Открыть Новая игра Выход   О программе
  OpenPictureDialog1 Dialogs    

 

2.3.1.2 Внешний вид формы

 

2.3.1.2 Входные данные

положение фишек;

2.3.1.3 Промежуточные данные

проверка на наличие «собранности» мозайки;

2.3.1.4 Выходные данные

результат игры.

2.3.1.5 Блок-схемы алгоритмов

Приложение А, стр. 13

2.3.1.6 Текст модуля

Приложение Б, стр. 25

 

 

ПРИЛОЖЕНИЯ

Приложение А






 

 

Приложение Б

 

Листинг модуля Unit1

unit Unit1;

 

interface

 

uses

Windows, Messages, SysUtils, Variants, Classes,

Graphics, Controls, Forms, Dialogs, ExtDlgs, Menus;

 

type

TForm1 = class(TForm)

MainMenu1: TMainMenu;

N2: TMenuItem;

N3: TMenuItem;

N4: TMenuItem;

C1: TMenuItem;

N5: TMenuItem;

OpenPictureDialog1: TOpenPictureDialog;

procedure FormCreate(Sender: TObject);

procedure FormMouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure FormPaint(Sender: TObject);

procedure Load;

procedure Refresh;

procedure New;

procedure N3Click(Sender: TObject);

procedure N2Click(Sender: TObject);

procedure C1Click(Sender: TObject);

procedure N5Click(Sender: TObject);

 

private

{ Private declarations }

public

{ Public declarations }

end;

 

var

Form1: TForm1;

 

implementation

 

{$R *.dfm}

 

const

H=4;

W=4; // размер поля 4*4 клетки

var

widt,heig:integer; // ширина и высота одной клетки

pole:array[1..H,1..W] of byte; // свойства поля

zx,zy:integer; // координаты пустой клетки

pos:array[1..H, 1..W] of byte =((1, 2, 3, 4),(5, 6, 7, 8),(9,10,11,12),(13,14,15, 0)); // выигрышный вариант

pic:TBitmap; // сама картинка

 

procedure TForm1.New;

var

f: string[20]; // файл загружаемой картинки

i,j: integer;

begin

f:='picture10.bmp';

try

pic.LoadFromFile(f);

except

on EFopenError do

begin

ShowMessage('Ошибка загрузки файла');

Form1.Close;

end;

end;

heig:=Pic.Height div H; // Размер клетки

widt:=Pic.Width div W;

ClientWidth:=widt*W; //Размер формы по размеру картинки

ClientHeight:=heig*H;

for i:=1 to H do

for j:=1 to W do

pole[i,j]:=pos[i,j];

Form1.Refresh; // перемещение клеток

Form1.Load; // загрузка поля

end;

 

// проверка на факт выигрыша

function GameOver: boolean;

var

rw,cl:integer;

i:integer;

begin

rw:=1;

cl:=1;

GameOver:=True; // клети расставлены правильно

for i:=1 to 15 do

begin

if pole[rw,cl]<>i then

begin

GameOver:=False;

break;

end;

if cl<4

then inc(cl)

else begin

cl:=1;

inc(rw);

end;

end;

end;

 

// ход в соседнюю пустую клетку

procedure Go(clickx,clicky:integer);

var

r:integer;

begin

if not ((abs(clickx-zx)=1) and (clicky-zy=0) or // проверка на возможность хода

(abs(clicky-zy)=1) and (clickx-zx=0))

then exit;

pole[zy,zx]:=Pole[clicky,clickx]; // осуществим переход из [x,y] в [zx,zy]

pole[clicky,clickx]:=0;

zx:=clickx;

zy:=clicky;

Form1.Load; // перерисовка поля

if GameOver then

begin

pole[4,4]:=16;

Form1.Load;

r:=MessageDlg('Вы выиграли!'+ #13+'Сыграем ещё?',mtInformation,[mbYes,mbNo],0);

if r=mrNo then Form1.Close;

Form1.New;

end;

end;

 

// клик по клетке

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X,Y:Integer);

var

clickx,clicky:integer; // координаты кликаемой клетки

begin

clickx:=Trunc(X/widt)+1; // переведём щелчок мыши в координаты клетки

clicky:=Trunc(Y/heig)+1;

Go(clickx,clicky);

end;

 

procedure TForm1.Load; // отвечает за загрузку поля

var

into,outof:Trect; // ввод и вывод

lx,ly:integer; // координаты верхнего левого угла ввода

i,j:integer;

begin

for i:=1 to W do // отслеживает содержимое клеток

for j:=1 to H do

begin

ly:=((pole[i,j]-1) div W) * heig; // присвоим координатам верхнего левого угла ввода номер картинки

lx:=((pole[i,j]-1) mod W) * widt;

into:=Bounds(lx,ly,widt,heig);

outof:=Bounds((j-1)*widt,(i-1)*heig,widt,heig);

if pole[i,j]<>0

then Canvas.CopyRect(outof,pic.Canvas,into)

else Canvas.Rectangle((j-1)*widt,(i-1)*heig,j*widt,i*heig);

end;

end;

 

procedure TForm1.refresh; // "тусует" фрагменты картинки

var

x1,y1:integer; // координаты пустой клетки

x2,y2:integer; // взять картинку из этой координаты и поменять её с пустой

n:integer; // направление возможного хода

i:integer;

begin

x1:=4;

y1:=4;

randomize;

for i:=1 to 150 do // варианты расстановки

begin

repeat

x2:=x1;

y2:=y1;

n:=random(4)+1;

case n of

1:dec(x2);

2:inc(x2);

3:dec(y2);

4:inc(y2);

end;

until (x2>=1) and (x2<=4) and (y2>=1) and (y2<=4);

pole[y1,x1]:=pole[y2,x2]; // определим фрагмент перемещения

pole[y2,x2]:=0;

x1:=x2;

y1:=y2;

end;

zx:=x1; // координаты пустой клетки

zy:=y1;

end;

 

procedure TForm1.FormCreate(Sender: TObject);

begin

pic:=TBitMap.Create;

New;

end;

 

procedure TForm1.FormPaint(Sender: TObject);

begin

Form1.Load;

end;

 

procedure TForm1.N3Click(Sender: TObject);

begin

close;

end;

 

procedure TForm1.N2Click(Sender: TObject);

var i,j: integer;

begin

heig:=Pic.Height div H; // Размер клетки

widt:=Pic.Width div W;

ClientWidth:=widt*W; //Размер формы по размеру картинки

ClientHeight:=heig*H;

for i:=1 to H do

for j:=1 to W do

pole[i,j]:=pos[i,j];

Form1.Refresh; // перемещение клеток

Form1.Load; // загрузка поля

end;

 

procedure TForm1.C1Click(Sender: TObject);

begin

showmessage('Программа к курсовому проекту');

end;

 

procedure TForm1.N5Click(Sender: TObject);

var

f: string[20]; // файл загружаемой картинки

i,j: integer;

begin

openpicturedialog1.Execute;

try

pic.LoadFromFile(openpicturedialog1.FileName);

except

on EFopenError do

begin

ShowMessage('Ошибка загрузки файла');

Form1.Close;

end;

end;

heig:=Pic.Height div H; // Размер клетки

widt:=Pic.Width div W;

ClientWidth:=widt*W; //Размер формы по размеру картинки

ClientHeight:=heig*H;

for i:=1 to H do

for j:=1 to W do

pole[i,j]:=pos[i,j];

Form1.Refresh; // перемещение клеток

Form1.Load; // загрузка поля

end;

 

end.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-06-03 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: