Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Задания для самостоятельного выполнения




6.1. Приложение «Секундомер» (рис. 6.2.3). При нажатии на кнопку «Пуск», запускается секундомер (минуты : секунды : десятые доли секунды), а название кнопки изменяется на «Пауза». При нажатии на кнопку «Пауза», отсчет времени прекращается, а название кнопки изменяется на «Пуск». При нажатии на кнопку «Стоп», секундомер останавливается и происходит сброс времени.

рис. 6.2.3

6.2. Напишите программу, которая с помощью компонентов Gauge (страница Samples) отображает количество часов, минут, секунд, прошедших с начала суток.

Примечание. Воспользуйтесь функциями Time (возвращает текущее время) и TimeToStr(Дата) (преобразует полученную дату в строковый формат).

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

6.4. Приложение «Крестики-нолики». Дано доска (поле) размерностью 3х3. Напоминаем суть игры. Партнеры по очереди ставят на поля квадрата (доски) крестики и нолики, и выигрывает тот, кто первым выстроит три своих знака в ряд. Игра длится не более девяти ходов. Если никому из игроков не удается добиться цели, партия заканчивается вничью. Напишите приложение, в которой партнерами выступают компьютер и человек.

Примечание. Для изображения крестиков и ноликов воспользуйтесь компонентом ImageList. Поместите в этот компонент изображения. Обработчик события OnDrawCell компонента Stringgrid будет содержать следующий код:

Number := StrToInt(StringGrid1[ACol, ARow]);

{В ячейках StrinGrid помещены символы 0 (клетка свободна), 1 (крестик), 2 (нолик)}

ImageList1.Draw(StringGrid1.Canvas,Rect.Left-2,Rect.Top-2, Number); {в ячейке StringGrid1 отображается изображение под номером Number}

6.5. Создайте приложение «Пятнашки». Приложение произвольным образом расставляет фишки (1..14) в коробке, оставляя свободной клетку в правом нижнем углу. В строке состояния должно отображаться количество сделанных ходов.

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

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

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

6.6. Приложение «Перевертыши». Дано поле 4x4 (6x6, 8x8). В каждой клетке расположены фишки – синие и белые. Начальное расположение фишек генерируется случайным образом. За один ход можно перевернуть фишку в какой-либо произвольно выбранной ячейке, одновременно с ней переворачиваются фишки в соответствующих ячейках по вертикали и горизонтали. Цель игры: получить во всех ячейках фишки одного и того же цвета.

6.7. Приложение «Волки и овцы». В данную игру можно играть с кем-нибудь вдвоем или с самим собой. Один играет за овец, другой за волков. У вас есть квадратная «поляна» размером 4х4 (рис. 6.2.4). В ее углах стоят 2 овцы («О») и 2 волка («В»).

   
       
       
   

 

 
   
   
   

 

   
     
     
     

 

Рис. 6.2.4 Рис. 6.2.5 Рис. 6.2.6

Ходы осуществляются по очереди: волк, овца, волк, и т.д. При чем каждый может передвигаться только на соседнюю клетку вперед, назад, влево и вправо (рис. 6.2.5).

Но если овца окажется на какой-нибудь соседней клетке по диагонали, то волк очередным ходом может съесть ее. В этом случае он становится на клетку, где была овца, а та уходит с поляны. Если зазевается волк, овца делает то же самое.

Выигрывает тот, кто останется на поляне.

6.8. Приложение «Ку-ну» (корейская игра). Играют два человека. На поле размерностью 5х5, клетки которого являются камушками, стоят два отряда воинов по 7 человек в каждой (рис. 6.2.7). Одни воины одеты в синее кимоно, другие – в зеленое. После того, как брошен жребий какому отряду начать игру, любой из воинов прыгает на соседний камушек, но только по диагонали. Затем точно так же прыгает воин из другого отряда. Оставаться всему отряду на месте никак нельзя, т.к. на скользких камнях трудно держать равновесие, поэтому если камушки впереди уже заняты, тогда придется прыгать назад – опять же по диагонали – на свободное место. Побеждает тот, кто быстрее успеет перейти на другой берег.

Рис. 6.2.7

6.9. Приложение “Вечный Календарь”. Напишите приложение, визуальный интерфейс которого показан на рисунке 6.2.8.


Примечание. Воспользуйтесь компонентом Calendar (страница Samples).

Рис. 6.2.8

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

Примечание. Для получения информации о компоненте воспользуйтесь файлом c:\Program files\ Borland\ Delphi5\ Source\ Samples\ Calendar.pas

6.10. Модифицируйте приложение, описанное в задании 6.9

a) Известно, что астрологи делят год на 12 периодов и каждому из них ставят в соответствие один из знаков Зодиака:

