Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Цель: Изучение возможностей использования свойства Tag и объекта Sender





Краткие теоретические сведения.

Целью данной лабораторной работы является написание следующей программы. Игровая доска содержит семь клеток. На трех левых клетках стоят красные фишки, на трех правых – синие. Центральная клетка пуста. Задача заключается в том, чтобы, делая допустимые ходы, поменять фишки местами. Вид рабочего окна игры представлен ниже.

 

Правила ходов такие:

1. Красные фишки могут ходить только вправо, синие – только влево.

2. Ходить разрешается только на свободное поле.

3. Разрешены перемещения на соседнее поле и «прыжок» через фишку.

В ходе решения головоломки кнопки будут двигаться, а вид окна изменяться. Поэтому необходимо точно задать геометрические параметры объектов. Настраивать параметры будем, изменяя свойства Top, Left, Height, Width компонентов. Параметры должны быть следующими:

 

 

В чем заключается ход в игре? В том, что одна из фишек-кнопок переносится на свободное место. Это значит, что достаточно указать, какой фишкой надо пойти. Если фишка может сделать ход, то он только один.

Итак, пользователь может выбрать ход, щелкнув на одной из кнопок. То есть мы будем обрабатывать событие OnClick (При щелчке).

Но мы должны различать кнопки, а также знать, где они находятся и где находится свободная клетка. Поэтому мы поступим так: будем хранить дополнительные данные прямо в свойствах объекта-кнопки. Для этого нам нужно «свободное» свойство. Такое свойство есть: все компоненты системы Delphi предоставляют свойство Tag, которое программист может использовать по своему усмотрению.

Свойство Tag может хранить любое целое число. Нам нужно хранить два числа. Во-первых, номер клетки, в которой находится кнопка, а во вторых, признак «цвета» фишки (от него зависит, в какую сторону она может ходить). Эти данные легко «упаковать» в одно целое число: умножим номер клетки на 2 и, если фишка синяя, прибавим к нему единицу. Такое значение легко «разобрать» обратно на составляющие. Разделим его на 2. Частное даст номер клетки, а остаток будет признаком цвета фишки.

Ход работы.

1. Разместим на форме компонент Panel (401 x 65). На панели расположим 6 компонентов BitBtn (панель Additional) размером 49 на 49. Свойство Top всех компонентов будет равно 8, Left – 64,120,232,288,344.

 

 

2. Создайте при помощи графического редактора изображения красного и синего треугольников или любых других фигур на ваш вкус и сохраните их в формате bmp. Затем, используя свойство Glyph компонента, поместите изображения на кнопки.

 

3. Теперь можно задать значения свойства Tag для всех кнопок. Поочередно выберем фишки слева направо и зададим для свойства Tag значения, приведенные в таблице.

 

Значение свойства Комментарий
  первая клетка, красная фишка
  вторая клетка, красная фишка
  третья клетка, красная фишка
  пятая клетка, синяя фишка
  шестая клетка, синяя фишка
  седьмая клетка, синяя фишка

 

4. Опишем глобальную переменную n, в которой будем хранить номер пустой клетки и переменную win, в которой будет содержаться количество ходов.

var

Form1: TForm1;

n:integer=4;

win:integer=24;

Здесь мы не только описываем нужные переменные, но и сразу присваиваем им начальное значение. Первоначально у нас пуста четвертая клетка, отсюда и выбор этого числа, 24 – максимально возможное число ходов.

5. Выберем первую кнопку и создадим обработчик OnClick для нее.

procedure TForm1.BitBtn1Click(Sender: TObject);

var i,c,k,ak:integer;

begin

with Sender as TBitBtn do

begin

i:=Tag div 2;

c:=Tag mod 2;

k:=n-i;

ak:=abs(k);

if ak<3 then

if ((c=0) and (k>0)) or

((c=1) and (k<0)) then

begin

tag:=tag+2*k;

left:=left +56*k;

win:=win-ak;

n:=i;

end;

end;

if win=0 then

begin

caption:=’Vaw!!!!';

panel1.Color:=clFuchsia; //меняем цвет панели

panel1.Enabled:=false; /все кнопки, находящиеся на панели становятся недоступными/

end;

end;

Обратите внимание на то, что в процедуру передается параметр — объект Sender. Он представляет именно тот объект, который вызвал событие, и может дать доступ к его свойствам. Но напрямую это не получится. Программе надо специально указать, что объект Sender в данном случае следует считать кнопкой. Для этого служит ключевое слово as. После него указывают тип, которому на самом деле принадлежит объект Sender: Sender as TBitBtn

6. Для каждой из кнопок на вкладке События в окне напротив OnClick выберите из списка уже описанную нами процедуру.

 

 

Выполнить самостоятельно:

Попробуйте выиграть!!!

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

 

 

Date: 2015-12-12; view: 462; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.005 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию