Реферат: Игра "Мозайка" на Делфи (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. Был выбран Borland Delphi7.Выбор обоснован популярностью и доступностью данного программного обеспечения.

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 Гб;

·    микропроцессор Intel Celeron 400 МГц; 

·    монитор 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.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, Windows ME, NT 4.0, Windows 2000, Windows XP.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2.3  Описание модулей2.3.1  Модуль Unit1

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

№ Название Страница палитры компонентов Изменяемые свойства Значение 1 Form1 - Caption Мазайка AutoSize false 2 MainMenu1 Standard Items

Файл

     Открыть

     Новая игра

     Выход

О программе

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 ((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

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

     elseCanvas.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./>

еще рефераты
Еще работы по информатике, программированию