20.01-18.02 Водолей 21.05-21.06 Близнецы 24.09-22.10 Весы
19.02-20.03 Рыбы 22.06-22.07 Рак 23.10-22.11 Скорпион
21.03-19.04 Овен 23.07-22.08 Лев 23.11-21.12 Стрелец
20.04-20.05 Телец 23.08-23.09 Дева 22.12-19.01 Козерог

Модифицируйте программу так, чтобы свойство Hint компонента Calendar отображало знак Зодиака для выбранной даты.

b) В старояпонском календаре был принят 60-летний цикл, состоявший из пяти 12-летних подциклов. Подциклы обозначались названиями цвета: зеленый, красный, желтый, белый и черный. Внутри каждого подцикла года носили названия животных: крысы, коровы, тигра, зайца, дракона, змеи, лошади, овцы, обезьяны, курицы, собаки и свиньи. (1984 год – год зеленой крысы – был началом очередного цикла). Модифицируйте программу так, чтобы свойство Hint формы отображало название выбранного года по старояпонскому календарю.

6.11. Приложение «Блоки». На поле размерностью 6x6 находятся картинки (по две одинаковые), невидимые для игрока. Необходимо открыть все картинки. Картинки открываются попарно, при этом, если открыты одинаковые картинки – они исчезают. Во время игры открытыми могут быть только две картинки: при открытии третьей картинки предыдущие две закрываются. Цель игры: открыть все картинки за наименьшее число попыток.

6.12. «Биологические ритмы». Биологические ритмы вычисляют, основываясь на гипотезе, что существует три цикла: физический (его период равен 23 дням), эмоциональный (период – 28 дней) и интеллектуальный (период – 33 дня). Кривые биологических ритмов могут быть представлены в виде синусоид. Начало всех трех кривых – день рождения. В первой половине каждого периода значения синусоиды положительны – это дни рабочего, приподнятого настроения, в дни второй части периода (когда значения синусоиды отрицательны) человек находится в пассивном, плохом настроении. В самом начале (после дня рождения) все биологические ритмы попадают в отрицательную часть периода. Составьте программу, которая запрашивает день рождения; число, на которое следует определить значения синусоид биологического ритма, и по этим данным строит синусоиды на 1 месяц.

6.13. Приложение «Японский кроссворд». В клетках японского кроссворда скрываются не слова, а картинки. Задача – нарисовать картинку по числам, которые проставлены слева от строк и над колонками. Числа показывают, сколько групп закрашеных клеток находится в соответсвующей линии и сколько слитных закрашенных клеток содержит каждая группа. Например, числа 2, 5 и 4 означают, что в этом ряду есть 3 группы, состоящие: первая из 2, вторая – из 5, третья – из 4 закрашенных клеток. Группы разделены, как минимум, одной пустой клеткой. Пустые клетки могут быть и по краям рядов. Самое трудное – определить, сколько же пустых клеток находится между закрашенными группами.

Решение японского кроссворда разберем на простом примере.

Если возле ряда стоит одно число, которое больше, чем половина длины ряда, то несколько клеток в середине ряда будут закрашены. Поэтому их можно смело помечать. В примере можно закрасить некоторые клетки в 1, 4 и 5 строках (рис. 6.2.9). Шестая строка содержит одну группу из 10 клеток, поэтому всю эту строку можно сразу закрасить.

Теперь посмотрим на колонки. В первой всего одна клетка, ее положение уже известно, так что остальные клетки в этой колонки явно пустые – отметим их серым цветом и не будем обращать на них внимание. Со второй колонкой, аналогично. Можно еще закрасить несколько клеток в четвертой колонке, так как группа содержит 7 клеток, а высота всей колонки 8, поэтому можем закрасить средние 6 клеток (рис. 6.2.10).

10 8         2 1   1 1  
1 3 5 7 3 3 6 5 5 6
    6                    
2 1 1                    
1 1 1                    
    9                    
    9                    
    10                    
  2 2                    
  2 2                    

 

10 8         2 1   1 1  
1 3 5 7 3 3 6 5 5 6
    6                    
2 1 1                    
1 1 1                    
    9                    
    9                    
    10                    
  2 2                    
  2 2                    

 

Рис. 6.2.9 Рис. 6.2.10

Продвигаясь шаг за шагом, получится вот такой автомобиль (рис. 6.2.11).

10

8

        2 1   1 1  
1 3 5 7 3 3 6 5 5 6
    6                    
2 1 1                    
1 1 1                    
    9                    
    9                    
    10                    
  2 2                    
  2 2                    

Рис. 6.2.11

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

Вопросы для повторения

1. Для чего предназначен компонент StringGrid? В чем его отличие от компонента DrawGrid?

2. Назовите два класса-предка класса TStringGrid.

3. Компонент Timer. Расскажите о его свойствах и событии.

4. Для чего используется компонент ImageList?










Последнее изменение этой страницы: 2018-06-01; просмотров: 229.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...