Игра "Мозаика"
Рассмотрение технических характеристик приложения. Постановка задачи и описание алгоритма. Организация входных и выходных данных. Разработка рабочего проекта, его технические характеристики. Спецификация, листинг и описание программы, её тестирование.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | реферат |
Язык | русский |
Дата добавления | 22.02.2015 |
Размер файла | 316,7 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Введение
Тема: Игра «Мозаика».
Цель: Я решила написать игровое приложение, главная задача которого заставить пользователя отвлечься от повседневных проблем, т.е. развлечься, что, собственно, является задачей всех игр.
Условия задачи:
Игра «Мозаика» должна обеспечивать следующее:
- если картинка собрана полностью, выводится сообщение о завершении игры;
- имеется возможность выбирать картинки;
- можно начинать игру заново. Назначение и область применения
Приложение представляет собой игру «Мозаика», для которой не требуется особое оформление в связи с тем, что рабочее поле полностью закрывается загруженной картинкой. Игра затягивает пользователя, прежде всего популярностью близкой игры «Пятнашки», которая не так давно была очень популярна. Программа содержит интуитивный интерфейс, позволяющий без дополнительных подсказок запустить игру.
приложение тестирование алгоритм листинг
Технические характеристики
Минимальное:
Процессор: |
PentiumII-300MHz |
|
ОЗУ: |
64 Mb |
|
Клавиатура |
Стандарт |
|
Диск: |
10Mb свободного пространства |
|
ОC: |
ОтWindows'95 и выше |
и выше предложенных характеристик.
Постановка задачи
Разработать программу которая представляет собой игру «Мазайка», для которой не требуется особое оформление в связи с тем, что рабочее поле полностью закрывается загруженной картинкой. Игра затягивает пользователя, прежде всего популярностью близкой игры «Пятнашки», которая не так давно была очень популярна.
Описание алгоритма
Рис. 1.Блок-схемы алгоритмов работы программы.
Рис. 1.2.Блок-схемы алгоритмов работы программы.
Рис. 1.3.Блок-схемы алгоритмов работы программы.
Рис. 1.4.Блок-схемы алгоритмов работы программы
Организация входных и выходных данных
Входными данными программы являются:
- выбранная картинка;
- сигналы манипулятора «мышь»;
Выходными данными программы являются:
- сообщение о выигрыше, если картинка собрана.
Технические характеристики
Для разработки приложения “Мазайка” используем среду визуального программирования Delphi 7.0. Проект программы содержит 1 окно Form1 - Входные данные: положение фишек;
Промежуточные данные: проверка на наличие «собранности» мазайки;
Выходные данные: результат игры. (Рис. 2).
Рис. 2. Главное окно программы - Form1
Компонент |
Свойства/События |
Значение |
|
TForm1 |
Caption |
Игра «Мазайка» |
|
TOpenPictureDialog |
OnClick |
Загрузка картинки |
|
TMainMenu |
Cартion |
Оформление меню |
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;
Спецификация программы
№ |
Название |
Страница палитры компонентов |
Изменяемые свойства |
Значение |
|
1 |
Form1 |
- |
Caption |
Мазайка |
|
AutoSize |
false |
||||
2 |
MainMenu1 |
Standard |
Items |
Файл Открыть Новая игра Выход О программе |
|
3 |
OpenPictureDialog1 |
Dialogs |
Листинг программы
Листинг модуля 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.
Описание программы
Приложение представляет собой игру «Мазайка», для которой не требуется особое оформление в связи с тем, что рабочее поле полностью закрывается загруженной картинкой. Игра затягивает пользователя, прежде всего популярностью близкой игры «Пятнашки», которая не так давно была очень популярна. Программа содержит интуитивный интерфейс, позволяющий без дополнительных подсказок запустить игру.
Тестирование программы
Запускаем файл игра «Мазайка».ехе . Появляется изображение, это изображение расположено в случайном порядке ,которое нужно пользователю собрать Программа прошла функциональное тестирование и успешно отработала на всех тестах. Тесты разрабатывались на всех этапах выполнения проекта.
Заключение
Среда разработки приложений Deplhi позволяет создавать полноценные приложения, работающие в ОС Windows.
Разработанная программа игра «Мозаика» показывает эффективность использования языков программирования и, в частности, Delphi 7.0 для создания приложений, необходимых человеку в повседневной жизни.
Список использованных источников
1. Фаронов В. Delphi 7. Учебный курс / В. Фаронов. - М.: Нолидж, 2003. - 580 с.
2. Культин Н. Delphi 7. Основы программирования в Delphi 7 / Н. Культин. - СПб.: БХВ-Петербург, 2003. - 480 с.
3. Вальвачев А.Н., Сурков К.А., Сурков Д.А., Четырько Ю.М. Программирование на языке Delphi. Глава 7. Проект приложения. - [Электронный ресурс] - Режим доступа: <http://www.interface.ru/home.asp?artId=66
4. Портал знаний - http://www.znannya.org
5. Delphi (язык программирования) - http://ru.wikipedia.org
6. HelpDelphi в помощь начинающим( http://helpdelphi.ru/)
7. Г.В.Галисеев, «Программирование в среде Delphi 7. Самоучитель», М., 2004 год.
8. А. Н. Вальвачев, К. А. Сурков, Д. А. Сурков, Ю. М. Четырько. Программирование на языке Delphi. Учебное пособие . -- 2005
9. Фундаментальные алгоритмы и структуры данных в Delphi - Бакнелл Д.
10. Delphi 2007. Справочное пособие. Язык Delphi, классы, функции Win32 и .NET - Архангельский А.Я.
Размещено на Allbest.ru
Подобные документы
Назначение и область применения, технические характеристики, постановка задачи, описание алгоритма и организация входных и выходных данных для программы. Разработка, описание логической структуры, используемые технические средства и условия выполнения.
курсовая работа [969,3 K], добавлен 26.03.2009Разработка эскизного и технического проектов программы, ее назначение и область применения, описание алгоритма, организация входных и выходных данных. Выбор состава технических и программных средств, разработка рабочего проекта, спецификация программы.
курсовая работа [700,6 K], добавлен 26.01.2010Разработка Windows-приложения, представляющего собой компьютерную игру "Кости". Организация входных и выходных данных. Минимальные требования. Выбор состава технических и программных средств. Спецификация программы, ее описание и внедрение, тестирование.
курсовая работа [475,8 K], добавлен 18.07.2012Разработка эскизного и технического проектов программы, ее назначение и область применения, описание алгоритма, организация входных и выходных данных. Выбор состава технических и программных средств, разработка рабочего проекта, спецификация программы.
курсовая работа [159,8 K], добавлен 26.01.2010Разработка эскизного и технического проектов программы, моделирующей игру "Кости". Постановка задачи, описание алгоритма; написание программы, организация входных и выходных данных; выбор программных средств; спецификация, текст, условия выполнения.
курсовая работа [93,8 K], добавлен 11.02.2012Разработка эскизного и технического проектов программы, ее назначение и область применения, технические характеристики. Организация входных и выходных данных, выбор состава технических и программных средств. Текст программы, ее описание и тестирование.
курсовая работа [1,3 M], добавлен 15.11.2009Разработка эскизного и технического проекта программы идентификации личности по отпечатку. Назначение и область применения, описание алгоритма, входных и выходных данных. Выбор состава технических и программных средств. Тестирование и внедрение продукта.
курсовая работа [61,9 K], добавлен 12.05.2015Разработка эскизного и технического проекта программы игры "Собери картинку". Назначение и область применения, основные технические характеристики. Разработка рабочего проекта, разработка и спецификация программы игры. Описание и тестирование программы.
курсовая работа [22,6 K], добавлен 10.06.2010Разработка эскизного и технического проектов приложения ведения базы данных торговой фирмы для Windows, его назначение и применение, технические характеристики. Постановка задачи, организация входных и выходных данных, технические и программные средства.
курсовая работа [671,6 K], добавлен 19.11.2009Технические характеристики: постановка задачи, описание основных типов входных и выходных данных. Описание алгоритмов основной программы и процедур удаления и исправления данных в таблицах. Выбор языка программирования. Технико-экономические показатели.
курсовая работа [478,1 K], добавлен 28.12.2012