Создание игры "Сапер"
Разработка игры "Сапер" с расположением мин на основе нескольких методов генерации случайных чисел. Проектирование интеллектуальных систем. Интерфейс компьютерной игры. Свойства компонента TLabel. Реализация игры посредством использования языка Delphi.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 06.06.2012 |
Размер файла | 1,1 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
12
Введение
Игра - непременный спутник развития человечества. На стадии игры выполняется чрезвычайно важные функции. Они использовались для социализации подрастающего поколения, для подготовки к коллективной охоте, для тренировки. Но учебно-тренировочные функции были не главными в древней игровой деятельности; главное поле игры.
Игра - основной вид деятельности ребенка. С.Л. Рубинштейн отмечал, что игра хранит и развивает. По мнению Д.Б. Эльконина, «в игре не только развиваются или заново формируются отдельные интеллектуальные операции, но и коренным образом изменяется позиции ребенка и взрослого в отношении к окружающему миру и формируется механизм возможной смены позиции и координации своей точки зрения с другими возможными точками зрения ».
Целью данной курсовой работы является создание игры «Сапер», ее теории и практики. Сапер - это обманчиво простая игра для развития и логики, которая стала одной из самых популярных игр. Цель игры: найти пустые ячейки, но не трогать ячейки, содержащие мины.
1. Проектирование интеллектуальных систем
Интеллектуальная система - это техническая или программная система, способная решать задачи, традиционно считающиеся творческими, принадлежащие конкретной предметной области, знания о которой хранятся в памяти такой системы. Структура интеллектуальной системы включает три основных блока - базу знаний, решатель и интеллектуальный интерфейс. Интеллектуальные системы изучаются группой наук, объединяемых под названием «искусственный интеллект».
Игра сапер достаточно проста, хотя в этой игре исход очень часто зависит от удачи. Итак, для того, чтоб и мы могли получить прибыль от логической игры сапер, необходимо придерживаться определенной стратегии. Психологическая стратегия не являет собой основу стратегии, это обычное дополнение, которое заключается только в том, что необходимо делать расчет на каждую игру, знать то, что очень часто после открытия первой клетки логика не позволяет нам контролировать процесс игры, и в этом случае необходимо представить себе и примерно рассчитать исход игры, трезво оценив свои шансы требуется сосредоточится, при этом не надо спешить, ведь сапер - игра, которая не требует от нас скорости мышления, стратегия скорее заключается в том, что мы не должны надеяться на удачу.
2. Разработка игры «Сапер»
Сапер представляет собой логическую игру, основной целью которой является нахождения всех спрятанных бомб на минном поле. Ваша задача открыть все ячейки поля, не содержащие бомб, заблокировав(пометив) при этом ячейки, в которых расположены бомбы. Поле игры задано в виде двухмерного массива. В этом массиве расположены ячейки. Изначально они все закрыты. Ячейки могут быть пустые, с цифрами и с бомбами. Для каждой такой ячейки мы задаем класс. При нажатии левой клавиши мыши открывается ячейка, при нажатии правой кнопки, выставляется флажок, при этом левой кнопкой мыши вы уже не можете нажать на заблокированную ячейку, но правой кнопкой можно снять пометку флажка. Ячейка с цифрой обозначает то, сколько мин находится в округе этой ячейки. При первом нажатии кнопки мыши на ячейку не может открыться ячейка с бомбой.
Игра считается проигранной, если вы открыли ячейку с бомбой. Игра считается выигранной, если на игровом поле все ячейки с бомбами отмечены и все остальные ячейки - открыты.
2.1 Интерфейс компьютерной игры «Сапер»
Интерфейс программы был создан с помощью стандартной библиотеки SDL.
Для реализации интерфейса игры в данном пункте используются следующие компоненты:
Компонент TLabel
TLabel служит для отображения текста на экране. Можно изменить шрифт и цвет метки, если дважды щелкнуть на свойство Font в Инспекторе Объектов. Видно, что это легко сделать и во время выполнения программы, написав всего одну строчку кода.
Этот компонент доступен из модуля STDCTRLS, и находится на странице Палитры компонентов Standard.
Компонент представляет собой статический текст. С помощью этого компонента на рабочей поверхности формы можно отобразить информацию, сделать пояснения и показать названия других компонентов. Но он имеет и другую важную функцию -- если в составе текста TLabel есть символы-акселераторы, информация об их нажатии может передаваться от TLabel другому элементу управления.
Свойства компонента приведены в табл.2.1:
Таблица 2.1 Свойства компонента TLabel
Свойство |
Описание |
|
(Pb) property Caption: TCaption; TCaption = string[255]; |
Содержит строку с выводимым текстом. |
|
(Pb) property Alignment: TAlignment; |
Устанавливает правило выравнивания текста -- по правому, левому краю или по центру клиентской области. |
|
(Pb) property AutoSize: Boolean; |
В случае True происходит автоматическое приведение размеров компонента к размерам текста и высоте шрифта. |
|
(Pb) property FocusControl: TWinControl; |
Определяет оконный компонент, которому посылаются сообщения о вводе акселератора. |
|
(Pb) property Transparent: Boolean; |
Прозрачность фона компонента. Если свойство установлено в True, то при перерисовке элемента управления не происходит закрашивание клиентской области. В противном случае -- происходит закрашивание кистью bsSolid и цветом Color. |
|
(Pb) property WordWrap: Boolean; |
Определяет возможность разрыва слов в случае, если длина выводимого текста превышает ширину компонента. |
Компонент TImage
TImage - отображает графическое изображение на форме. Воспринимает форматы BMP, ICO, WMF. Если картинку подключить во время дизайна программы, то она прикомпилируется к EXE файлу.
Этот компонент доступен из модуля EXTCTRLS, и находится на странице Палитры компонентов Additional.
Этот компонент служит надстройкой над классом TPicture и замыкает всю иерархию графических объектов VCL. Он предназначен для показа на форме изображения: битовой карты (TBitmap), метафайла (TMetafile), значка (TIcon).
Свойство (Pb) property Picture: TPicture; служит контейнером для графического объекта одного из перечисленных классов.
В качестве канвы используется канва объекта Picture. Graphic -- только если поле Graphic ссылается на объект класса TBitmap:
(Pb) property Canvas: TCanvas;
Если это не так, то попытка обращения к свойству вызовет исключительную ситуацию EInvalidOperation, так как рисовать на метафайле или значке нельзя.
Следующие три свойства определяют, как именно Tpicture располагается в рабочей области компонента:
(Pb) property AutoSize: Boolean;
-- означает, что размеры компонента настраиваются по размерам содержащегося в нем графического объекта. Устанавливать его в True нужно перед загрузкой изображения из файла или буфера обмена;
(Pb) property Stretch: Boolean;
-- если это свойство установлено в True, то изображение "натягивается" на рабочую область, при необходимости уменьшая или увеличивая свои размеры. Если оно установлено в False, то играет роль следующее свойство;
(Pb) property Center: Boolean;
-- если это свойство установлено в True, изображение центрируется в пределах рабочей области. В противном случае -- располагается в ее верхнем левом углу.
Компонент TEdit
TEdit - стандартный управляющий элемент Windows для ввода. Он может быть использован для отображения короткого фрагмента текста и позволяет пользователю вводить текст во время выполнения программы.
Этот компонент доступен из модуля STDCTRL, и находится на странице Палитры компонентов Standard.
Этот компонент не содержит собственного кода, в нем только опубликованы свойства его предка TCustomEdit. Он представляет собой редактируемую строку (далее -- просто редактор).
Стиль обрамления этого компонента
(Pb) property BorderStyle: TBorderStyle;
по умолчанию равен bsSingle.
Если свойство
(Pb) property AutoSize: Boolean;
равно True, компонент изменяет свою высоту в зависимости от размера шрифта (свойство Font). Для того чтобы изменения имели место, должен еще быть установлен стиль обрамления bsSingle.
Вводимый в редактор текст может автоматически подвергаться некоторым преобразованиям.
Преобразование, задаваемое свойством CharCase, позволяет автоматически преобразовывать все символы только в верхний или только в нижний регистр:
(Pb) property CharCase: TEditCharCase;
TEditCharCase = (ecNormal, ecUpperCase, ecLowerCase) ;
По умолчанию установлен стиль ecNormal и преобразования не происходит.
Аналогично, свойство
(Pb) property OEMConvert: Boolean;
определяет необходимость автоматического преобразования вводимых символов из кодировки OEM в ANSI и обратно. Такое свойство часто бывает нужно при обработке текста в кодировке MS-DOS.
Два следующих свойства описывают поведение выделенного текста при переходе фокуса. Первое из них
(Pb) property AutoSelect: Boolean;
описывает реакцию редактирующего элемента при получении фокуса. Если оно установлено в True (по умолчанию это так), то при получении фокуса ввода весь текст в нем выделяется независимо от состояния свойства SelText. Если AutoSelect установлено в False, то при получении фокуса выделяется лишь то, что было выделено до его утери.
После утери фокуса редактором выделенный в нем текст обычно теряет цветовое выделение. Чтобы оно оставалось, установите в False второе свойство:
(Pb) property HideSelection: Boolean;
На длину текста может быть наложено ограничение. Свойство
(Pb) property MaxLength: Integer;
определяет максимальную длину текста редактора в символах. Если значение этого свойства равно 0, то ограничений на длину текста нет.
Свойство PasswordChar предназначено для ввода пароля с использованием редактора:
(Pb) property PasswordChar: Char;
Его значение -- это символ, используемый для отображения вместо любых вводимых символов.
Можно запретить возможность редактирования текста. Если значение
свойства: (Pb) property ReadOnly: Boolean;
равно True, текст изменить нельзя.
Можно отследить изменения текста в редакторе, обрабатывая поступающие события:
(Pb) property OnChange: TNotifyEvent ;
Компонент TButton
TButton позволяет выполнить какие-либо действия при нажатии кнопки во время выполнения программы. В Delphi все делается очень просто. Поместив TButton на форму, по двойному щелчку можно создать заготовку обработчика события нажатия кнопки. Далее нужно заполнить заготовку кодом:
procedure TForm1.Button1Click(Sender: TObject);
begin
MessageDlg('Are you there?',mtConfirmation,mbYesNoCancel,0);
end;
Этот компонент доступен из модуля STDCTRL, и находится на странице Палитры компонентов Standard.
Двойной щелчок на кнопке не предусмотрен.
Основным событием, связанным с нажатием кнопки (любым способом) является:
(Pb) property OnClick: TNotifyEvent;
Под "любым способом" здесь подразумевается щелчок мышью, нажатие комбинации клавиши -- акселератора, нажатие или (только для
некоторых кнопок) или вызов метода Click из программы.
Текст кнопки, появляющийся на ее поверхности, определен в свойстве:
(Pb) property Caption: string;
Если в составе текста есть амперсанд ('&'), то следующий за ним символ
используется в акселераторе, и нажатие комбинации клавиш <Аlt>+<символ>
вызывает нажатие кнопки.
Водораздел среди кнопок проходит по тому, что именно означает нажатие. Ряд кнопок -- TRadioButton, TCheckBox и группа TRadioGroup -- предназначен для ввода или переключения фиксированных параметров, и программиста более интересует их состояние в некоторый момент времени, чем сам факт нажатия. Кнопки TButton, TSpinButton и TBitBtn напротив, как правило, своим нажатием инициируют немедленные действия. Кнопка TSpeedButton может успешно служить для решения обеих задач.
Как уже было сказано, нажатие влечет за собой OnClick. Но это не означает, что всегда нужно писать код для обработки всех нажатий. Например, исключением из этого правила является использование кнопок в модальных формах.
Модальная форма, или модальный диалог -- специальная разновидность окон Windows (и форм Delphi), предназначенная для ввода пользователем необходимых программе данных или выбора одного ответа из нескольких вариантов. Обычно при этом ему редоставляется несколько кнопок, соответствующих вариантам. Вплоть до получения ответа в модальном диалоге пользователь не может переключиться на другие окна той же задачи, а в системном модальном диалоге -- и на другие задачи. Для использования в таких случаях предназначены стандартная кнопка Windows TButton и ее младшая сестра TBitBtn, отличающаяся только наличием картинки на ее поверхности.
При их нажатии значение свойства ModalResult кнопки передается одноименному свойству формы, где такое изменение означает вывод формы из модального состояния и ее закрытие:
(Pb) property ModalResult: TModalResult;
TModalResult = Low(Integer) ..High(Integer);
В модальной форме могут быть предусмотрены две специальные кнопки, соответствующие положительному и отрицательному решениям. Одна из них срабатывает при нажатии на клавиатуре , другая -- . Любая кнопка может получить такой статус, установив в True соответственно одно из свойств:
(Pb) property Default: Boolean;
(Pb) property Cancel: Boolean;
У двух рассмотренных кнопок результат, который при нажатии кнопки
передается модальной форме, будет соответственно равен mrOk и mrCancel.
Компонент TBevel
Bevel (фаска) располагается на вкладке "Additional" Палитры Инструментов. Его назначение в приложении чисто декоративное.
Внешний вид полученной фигуры будет зависеть от свойства
Shape:
· bsBox -прямоугольник,
· bsFrame - рамка,
· bsBottomLine - линия снизу,
· bsLeftLine - линия слева,
· bsRightLine - линия справа,
· bsSpacer - область для разметки, во время работы программы не видна,
· bsTopLine - линия сверху.
Свойство Style задает внешний вид оформления фаски:
· bsLowerd (фаска вогнутая по отношению к поверхности размещения),
· bsRaised (фаска выпуклая по отношению к поверхности размещения).
2.2 Реализация игры посредством использования языка Delphi
сапер игра компьютерный интерфейс
Правила игры
Если открыта ячейка с миной, игра проиграна. Если открыта пустая ячейка, игра продолжается. Если в ячейке указано число, оно показывает, сколько мин скрыто в восьми ячейках вокруг данной. Это число помогает понять, где находятся безопасные ячейки.
При запуске программы, вы можете выбрать уровень сложности “Новичок”, “Любитель”, “Профи” или же можете установить количество бомб, количество строк и столбцов.
Далее вы щелкаете на ячейку, чтобы открыть ее, где предположительно нет бомбы.
Путем дальнейших размышлений, вы щелкаете правой кнопкой мышки на ячейках, где должны располагаться бомбы. Количество бомб вокруг ячейки написано в нижнем левом углу игрового поля.
Проигрыш или выигрыш определяются в зависимости от того, все ли бомбы отмечены и все ли поля без бомб раскрыты, если вы попадаете на ячейку с бомбой, вы проиграли.
ЗАКЛЮЧЕНИЕ
В результате выполнения данной курсовой работы был получен игровой программный продукт, названный «Сапер». Было проведено исследование компонентов программной среды Borland Delphi 7.0, которые использовались при создании игры. Систематизированы и закреплены практические навыки использования ЭВМ, программного обеспечения, существующих средств обслуживания системных программистов, а также теоретические знания по основным разделам дисциплины "Основы алгоритмизации и программирования ".
В данной работе реализуется интеллектуальная игра «Сапер». В этой игре нужно нажать на клеточки так чтобы не попасть на бомбу, или игра будет проиграна.
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ
1. Кэнту М. «Delphi 7 для профессионалов.
2. Интернет портал http://delphiworld.narod.ru
ПРИЛОЖЕНИЕ 1
Интерфейс программы
рис. 1 Главное окно
рис. 2 Окно игры «Новичок 10 баллов»
рис. 3 Окно игры «Новичок 8 баллов»
рис. 4 Окно игры проигрыша
рис. 5 Окно игры выигрыша
Приложение 2
Листинг программы
const
sGrid=8;
var
Form1: TForm1;
pole: array [1..50,1..50] of char;
open,flags: array [1..50,1..50] of boolean;
i,j,lFlags,xOF,yOF,lBomb,index,CreateBomb_x,CreateBomb_y,nBomb,nb,m,n: integer;
sDynamic: char;
gFree,First_Click: boolean;
s: string;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
First_Click:=true;
Form1.Image1.Visible:=true;
Form1.Image1.Enabled:=true;
if Form1.LabeledEdit1.Enabled and
Form1.LabeledEdit2.Enabled and
Form1.LabeledEdit3.Enabled then
begin
n:= StrToInt(Form1.LabeledEdit1.Text);
m:= StrToInt(Form1.LabeledEdit2.Text);
nBomb:= StrToInt(Form1.LabeledEdit3.Text);
end;
Form1.Label1.Caption:='';
Form1.Image1.Width:=m*(sGrid*2)+sGrid*2;
Form1.Image1.Height:=n*(sGrid*2)+sGrid*2+20;
Form1.Label2.Left:=Form1.Image1.Left+25;
Form1.Label2.Top:=Form1.Image1.Top+Form1.Image1.Height - 28;
Form1.Label2.Caption:=IntToStr(nBomb);
for i:= 1 to 50 do
for j:= 1 to 50 do
begin
open[i,j]:=false;
pole[i,j]:='0';
flags[i,j]:=false;
end;
Form1.LabeledEdit1.Enabled:=false;
Form1.LabeledEdit2.Enabled:=false;
Form1.LabeledEdit3.Enabled:=false;
Form1.Button1.Enabled:=false;
Form1.Repaint;
end;
procedure TForm1.FormPaint(Sender: TObject);
procedure dBomb(i,j:integer);
begin
with Form1.Image1.Canvas do
begin
Brush.Color:=RGB (0,0,0);;
Pen.Style:=psClear;
ellipse(i+7,j+7,i-5,j-5);
Pen.Style:=psSolid;
Pen.Color:=RGB (0,0,0);
Pen.Width:=3;
moveto(i,j+6);
lineto(i,j-6);
moveto(i+6,j);
lineto(i-6,j);
Pen.Width:=1;
end;
end;
procedure dFlag(i,j:integer);
var k: byte;
begin
with Form1.Image1.Canvas do
begin
Pen.Color:=RGB (0,0,0);
Pen.Width:=2;
moveto(i,j);
Pen.Color:=RGB (255,0,0);
for k:=6 downto 1 do
begin
lineto(i+5,j-3);
lineto(i,j-k);
end;
Pen.Color:=clBlack;
moveto(i,j+5);
lineto(i,j-6);
Pen.Width:=1;
end;
end;
begin
lFlags:=0;
with Form1.Image1.Canvas do
begin
Brush.Color:= RGB (255,255,255);
Rectangle(0,0,Form1.Image1.Width,Form1.Image1.Height);
for i:= 1 to n do
for j:= 1 to m do
begin
if flags[i,j] then inc(lFlags);
if (pole[i,j] = '9') then Brush.Color:= RGB (100,100,100)
else Brush.Color:= RGB (230,230,230);
Rectangle(j*(sGrid * 2)+sGrid,i*(sGrid * 2)+sGrid,
j*(sGrid * 2)-sGrid,i*(sGrid * 2)-sGrid);
Font.Name:='Arial Black';
Font.Size:=sGrid;
Font.Style:=[fsBold];
case pole[i,j] of
'1': Font.Color:= RGB (0,0,255);
'2': Font.Color:= RGB (0,100,0);
'3': Font.Color:= RGB (255,0,0);
'4','5','6','7','8': Font.Color:= RGB (0,0,100);
'9': Font.Color:= RGB (0,0,0);
end;
Brush.Style:=bsClear;
if pole[i,j] <> '0' then
if (ord(pole[i,j]) > ord('0')) and
(ord(pole[i,j]) < ord('8')) then
TextOut(j*(sGrid * 2) - (sGrid div 2),
i*(sGrid * 2) - (sGrid div 2)-4,pole[i,j])
else
if pole[i,j] = '9' then
dBomb(j*(sGrid * 2),i*(sGrid * 2)){
TextOut(j*(sGrid * 2) - (sGrid div 2),
i*(sGrid * 2) - (sGrid div 2),chr(64)) }
else
TextOut(j*(sGrid * 2) - (sGrid div 2),
i*(sGrid * 2) - (sGrid div 2)-4,' ');
if not open[i,j] then
begin
Brush.Color:= RGB (150,150,150);
Rectangle(j*(sGrid * 2)+sGrid,i*(sGrid * 2)+sGrid,
j*(sGrid * 2)-sGrid,i*(sGrid * 2)-sGrid);
if flags[i,j] then
begin
dFlag(j*(sGrid * 2)-1,i*(sGrid * 2))
{Font.Color:=RGB (170,0,170);
TextOut(j*(sGrid * 2) - (sGrid div 2),
i*(sGrid * 2) - (sGrid div 2),chr(208))}
end;
end;
end;
dBomb((sGrid * 2),(n+1)*(sGrid * 2)+4)
end;
Label2.Caption:=IntToStr(nBomb - lFlags);
end;
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var ii,jj: integer;
procedure Game_Over;
// окончание игры
var i,j:integer;
begin
for i:= 1 to n do
for j:= 1 to m do
if pole[i,j] = '9' then open[i,j]:=true;
end;
procedure Open_Field;
var i,j:integer;
begin
sDynamic:='a';
pole[xOF,yOF]:='b';
gFree:=true;
while gFree do
begin
gFree:=false;
sDynamic:=chr(ord(sDynamic)+1);
for i:= 1 to n do
for j:= 1 to m do
if pole[i,j] = sDynamic then
begin
open[i,j]:=true;
if pole[i+1,j] = '0' then begin pole[i+1,j]:=chr(ord(sDynamic)+1); gFree:=true; end
else open[i+1,j]:=true;
if pole[i,j+1] = '0' then begin pole[i,j+1]:=chr(ord(sDynamic)+1); gFree:=true; end
else open[i,j+1]:=true;
if pole[i-1,j] = '0' then begin pole[i-1,j]:=chr(ord(sDynamic)+1); gFree:=true; end
else open[i-1,j]:=true;
if pole[i,j-1] = '0' then begin pole[i,j-1]:=chr(ord(sDynamic)+1); gFree:=true; end
else open[i,j-1]:=true;
if pole[i+1,j+1] = '0' then begin pole[i+1,j+1]:=chr(ord(sDynamic)+1); gFree:=true; end
else open[i+1,j+1]:=true;
if pole[i-1,j+1] = '0' then begin pole[i-1,j+1]:=chr(ord(sDynamic)+1); gFree:=true; end
else open[i-1,j+1]:=true;
if pole[i-1,j-1] = '0' then begin pole[i-1,j-1]:=chr(ord(sDynamic)+1); gFree:=true; end
else open[i-1,j-1]:=true;
if pole[i+1,j-1] = '0' then begin pole[i+1,j-1]:=chr(ord(sDynamic)+1); gFree:=true; end
else open[i+1,j-1]:=true;
end;
end;
{ for i:= 1 to n+2 do
begin
s:='';
for j:= 1 to m+2 do
s:=s+' '+pole[i,j];
Form1.Memo1.Lines.Insert(i,s);
end;}
end;
begin
lBomb:=0;
for ii:= 1 to n do
for jj:= 1 to m do
begin
if (X > (jj*(sGrid * 2)-sGrid)) and
(X < (jj*(sGrid * 2)+sGrid)) and
(Y > (ii*(sGrid * 2)-sGrid)) and
(Y < (ii*(sGrid * 2)+sGrid)) then
begin
if First_Click then
begin
nb:=0;
Randomize;
while nb <> nBomb do
begin
CreateBomb_x:=random(n)+1;
CreateBomb_y:=random(m)+1;
if (pole[CreateBomb_x,CreateBomb_y] <> '9') and
(CreateBomb_x <> ii) and
(CreateBomb_y <> jj) then
begin
pole[CreateBomb_x,CreateBomb_y]:= '9';
inc(nb);
end;
end;
for i:= 1 to n do
for j:= 1 to m do
if (pole[i,j] <> '9') then
begin
index:=0;
if pole[i+1,j+1] = '9' then inc(index);
if pole[i-1,j-1] = '9' then inc(index);
if pole[i+1,j-1] = '9' then inc(index);
if pole[i-1,j+1] = '9' then inc(index);
if pole[i+1,j] = '9' then inc(index);
if pole[i,j+1] = '9' then inc(index);
if pole[i-1,j] = '9' then inc(index);
if pole[i,j-1] = '9' then inc(index);
pole[i,j]:=IntToStr(index)[1];
end;
First_Click:=false;
end;
if Button = mbLeft then
begin
open[ii,jj]:=true;
if pole[ii,jj] = '9' then
begin
Game_Over;
Form1.Label1.Caption:='GAME OVER';
// вывод сообщения о проигрыше
Form1.Image1.Enabled:=false;
end;
if pole[ii,jj] = '0' then
begin
xOF:=ii;
yOF:=jj;
Open_Field;
end;
end;
if Button = mbRight then
begin
lFlags:=0;
if flags[ii,jj] then
flags[ii,jj]:=false else
flags[ii,jj]:=true;
end;
end;
if not open[ii,jj] then
inc(lBomb);
end;
if lBomb = nBomb then
begin
Form1.Label1.Caption:='Au iiaaaeee!';
Form1.Image1.Enabled:=false;
end;
Form1.Repaint;
end;
procedure TForm1.N4Click(Sender: TObject);
begin
Form1.Button1.Click;
end;
procedure TForm1.N5Click(Sender: TObject);
begin
Form1.Button1.Click;
end;
procedure TForm1.N6Click(Sender: TObject);
begin
Form1.Button1.Click;
end;
procedure TForm1.N2Click(Sender: TObject);
begin
Form1.Button1.Click;
end;
procedure TForm1.Button2Click(Sender: TObject);
// уровень новечка
begin
n:=10;m:=10;nBomb:=10;
Form1.Button1.Click;
end;
procedure TForm1.Button3Click(Sender: TObject);
// уровень любителя
begin
n:=16;m:=16;nBomb:=40;
Form1.Button1.Click;
end;
procedure TForm1.Button4Click(Sender: TObject);
// уровень профи
begin
n:=16;m:=30;nBomb:=99;
Form1.Button1.Click;
end;
procedure TForm1.Button5Click(Sender: TObject);
// создание размера поля
begin
Form1.LabeledEdit1.Enabled:=true;
// высота
Form1.LabeledEdit2.Enabled:=true;
// ширина
Form1.LabeledEdit3.Enabled:=true;
// кол-во бомб
Form1.Button1.Enabled:=true;
// подтверждение создания своего поля
end;
ГЛОССАРИЙ
Интерфейс - совокупность средств, методов и правил взаимодействия (управления, контроля и т.д.) между элементами системы.
Игра - вид деятельности, заключающийся в психологической вовлеченности в некий процесс.
Компонент - составная часть, элемент чего-либо. В разных отраслях науки и техники может иметь дополнительное, более специфическое значение.
Любитель - непрофессионал в каком-нибудь деле.
Новичок - человек, только начинающий свою работу в каком-либо деле.
Профи - это человек который имеет все навыки в каком-либо деле.
Разработка программного обеспечения - это ряд деятельности и процесс, направленный на создание и поддержание работоспособности, качества и надежности программного обеспечения, используя технологии, методологию и практики из информатики, управление проектами, математики, инженерии и других областей знания.
Свойство - способ доступа к внутреннему состоянию объекта, имитирующий переменную некоторого типа.
Сапер - это обманчиво простая игра для развития памяти и логики которая стала одной из самых популярных игр.
Delphi - язык программирования производный от Object Pascal, впервые реализованный в среде разработки Delphi.
Размещено на Allbest.ru
Подобные документы
Основные подходы при создании Windows приложений. Изучение навыков работы с 2D графикой в Windows приложениях. Методы генерации псевдослучайных чисел. Разработка игры "Сапер" с расположением мин на основе нескольких методов генерации случайных чисел.
курсовая работа [63,2 K], добавлен 18.02.2009Разработка программы "Сапер", удовлетворяющей необходимым требованиям эффективности в интегрированной среде программирования Microsoft Visual C++. Специфика создания Windows-приложений. Применение логической игры для развития интереса к обучению у детей.
курсовая работа [511,1 K], добавлен 01.06.2013Разработка приложения на WinAPI с реализацией логической структуры в игре "Сапер". Реализация графической части приложения. Проверка на корректность поведения интерфейса программы, работы логической части игры, корректности записи и чтения файла.
курсовая работа [1,1 M], добавлен 17.10.2012Алгоритмическое представление и описание правил игры "Эволюция". Построение диаграммы прецедентов. Разработка графического интерфейса пользователя. Реализация интерфейса в среде Unity. Структура файла сохранения игры. Проектирование поведения компьютера.
дипломная работа [3,3 M], добавлен 18.02.2017Разработка и создание игры "Змейка". Использование динамически-активных принципов языка Java. Графические объекты программы. Описание игры, правила, теоретические сведения. Классы приложения. Типы данных. Реализация. Метод. Объект. Блок-схема игры.
курсовая работа [12,4 K], добавлен 18.06.2008Разработка компьютерной игры "Эволюция" с помощью игрового движка Unit. Сравнение критериев игры-аналога и разрабатываемой игры. Разработка графического интерфейса пользователя. Настройки камеры в редакторе Unity. Структура файла сохранения игры.
дипломная работа [3,6 M], добавлен 11.02.2017Разработка и реализация компьютерной игры "Змейка" с помощью языка программирования Pascal и модуля CRT. Составление общего алгоритма программы, выделение ее функциональных частей. Разработка тестовых примеров. Использование типизированных файлов.
курсовая работа [2,1 M], добавлен 23.02.2011Особенности программирования аркадных игр в среде Python. Краткая характеристика языка программирования Python, его особенности и синтаксис. Описание компьютерной игры "Танчики" - правила игры, пояснение ключевых строк кода. Демонстрация работы программы.
курсовая работа [160,3 K], добавлен 03.12.2014Обзор методов и средств реализации поставленной задачи. Описание компьютерной игры "Японские кроссворды". Обоснование инструментария разработки программного продукта. Алгоритмический анализ задачи. Графический интерфейс и лингвистическое обеспечение.
курсовая работа [725,4 K], добавлен 27.08.2013Общие сведения и существующие среды реализации компьютерной игры "Лабиринт". Разработка алгоритмов в виде блок-схемы, принципы программной реализации игры. Особенности тестирования разработанного программного продукта. Аспекты эксплуатации продукта.
курсовая работа [1,4 M], добавлен 18.01.2017