Учебная работа. Реферат: Игра Мозайка на Делфи Delphi

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...
Контрольные рефераты

Учебная работа. Реферат: Игра Мозайка на Делфи Delphi

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

Курский муниципальный технический институт

Кафедра ПО и ВТ

КУРСОВАЯ РАБОТА

по дисциплине «Программирование на языках высочайшего уровня»

игра «МОЗАЙКА»

Выполнил: студентка группы ПО -51

Елизавета Царица

студентка группы ПО -51

Анастасия Зиновьева

Проверил: педагог Петрик Е. А.

Курск 2006

СОДЕРЖАНИЕ

1.ТЕХНИЧЕСКОЕ ЗАДАНИЕ. 4

1.1Введение. 4

1.2Основания для разработки. 4

1.3Назначение разработки. 4

1.3.1Функциональное и эксплуатационное предназначение изделия. 4

1.3.1.1Перечень требований юзера к программному обеспечению.. 4

1.3.1.2Рассмотренные кандидатуры.. 4

1.3.2Требования к программке либо программному изделию.. 5

1.3.2.1Стандарты.. 5

1.3.2.2Программная сопоставимость. 5

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

1.3.2.4Входные данные. 5

1.3.2.5процесс обработки. 6

1.3.2.6Выходные данные. 6

1.3.2.7Результирующие составляющие изделия. 6

1.3.2.8Носители инфы. 6

1.3.2.9Безопасность и секретность. 7

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

1.3.2.11Рестарт. 7

1.3.2.12Мобильность. 7

1.3.2.13Требования к программной документации. 7

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

1.5порядок контроля и приемки. 8

2.РАБОЧИЙ ПРОЕКТ. 8

2.1Введение. 8

2.2Функциональные и эксплуатационные свойства изделия. 8

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

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

2.2.3Результирующие составляющие изделия. 9

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

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

2.2.6Мобильность. 10

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

2.3.1Модуль Unit1. 10

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

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

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

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

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

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

2.3.1.6текст модуля. 11

2.3.2Модуль Unit2. 12

2.3.2.1Входные данные. 12

2.3.2.2Промежуточные данные. 12

2.3.2.3Выходные данные. 12

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

2.3.2.5текст модуля. 12

ПРИЛОЖЕНИЯ.. 13

СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ.. 37

1. ТЕХНИЧЕСКОЕ ЗАДАНИЕ

1.1 Введение

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

1.2 Основания для разработки

Основанием для разработки программки является задание к курсовой работе по предмету «Программирование на языках высочайшего уровня».

1.3 Предназначение разработки

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

1.3.1.1 Список требований юзера к программному обеспечению

игра «Мазайка» обязана обеспечивать последующее:

— если картина собрана вполне, выводится сообщение о окончании игры;

— имеется возможность выбирать рисунки;

— можно начинать игру поновой.

1.3.1.2 Рассмотренные кандидатуры

При постановке задачки на разработку программки «Мазайка» были рассмотрены последующие кандидатуры:

— Программная платформа.

Рассматривались операционные системы Windows и Linux. Была выбрана система Windows в связи с широчайшим ее распространением, доступностью и наличием гибких средств разработки программного обеспечения под эту платформу.

средства разработки. Были рассмотрены последующие средства разработки: Delphi и С++ Builder. Был избран BorlandDelphi7. Выбор обусловлен популярностью и доступностью данного программного обеспечения.

1.3.2 Требования к программке либо программному изделию

1.3.2.1 Эталоны

Разработка программной документации и программки обязана выполняться согласно ЕСПД, ГОСТ 19.701-90, ГОСТ 2.304-88.

1.3.2.2 Программная сопоставимость

Данная программка обязана работать автономно под управлением

операционных систем Windows 98, Windows ME, Windows 2000, Windows XP.

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

Программный продукт должен работать на компах со последующими чертами:

· размер ОЗУ 512 Мб;

· размер твердого диска 40 Гб;

· монитор 17” с разрешением 1024*768;

· звуковая карта.

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

Входными данными программки являются:

· избранная картина;

· сигналы манипулятора «мышь»;

1.3.2.5 процесс обработки

· При запуске программного изделия обязано происходить открытие программной оболочки (формы).

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

Выходными данными программки являются:

· сообщение о выигрыше, если картина собрана.

1.3.2.7 Результирующие составляющие изделия

В набор поставки программного продукта должны заходить последующие

составляющие:

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

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

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

1.3.2.8 Носители инфы

Программка поставляется на дискете размером 3,5 дюйма и объемом 1,44 Мб.

1.3.2.9 Сохранность и секретность

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

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

программка обязана пройти функциональное тестирование и удачно отработать на всех тестах. Испытания разрабатываются на шаге выполнения рабочего проекта.

1.3.2.11 Рестарт

Восстановления данных при программном либо аппаратном сбоях не

предусматривается.

1.3.2.12 Мобильность

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

1.3.2.13 Требования к программной документации

Программная документация обязана разрабатываться согласно ЕСПД, ГОСТ 19.701-90, ГОСТ 2.304-88.

Программная документация обязана включать последующие документы:

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

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

В приложении к документу «Рабочий проект» должен быть приведен листинг начальных текстов программки и блок-схемы алгоритмов.

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

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

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

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

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

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

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

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

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

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

2.1 Введение

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

2.2 Многофункциональные и эксплуатационные свойства изделия

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

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

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

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

· размер ОЗУ не наименее 32 Мб;

· размер твердого диска не наименее 900 Мб;

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

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

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

· размер ОЗУ 128 Мб;

· размер твердого диска 3 Гб;

· файл программки Mazaika.exe;

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

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

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

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

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

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

2.2.6 Мобильность

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

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

2.3.1 Модуль
Unit1

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


Заглавие
Страничка палитры компонент
Изменяемые характеристики
файл

Открыть

Новенькая игра

Выход

О программке

3
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 ((абс(clickx-zx)=1) and (clicky-zy=0) or // проверка на возможность хода

(абс(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.

]]>