Курсовая: Разработка игровой программы "Морской бой" - текст курсовой. Скачать бесплатно.
Банк рефератов, курсовых и дипломных работ. Много и бесплатно. # | Правила оформления работ | Добавить в избранное
 
 
   
Меню Меню Меню Меню Меню
   
Napishem.com Napishem.com Napishem.com

Курсовая

Разработка игровой программы "Морской бой"

Банк рефератов / Программирование

Рубрики  Рубрики реферат банка

закрыть
Категория: Курсовая работа
Язык курсовой: Русский
Дата добавления:   
 
Скачать
Архив Zip, 835 kb, скачать бесплатно
Заказать
Узнать стоимость написания уникальной курсовой работы

Узнайте стоимость написания уникальной работы

МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ МОСКОВСКИЙ ГОСУДАРСТВЕ ННЫЙ ИНСТИТУТ СТАЛИ И СПЛАВОВ (ТЕХНОЛОГИЧЕСКИЙ УНИВЕРСИТЕТ ) НОВОТРОИЦКИЙ ФИЛИАЛ кафедра экономики и информатики КУРСОВАЯ РАБОТА РАЗРАБОТКА ПРИЛОЖЕНИЯ “ИГРА – МОРСКОЙ БОЙ” Исполнитель : Майстренко Е.В. Студент группы ПИ -2000-27 Руководитель : Плясун ов Д.Ю. Дата допуска к защите : « __» _______200__г. Новотроицк 2001 МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ ИНСТИТУТ СТАЛИ И СПЛАВОВ (ТЕХНОЛОГИЧЕСКИЙ УНИВЕРСИТЕТ ) НОВОТРОИЦКИЙ ФИЛИАЛ кафедра экономики и информатики ЗАДАНИЕ НА КУРСОВУЮ РАБОТУ Студент __________________________________________________________ (Ф.И.О ., группа ) Тема курсовой работы (проекта ): “Разработка приложения “Игра – Морской Бой ” _ Срок сдачи курсового проекта _________________________________________ Перечень вопросов подлежащих исследованию или разработке : а ) Актуальность и значимость темы . б ) История развития игро вых программ . в ) Обоснование выбора используемых компонентов г ) Алгоритм реализации проекта . Руководитель : Плясунов Д.Ю . ________________ СОДЕРЖАНИЕ стр. ВВЕДЕНИЕ …………………………………………………………………. 4 1. ПРОГРАММИРОВАНИЕ ИГР С ИСПОЛЬЗОВАНИЕМ ВИЗУАЛЬНЫХ К ОМПОНЕНТОВ …………………………………… 6 1.1. Аналитический обзор ……………………………………………. 6 1.2. Описание компонентов , используемых при реализации практической части курсовой работы ……..…………………… 13 1.2.1. Компонент TMainMenu …………………………………. 13 1.2.2. Компонент TLabel ………………………………………. 16 1.2.3. Компонент TPanel ……………………………………….. 18 1.2.4. Компонент TBitBtn ……………………………………… 19 1.2.5. Компонент TSpeedButton ……………………………….. 22 1.2.6. Компонент TImage ………………………………………. 23 1.2.7. Компонент TTimer ……………………… ………………. 24 1.2.8. Компонент TStatusBar …………………………………... 25 2. РАЗРАБОТКА ПРОГРАММЫ ………………………………………... 26 2.1. Постановка задачи ……………………………………………….. 26 2.2. Алгоритм реализации работы …………………………………… 26 2.2.1. Алгоритм реализации игровой программ ы ……………. 26 2.2.2. Реализация справочной информации ………………….. 33 2.3. Описание пользовательского интерфейса ……………………… 33 ЗАКЛЮЧЕНИЕ …………………………………………………………….. 37 СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ ………………………. 38 ПРИЛОЖЕНИЕ 1 …………………………………………………………... 39 ПРИЛОЖЕНИЕ 2 …………………………………………………………... 43 ПРИЛОЖЕНИЕ 3 …………………………………………………………... 44 ПРИЛОЖЕНИЕ 4 …………………………………………………………... 46 ПРИЛОЖЕНИЕ 5 …………………………………………………………... 47 ПРИЛОЖЕНИЕ 6 …………………...……………………………………… 49 ПРИЛОЖЕНИЕ 7 …………………………………………………………... 50 " И84IГ84CР84QА84@ - в84rи84yд84t н84~е84uп84Ѓр84‚о84Ђд84tу84…к84{т84„и84yв84rн84~о84Ђй84z д84tе84uя84‘т84„е84uл84|ь84Ћн84~о84Ђс84ѓт84„и84y , м84}о84Ђт84„и84yв84r к84{о84Ђт84„о84Ђр84‚о84Ђй84z з84xа84pк84{л84|ю84ђч84‰а84pе84uт84„с84ѓя84‘ н84~е84u в84r е84uе84u р84‚е84uз84xу84…л84|ь84Ћт84„а84pт84„а84pх84‡ , а84p в84r с84ѓа84pм84}о84Ђм84} п84Ѓр84‚о84Ђц84?е84uс84ѓс84ѓе84u . В84B и84yс84ѓт84„о84Ђр84‚и84yи84y ч84‰е84uл84|о84Ђв84rе84uч84‰е84uс84ѓк84{о84Ђг84sо84Ђ о84Ђб84qщ84‹е84uс84ѓт84„в84rа84p п84Ѓе84uр84‚е84uп84Ѓл84|е84uт84„а84pл84|а84pс84ѓь84Ћ с84ѓ м84}а84pг84sи84yе84uй84z , к84{у84…л84|ь84Ћт84„о84Ђв84rы84Ќм84} п84Ѓо84Ђв84rе84uд84tе84uн84~и84yе84uм84} и84y д84tр84‚ . ... С84Rв84rо84Ђй84zс84ѓт84„в84rе84uн84~н84~а84p т84„а84pк84{ж84wе84u в84rы84Ќс84ѓш84Љи84yм84} ж84wи84yв84rо84Ђт84„н84~ы84Ќм84} ". С84Rо84Ђв84rе84uт84„с84ѓк84{и84yй84z э84Џн84~ц84?и84y к84{л84|о84Ђп84Ѓе84uд84tи84yч84‰е84uс84ѓк84{и84yй84z с84ѓл84|о84Ђв84rа84pр84‚ь84Ћ ВВЕДЕНИЕ Все , кто имеет дело с компьютером , так или иначе сталкивались с компьютерными играми , и подавляющее большинство может сходу назвать несколько игр , которые им особенно понравились . Те , кто уже совсем наигрался , почти наигрался или еше не наигрался , но в про ц ессе общения с компьютером уже начал совме щ ать игры с чем-нибудь более полезным , возможно , хотели бы придумать какие-нибудь с вои , не похожие ни на какие другие игры (1). Многое захватывает в таком творчестве . И не сам процесс игры , а разработка игровой вселенной , ее проектирование и реализация . Когда можно слить воедино сценарий , графику , музыку , искусно задуманный и умело запро граммированный алгоритм — создать единый фантастический мир , живущий по законам , которые ты же для него и придумал . В данной курсовой работе речь пойдет о создании несложной игровой программы «Морской бой» , которая и будет являться объектом исследования. В первой главе данной курсовой работы рассматриваются аспекты программирования игр с использованием визуальных компонентов , в пункте 1.1. приводится аналитический обзор игрового программного обеспечения , классификация игр . В пункте 1.2. приводится описани е компонентов , используемых при реализации практической части курсовой работы . В пункте 1.3. показываются возможности использования визуальных компонентов. Во второй главе приведены этапы разработки программы , такие как постановка задачи , алгоритм реализаци и и описание пользовательского интерфейса. В заключении приведены выводы по курсовой работе , достоинства и недостатки визуальных методов программирования. Список использованных источников содержит полный перечень технической литературы , использованной для написания данной курсовой работы. Приложения содержат блок-схемы всех процедур программы , и текст самой программы. 1. ПРОГРАММИРОВАНИЕ ИГР С ИСПОЛЬЗОВАНИЕМ ВИЗУАЛЬНЫХ КОМПОНЕНТОВ 1.1. Аналитический обзор В последнее время продажи про граммного обеспечения увеличиваются незначительно , в то время как продажи игровых программ возрастают экспоненциально . Игры для платформы Windows составляют подавляющее большинство . Игровое программное обеспечение – это третья по размерам доходов отрасль и ндустрии программного обеспечения после текстовых процессоров и электронных таблиц (1). До недавнего времени среда Windows использова лась в основном как платформа для создания игр , пер воначально разработанных для Macin t osh. Это осуще ствлялось на базе пакета Qui c kTime фирмы Apple. При мерами таких игр могут быть Mysl (Broderbund/Cyan), Wrath of the Gods (Maxis/Luminaria) и некоторые дру гие . В ряде случаев использовался пакет Video for Win dows, позволяющий отображать оцифрованное видео . Затем появились библиотеки WinG и WinToon, на базе которых фирм а Sierra создала игру King's Quest VII. Это были первые попытки использовать Windows как платформу для создания игровых программ . Преимущест ва такого подхода достаточно очевидны — единый ин терфейс , наличие стандартных драйверов для большин ства мультимедийных устройств и возможность управ ления ими стандартными способами . Затем появилась новая версия — Windows 95, в состав которой была включена библиотека WinG (как подсистема GDI), и перед разработчиками открылись более широк ие воз можности. Указать точное число компьютерных игр очень трудно . Можно только примерно оценить число различных наименований игр , находящихся на рынке в любое время (2). Классификация компьютерных игр может быть следующая : 1. Приключенч е ски е игры. Игры могу т быть великолепным средством рассказа истории . Эти игры представляют собой мультиплиц ированный рассказ , в котором можно видет ь и контролировать основной персо н аж (а иногда и более одного ) в очень детальном повествовании . Это - компьютерные версии обычных повествований , начиная от душещипательных расска з ов до технотриллеров, научно-фантастических приключений , фантазий и рассказов , до предела набитых разными обманами и мошенничествами . Приключенческие игры развиваются вокруг различных загадок и препятствий , которые нужно преодолеть по мере развити я рассказа. 2. Фантастически е игры , в которых треб уе тся играть некоторую роль (роле в ы е игры ). Их лучше всего определить как компьютеризо ванную версию расска з а Dungeons and Drag ons («Под з емелья и драконы » ), но действие н е всегда происходит в населенном варварами средневек овом мире . Часто оно происходит в открытом космосе или в каких-либо областях будущего . В этих играх обычно нужно управлять группой персонажей , которые становятся по мере развития игры сильнее и умнее , и делать некоторые другие вещи . Так же изменяются и вр а ги . Сами рассказы в играх этого типа обычно менее детальны , чем в приключенческих играх , с большим упором на задачу побить чудовгщ, чем решить загадки. 3. Имитаторы во з душных и космических сражени й. Это не воен ные игры , в которых может оказаться неограниченное число вооружений и врагов , эти игры пытаются быть точны ми имитаторами п о летов и сражений на реальных боевых самолетах . Эти игры пр една з начены для тех , кто хочет ле тать на больших и очень мощных машинах . Кабины пилотов выглядят как настоящие , инструменты работают как в насто ящем бою , оружи е является имитацией р е ально существую щего , а полетные характеристики самолета (и самолета врага ) соответствуют действительным . Имитаторы космических сражений выдуманы , однако они ра з работаны с целью точно повторить реальны е маневры в космосе. 4. Имитаторы на зе мных и морских сраж е ний. Игры разработаны для военного оборудования и военных машин . Эта категория игр включает в себя с имуляторы настоящих подводных ло док , кораблей и танков , и позволяет игрокам испытать реальные сценарии сраж е ний , и выжить для того , ч тобы понять , как использовать правильную тактик у в следующей игре. 5. Самол е ты , поезда и автомобили. В отличие от этих имитаторов , все прочие являются им и таторами военного типа или имею т очень сильный упор на сраж ение . Эти же игры не относятся к таким имитаторам . Кон е чно , можно про е хать на автомобиле по б е реговой дороге в Калифорнии со скоростью , вдвое превышающей ра з решенную , и потанце вать на всех четырех колесах . Но также можно использо вать эти игры , чтобы научиться безопасно летать среди об лаков , и получать удов о льствие от свободы по лета . Даже можно делать такие вещи , как постройка и управление со бственной железной дорогой. 6. Спортивные имитаторы . З десь необходимо обучать профессионалов и управлять ими . Эти игры - нечто боль шее , чем простое изображение бейсбольных игр в картинках , в некоторых из них можно даже контролировать реальное действие . Спортивные имитаторы дают возможность вести рискованную игру в нужное время , доказать , что можно выиграть с помощью быстроты , иметь в команде Генри Аарона и Теда Вильямса, или переиграть Томми Лазорду. 7. Аркадные игры /игры действия. Это классические «игры дей ствия» - все зависит от того , насколь ко быстро руки могут дергать джойстик . Обычно о них говорят как о бес смысленных , так часто и бывает . С другой стороны , бывают времена , когда появится потребность дать отдохнуть мозгам . Во многие из этих игр можно играть с п ом ощью клавиатуры или мыши , и джойстики не всегда необходимы . В чем есть необходимость , так это в быстрых рефлексах. 8. Н астольные игры , солит е р и салонные игры. Многие старые любимые игры появились в компьютерном варианте . Боль ше не нужно заниматься поисками партнера , чтобы поиграть в шахматы , бэкграммон и риск . Некоторы е из этих игр даже научат мошенничать наедине с монитором , и при этом не придется во з вращаться домой с пустым карманом после неудачной ночи. 9. Имитаторы реальности ( « игры в бога » ). Это игры , которые по з воляют создавать реальный мир из н ичего . Это игры , которые позволят создать компьютерный мир из на бросков , управлять городом , страной или даже миром. 10. Игры , в которых делаются д е ньги. Они копируют игровую деятельность и учат высшим формам азартных предприя тий : фондовая биржа , торговля недвижимостью . Они также поз волят попробовать управлять корпорацией . В эти игры можно играть д л я удовольствия , или исполь з овать их для того , чтобы научиться карабкат ься вверх по лестнице карьеры. 11. Стратегически е и военны е имитаторы. Здесь можно принимать участие в в е ликих исторических событиях , взять на себя командо вание неме цкой армией у Ленинграда или армией Наполео на у Ватерлоо . Это военные стратегии прошлого , насто ящего или будущего. 12. Игры для детей. Если есть домашний компьютер , и ч т обы дети научились его исполь з овать , то эти игры достой ны внимания . Реальность нашей культуры такова , что , как только малыши станут координированы настолько , чтобы правильно пользоваться клавиатурой или мышью , они хотят сра з у приняться за такие игры, как Wing Commander, Popu lous или Eye of the B e holder. Однако же вокруг существует множество игр , в которые дети могут играть просто чтобы получить удовольствие , или же научиться чему-либо. 13. Игры « On - line » . Было бы ошибкой считать , что все компь ютерные игры д л я IBM PC приходят к нам на дискетах или CD -дисках , плотно упакованных в красивые пакеты . Фактически , весь обшир ный мир компьют ерных игр доступен и по телефону . Эта категория игр и з вестна как «он-лайн» и включает в себя разнообра з ные игры , которые имеются в больших коммер ческих «он-лайн» сетях и во многих локальных сетях типа «доска объявлений» (bulletin board system — BBS). Для игр «он-лайн», кроме личного компьютера , необходимы модем и кредитная карточка. 14. Игры Sh areware. Будет ошибкой предположить , что все компь ютерные игры приходят в красивых упаковках . Многие хоро шие игры прих о дят вовсе бе з упаковок , и стоят от 10 до 30 долларов . Обычно можно их опробовать з а очень низкую плату или во в с е бесплатно в течение нескольких дней и , если захочется получ и ть легальную копию , сле дует послать по почт е чек компании или лицу , которые создали игру. 15. Классически е игры. Мир PC-игр во многом похож на мир п опулярной музыки и фильмов : создается мно го игр ра з лич ных наименований , некоторые становя т ся хитами и держат популярность в течение некоторого времени , другие пропа дают . Постепенно эти хиты становится трудно отыскать , и мало-помалу о н и заменяются другими лучшими играми . Очень мало PC-игр живут более 2-3 лет . Из тех , что действительно остаются , многие настолько хороши , что становя т ся вечны ми , и они заслуживают того , чтобы в них играли . Некоторые , как Flight Simulator или King's Quest, обновляются время от времени , так что их можно рассматривать как практически новые игры . Остальные остаются неи з менными , и уровень продаж у них таков , что они остаются в обращении , но уже не рекламируются активно их производителями . Это игры , которые не бросаются в глаза , «золотые» игры — классичес к ие PC-игры. Компьютерные игры — отнюдь не новое изобретение . Их история началась не с конца 1970 годов . Нач а ло лежит гора зд о раньше , тогда , когда Джон Кеннеди уже пробыл пре з идентом Соединенных Штатов всего несколько месяцев (2). На самом деле все началось с модели железной дороги . Студен ты Технологического института в Массачусетсе были немало удивле ны количеством способов, с помощью которых можно было ра з мес тить органы управления миниатюрной желе з ной дорогой . Позднее , когда они наконец получили возможность работать на больших компь ютерах института , их работа в бинарных вычислениях — ведь именно такие вычисления имитируются выключателями ж е лезной дороги — позволили им пройти хорошую подготовку в компьютерном деле. Стив Расс е л был о дним из членов Клуба Моделей Желе з ных дорог Высокой Технологии в Технол огическом институте . Будучи хорошим программистом , он летом 1961 года работал в Статистической лаборатории , когда у него и его дру з ей появилась идея перенести «мыльные» научно-фантастические расска з ы Е.Е. Смита на компьютеры . В 1962 году Стив разработал программу для PDP-1. Эта самая машина теперь выставлена в компьютерном му з ее Бостона в Массачусетском Техноло гическом институте. В «Космической Войне» , как называлась эта программа , два синте з ированных компьютером ракетных космических корабля (один похожий на толстую сигару , а другой на длинную обтекаемую трубу ) могли летать по экран у , на котором помещалось изображение кос моса . Игроки могли нажимать на кнопки , чтобы заставить ракеты менять направление движения почти так же , как позднее в игре Asteroids владельцы игровых машин Atari управляли своими корабля ми . Каждая ракета несла на себе 31 торп е ду , и , в то время как они летели по экрану , игрок мог выстрелить точечку и з носа своей ракеты в направлении другой . Если точка действительно пересекала очерта ния другого корабля , про грамма определяла , что торпеда успешно пора з ила другой корабль и другой корабль «взрывался» . Взорванный корабль пропадал с экрана и заменялся нагроможд е нием точек , ко торые изображали его остатки. Конечно , общество программистов и взломщиков программ не может удовлетвориться качеством любой программы , не з ависимо от того , насколько она легка или интересна . Изм е нения были неизбеж ны . Один и з друзей программиста , будучи недовольным случайным образом построенной картой звездного неба , которую Рассел первоначально поместил в игру , взял звездный атлас и ухитрился з апрограммировать нашу собственную галактик у , вплоть до з везд пятой величины . Другой добавил гравитацию в игру , а третий ввел возможность побега в гиперпространство , при этом , ч тобы показать место , где корабль покинул з вездную систему , на экране оставался след ускорения. Даже Рассел сделал некоторые измен е ния . Зная , что у на стоя щих торпед вероятность поражения цели не 100%, а меньше , он решил придать звездным торпедам во з можность ошибки , и добавить случайный эл е мент в траектории ракет и время в з рыва . Его друзья терпеть не могли новую версию , поскольку они хотели бы иметь в игре ту же степень уверенности , которая существовала в программировании. Рассел вернул программу к прежней версии и , не успели огля нуться , как «Космические войны» окк упировали компьютеры коллед жей по всей стране. «Космические войны» стали настолько популярны к середине шестидесятых , что Нолан Бушнелл, создатель Atari, очень привязался к игре во время учебы в университете штата Юты . К 1970 году Бушнелл построил свою собственную машину , исполь з овав 185 встроенных цепей для подсо е динения к т е лев изору и для выполнения одной-единственной функции . Эта функция была игрой «Компьютерный Космос » , вариант «Космических Войн» , в котором ракета сражалась с летающими тарелками вместо другого корабля. «Космические Войны » были не единственным предшеств е нником коммерческих компьютерных игр , появившихся на больших компьютерах в колледжах . Какой-то неизвестный автор начал играть в игру Star Trek («Звездный пу т ь» ) в шестидесятых годах . Никто не знает , кто первым создал такую игру — он или она , вероятно , подали бы судебный иск , если бы автор игры был точно определен — но эта игра также появилась на коллед жских компьютерах по всей стране к 1969 году. Игра «Звездный путь» сама по себе была не очень и з ощренной . В игре были линии наподобие решеток , которые позволяли звезд ным кораблям путешествовать от одной точки к другой , игра исполь з овала символы для идентификации корабл е й , предоставляла чис ленную информацию в процентах , и позволяла летать быстрее , чем скорость света . К середине 70-х годов почти на ка ж дой домашней компьютерной системе была доступна та или иная форма этой игры . Существовала версия этой же игры для IBM под на з ванием Star Fleet («Звездный Флот » ). Након ец , стоит упомянуть пожалуй наиболее важную игру , Adven ture («Приключения » ). В игре использовались двухсловные команды , имя ее разработчика Вилл Краудер. Это была первая приключенческая компьютер ная игра. Кроме того , в конце 70- х была создана игра по имени Zork, которая стала доступна для пользователей домашних компьютеров в 1981 году . Эту игру до сих пор можно купить . Игра Zork основывается на игре Adventure (2). 1.2. Описание компонентов , используемых при реализации практической части курсовой работы В практической части данной курсовой работы используются следующие визуальные и невизуальные компоненты (3, 4, 5) среды программирования Borland Delphi 6.0. 1.2.1. Компонент TMainMenu TMainMenu позволяет поместить главное меню в программу . При помещении TMainMenu на форму это выглядит , как просто иконка . Иконки данного типа называют невидимым (невизуальным ) компонентом , поскольку он и невидимы во время выполнения программы . Создание меню включает три шага : 1) помещение TMainMenu на форму , 2) вызов Дизайнера Меню через свойство Items в Инспекторе Объектов , 3) определение пунктов меню в Дизайнере Меню. Этот компонент доступен из моду ля MENUS , и находится на странице Палитры компонентов Standard Этот компонент представляет главное меню формы и наследует все методы и свойства TMenu . Особенность его в том , что в нем реализован сложный механизм объединения меню . Это необходимо по следующи м причинам : 1. Если в приложении имеется несколько форм со своими меню , то для упрощения работы целесообразно соединить их в одно и управлять меню из главной формы. 2. Объединение меню нужно при работе с интерфейсом MDI и его подокнами. 3. Механизм объедин ения меню используется серверами OLE , запускаемыми по месту нахождения объекта OLE . Загружаясь , сервер дописывает осу ществляемые им операции к меню другого приложения. Для того чтобы реализовать объединение меню , у тех форм , меню которых будут присоединен ы к главному , необходимо установить в True свойство : (Р b ) property AutoMerge : Boolean . При этом у главного меню оно должно оставаться равным False , иначе главное меню будет вообще невидимым . Объединение будет происходить автоматически при активизации новых форм или серверов OLE . Кроме автоматического режима , объединение меню можно выполнить при вызове метода : procedure Merge ( Menu : TMainMenu ). Присоединяемое меню при необходимости может быть легко отсоединено вы зовом метода : procedure Unmerge ( Menu : TMainMenu ). При установленном в True свойстве AutoMerge ссылка на присоединенное меню будет сохраняться в специальном поле компонента и отсоединяться в нужных случаях автоматически (например , при закрытии формы , которой оно принадлежит ). Объединение меню п роисходит по специальным правилам , в основе которых лежит использование группового индекса (свойства Group Index ) каждого объек та TMenuItem . У пунктов меню одного уровня , в частности всех подменю верхнего уровня в главном меню , свойство GroupIndex являетс я неубывающим , т . е . у после дующего пункта групповой индекс больше либо равен индексу предыдущего . Это требование отслеживается как на этапе разработки , так и на этапе испол нения . Например , пусть пункты меню имеют индексы 0, 3, 4, 5, 6. Если включить пу н кт меню с индексом 5 между пунктами с индексами 0 и 3, то 3 и 4 будут изменены на 5. А вот изменить большее значение Х на меньшее Y , если впереди есть пункты с индексом , большим Y , невозможно . Если в этом примере попытаться изменить индекс 6 на 4, то это п риведет к возникно вению исключительной ситуации EMenuError . Для обычных форм объединение происходит только на верхнем уровне в главном меню во время их активизации . В объединенном меню все подменю будут располагаться по возрастанию номера группового индек са , при этом : 1. если в присоединяемом меню есть пункты с таким же групповым индексом , что и в исходном , то все их множество заменяет все множество таких пунктов в исходном меню ; 2. все пункты присоединяемого меню , групповой индекс которых не встречается в исходном , добавляются к нему и вставляются на соответствующие их индексу места. К окнам интерфейса MDI все сказанное относится только при запуске приложения . Если в формах приложения со стилем fsMDIChild есть свои главные меню , то в этот момент они автома тически сольются с главным меню формы fsMDIForm независимо от состояния AutoMerge . На уровне работы с серверами OLE предусмотрены дополнительные возмож ности по объединению меню . Если в компонент TOLEContainer загружен объект OLE , то в конец подменю Edit о бычно добавляется подменю , из которого можно вызвать функции открытия и редактирования этого объекта . После активизации сервера он может не только вставлять свои подменю в главное , но и добавлять новые пункты к уже существующим подменю. Три метода TMainMen u используются для работы с меню OLE: 1. procedure PopulateOle2Menu(SharedMenu: HMenu; Groups: array of Integer; var Widths: array of Longint); 2. procedure GetOle2AcceleratorTable(var hAccel : THandle; var numAccels: Word; Groups: array of Integer) ; 3. p rocedure Set01e2MenuHandle(Handle: HMENU); 1.2.2. Компонент TLabel TLabel служит для отображения текста на экране . Можно изменить шрифт и цвет метки , если дважды щелкнуть на свойство Font в Инспекторе Объектов . Видно , что это легко сделать и во время выполнения программы , написав всего одну строчку кода. Этот компонент доступен из модуля STDCTRLS , и находится на странице Палитры ком понентов Standard . Компонент представляет собой статический текст . С помощью этого компо нента на рабочей поверхности формы можно отобразить информацию , сделать пояснения и показать названия других компонентов . Но он имеет и другую важную функцию — если в составе текста TLabel есть символы-акселераторы , информация об их нажатии может передаваться от TLabel другому элементу управления. Свойства компонента приведены в табл .1: Таблица 1 Свойства компонента TLabel Свойство Описание (Pb) property Caption: TCaption; TCaption = string[255]; Содержит строку с выводимым текстом. (Pb) property Alignment: TAlignment; Устанавливает правило выравнивания текста — по правому , левому краю или по центру клиентской области. (Pb) property AutoSiz e: Boolean; В случае True происходит автоматическое приведение размеров компонента к размерам текста и высоте шрифта. Продолжение табл .1 (Pb) property ShowAccelChar: Boolean; Показывает , отображается ли в TLabel акселератор (символ , перед которым стоит знак амперсанда — '&'). Если оно равно False , амперсанд никак не интерпрети руется . В случае True акселератор выделяется в строке подчеркиванием и нажатие клавиш <А lt >+<символ > приводит к передаче фокуса окну FocusControl (т.к . TLabel сам не является оконным компонентом ). (Pb) property FocusControl: TWinControl; Определяет оконный компонент , которому посылаются сообщения о вводе акселе ратора. (Pb) property Transparent: Boolean; Прозрачность фона компонента . Если свойство установлено в True , то при перерисовке элемента управления не про исходит закрашивание клиентской облас ти . В противном случае — происходит закрашивание кистью bsSolid и цветом Color . (Pb) property WordMrap: Boolean; Определяет возможность разрыва слов в случае , если длина выводимо го текста превышает ширину компонента. 1.2.3. Компонент TPanel TPanel - управляющий элемент , похожий на TGroupBox, использу ется в декоративных целях . Чтобы использовать TPanel, просто поместите его на форму и затем положите другие компоненты на него . Теперь при перемещении TPanel будут передвигаться и эти компоненты . TPanel используется также для создания панели инструментов и окна статуса. Этот компонент доступен из модуля EXTCTRLS , и находится на странице Палитры компонентов Standard . Этот компонент — является несущей конструкцией для размещения других элементов управления . В отличие от простой рамки ( TBevel ) панель сама явля ется оконным элементом управления и родителем для всех размещенных на ней компонентов . Часто ее используют для создания панелей инстру ментов , строк состояния и т . п. За внешнее оформление панели отвечают свойства : (Pb) property Bevel Inner: TPanelBevel; ( Р b) property BevelOuter: TPanelBevel; TPanelBevel = (bvNone, bvLowered, bvRaised) ; (Pb) property BevelWidth: TBevelWidth; TBevelWidth = 1..Maxint; (Pb) property BorderWidth: TBorderWidth; TBorderWidth = 0.. Maxint ; На границах панели размещаются две специ альные окаймляющие рамки ( bevels ): Bevellnner и BevelOuter . При помощи комбинации белого и серого цветов они имитируют трехмерность — приподнятость (bvRaised) или утоп-ленность (bvLowered). Обе рамки имеют ширину BevelWidth . Наружная — BevelOuter — располо жена прямо по периметру панели , вторая — Bevellnner — внутри на расстоянии BorderWidth от нее . Обе могут быть невидимыми ( bvNone ), приподнятыми или утопленными. Комбинируя сочетания bvLowered / bvRaised , можно создать вокруг панели "ров " или "вал ". Иллюзию т рехмерности может подчеркнуть также стиль обрамления компо нента : (Pb) property BorderStyle: TBorderStyle; TBorderStyle = bsNone .. bsSingle; Значение bsSingle означает , что панель будет окаймлена черной линией единичной толщины (по периметру , снаружи от о беих рамок ). Выравнивание текста заголовка панели определяется при помощи свойства : (Pb) property Alignment: TAlignment ; Свойство ( Pb ) property Locked : boolean ; предназначено для определения способа взаимодействия панели с размещен ными на ней объектами OL E . Если оно равно True , последние при активизации сервера OLE "по месту '" не могут заместить панель . В обработчике события : ( Pb ) property OnResize : TNotifyEvent ; может быть предусмотрена реакция пользователя на изменение размеров панели. 1.2.4. Компонент TBitBtn TBitBtn - кнопка вроде TButton, однако на ней можно разместить картинку (glyph). TBitBtn имеет несколько предопределенны х типов (bkClose, bkOK и др ), при выборе которых кнопка принимает соответствующий вид . Кроме того , нажатие кнопки на модальном окне (Form2.ShowModal) приводит к закрытию окна с соответствующим модальным результатом (Form2.ModalResult). Этот компонент дос тупен из модуля BUTTONS , и находится на странице Палитры компонентов Additional. Эта кнопка , будучи потомком TButton , может нести на себе пиктограмму и имеет рад дополнительных удобств в использовании . В Delphi уже определены стандартные виды кнопок : (Pb) property Kind: TBitBtnKind; TBitBtnKind = (bkCustom, bkOK, bkCancel, bkHelp, bkYes, bkNo, bkClose, bkAbort, bkRetry, bklgnore, bkAll); Для каждой из них определены : передаваемый форме результат ( ModalResult ): BitBtnModalResults: array[TBitBtnKind] of TModalResult = (0, mrOk, mrCancel, 0, mrYes, mrNo, 0, mrAbort, mrRetry, mrlgnore, inrAll); а также название и картинки для разных состояний . Достаточно установить значение свойства Kind , и кнопка сразу приобретет нужный вид . Более того , некоторые из видов кнопок при нажатии сразу совершают опре деленные действия . Так , bkHelp осуществляет инициализацию системы помощи со своим (или ближайшим ненулевым родительским ) контекстом . Кнопка вида bkClose закрывает форму , которой она принадлежит , вызывая ее метод Clos e . Кнопка будет отнесена к виду bkCustom, если она : 1. назначена Default , но при этом не принадлежит множеству [ bkOk , bkYes ]; 2. назначена Cancel , но не принадлежит множеству [ bkCancel , bkNo ]; 3. у нее изменена пиктограмма ; 4. модальный результат не соотве тствует определенному для этого вида кно пок. За внешний вид этой кнопки отвечают свойства , рассмотренные ниже . Стиль изображения кнопок в зависимости от операционной системы задается свойством : (Pb) property Style: TButtonStyle; TButtonStyle = (bsAutoDetect, bsWin31, bsNew); Стиль bsNew соответствует Windows 95. В любом случае корректным будет применение стиля bsAutoDetect, который сам распознает версию системы . Пиктограмма кнопки , которая вместе с текстом видна на ее поверхности, определяется свойством : (Pb) property Glyph: TBitmap; Для создания эффекта нажатия картинка должна немного изменяться в зависимости от состояния ; кроме того , отдельная картинка нужна для неактивного состояния (когда нажатие не воспринимается ). В свойстве Glyph должна быть одна битовая карта , но она может содержать картинки сразу для нескольких состояний кнопки (максимум четыре ). Они интерпретируются как соответствующие нормальному (отжатому ), запрещенному (неактивному ), нажатому и утопленному состояниям (п оследнее применяется только для кнопок TSpeedButton ). Для этого картинки должны быть расположены подряд вплотную по горизонтали . Например , при размере картинок 16х 16 нужна объединенная битовая карта 64х 16. Если каждая из картинок квадратная и ширина общей картинки нацело делится на высоту , то при присвоении ее свойству Glyph система сможет распознать их и скорректировать количество , определяемое свойством : (Pb) property NumGlyphs: TNumGlyphs ; TNumGlyphs = 1..4; При отрисовке в зависимости от состояния из б ольшой битовой карты будет использована нужная часть. Три свойства отвечают за расположение текста и картинки на поверхности кнопки : (Pb) property Layout: TButtonLayout ; Способ выравнивания пиктограммы относительно краев кнопки . Может быть одним из четырех : TButtonLayout = (biGlyphLeft, biGlyphRight, biGlyphTop, biGlyphBottom); Расстояние от соответствующего способу выравнивания края кнопки до пикто граммы описывается свойством : (Pb) property Margin: Integer ; Промежуток между пиктограммой и текстом равен : ( Pb) property Spacing: Integer ; Если свойства Margin , Spacing или оба не заданы (по умолчанию равны -1), значения этих промежутков выбираются системой . Кнопка также имеет метод Click и свойства Caption , ModalResult , Default и Cancel . Статус Default получают кнопки видов bkOk , bkYes , a Cancel — кнопки видов bkCancel, bkNo. 1.2.5. Компонент TSpeedButton TSpeedButton - кнопка для создания панели быстрого доступа к командам (SpeedBar). Пример - SpeedBar слева от Палитры Компонент в среде Delphi. Обычно на данную кнопку помещается только картинка (glyph). Этот компонент доступен из модуля BUTTONS , и находится на странице Палитры компонентов Additional. Эта кнопка с изображением может иметь как зависимую , так и независимую фиксацию . Она удобна для применения в составе панелей инструментов . По ведение этих к нопок во многом определяется свойством : (Pb) property Grouplndex: Integer; Если Grouplndex равен нулю , у кнопки вообще нет фиксации в нажатом состоянии и она не зависит от остальных кнопок , принадлежащих тому же родительскому элементу . Кнопки в группе (то есть с одинаковым ненулевым значением Grouplndex ) имеют зависимую фиксацию . Она также зависит от свойства : (Pb) property AllowAlIUp: Boolean; которое описывает поведение кнопок в группе , а именно : могут ли все кнопки одновременно быть отжаты . Если AllowAl IUp равно False (по умолчанию ), на жатую кнопку в группе можно отпустить , лишь нажав другую . Если AllowAlIUp равно True , кнопку можно отпустить повторным нажатием. Если необходимо фиксировать одну кнопку TSpeedButton , ей нужно присвоить уникальный группово й индекс , а AllowAlIUp установить в True . Поскольку в группе не могут одновременно находиться кнопки с различным значением этого свойства , при нажатии кнопки и изменении Grouplndex свой ство AllowAlIUp "рассылается " (присваивается ) остальным кнопкам с тем же значением Grouplndex . В группе не может быть нажато более одной кнопки . Определяет , нажата ли кнопка , свойство : (Pb) property Down: Boolean; Это свойство может изменяться как системой , так и программистом . Например , если при запуске программы необходим о , чтобы одна из кнопок уже была нажатой , ее свойство Down устанавливают в True . Текст кнопки определяет свойство Caption . Компонент имеет те же правила и свойства рисования картинки , что и TBitBtn . Они описываются свойствами Glyph , NumGlyphs , Layout , Marg in и Spacing . Для имитации щелчка предусмотрен метод Click . Двойной щелчок для TSpeedButton возможен только на нажатой кнопке — иначе он интер претируется как обычный . Описывается свойством : ( Pb ) property OnDblClick ; 1.2.6. Компонент 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 , изображение центрируется в пределах рабочей области . В противном случае — располагается в ее верхнем левом углу. 1.2.7. Компонент TTimer TTimer - таймер , событие OnTimer периодически вызывается через промежуток времени , указанный в свойстве Interval. Период времени может составлять от 1 до 65535 мс. Этот компонент доступен из модуля EXTCTRLS , и находится на странице Палитры компонентов System . Этот невизуальный компонент предназначен для уведомления программы об истечении определенных промеж утков времени . Компонент инкапсулирует системный таймер Windows и работает через посылку сообщений WM _ TIMER . Свойство ( Pb ) property Enabled : Boolean ; включает /выключает таймер , влияя на генерацию им событий . Будучи уста новлен в Enabled , таймер начинает ге нерировать события OnTimer через интер вал времени ( Р b) property Interval: Word; который измеряется в миллисекундах . После каждого истечения такого интервала инициируется обработчик , связанный с событием : (Pb) property OnTimer: TNotifyEvent; При этом прогр аммист получает очередной квант времени. При активизации и деактивизации таймера или изменении интервала в системе может не оказаться свободных таймеров . В этом случае генерируется исключительная ситуация EOutOfResources . 1.2.8. Компонент TStatusBar TStatusBar – строка состояния . Предназначена для размещения разного рода служебной информации в окнах редактирования , обычно располагается в нижней части основной формы . Компонент может иметь несколько секций , а также кнопку изменения размеров окна , в которое он помещен . С компонентом связывается объект класса TStatusPanel , который определяет панели компонента. Этот компонент находится на странице Палитры компонентов Win 32. 2. РАЗРАБОТКА ПРОГРАММЫ 2.1. Постан овка задачи Разработать игровую программу «Морской бой» , которая включает игровую панель , состоящую из двух полей для человека и компьютера . На поле расставляются 10 кораблей разного класса . Четыре корабля размером в одну ячейку , три корабля размером в дв е ячейки , два корабля размером в три ячейки , и один корабля размером в четыре ячейки . Поочередно противникам предоставляется возможность выстрела по чужому полю , результаты которого отображаются на нем . При попадании в корабль предоставляется возможность д ополнительного выстрела . Победа присуждается игроку , потопившему все корабли противника. Справочная информация содержит правила игры , версию программы , и автора работы. 2.2. Алгоритм реализации работы 2.2.1. Алгоритм реализации игровой программы Запус к программы осуществляется следующим образом : необходимо открыть папку , содержащую данную игру , и найти исполняемый файл morboy . exe . На этом файле следует выполнить двойной щелчок левой клавишей манипулятора мышь. Проект программы состоит из файла проекта , содержащего необходимые конструкции для исполнения , и двух модулей Unit 1 и Unit 2 (6, 7, 8). Модуль Unit 2 содержит форму AboutBox, и предназначен для вывода окна , содержащего информацию о программе и об авторе (рис .1). Рис .1. Информация о программе Модуль Unit 1 является основным модулем проекта , содержащим все необходимые для работы программы процедуры. После запуска программы на экран выводится основная форма Form 1 (рис .2), н а которой расположены следующие объекты : 1. Главное меню 2. Игровое поле компьютера 3. Игровое поле человека 4. Кнопки подтверждения / отмены хода 5. Строка состояния Рис .2. Вид программы после запуска Игра , т.е . работа программы , начинается с выбора в главном меню пункта «Игра» , в котором содержится подпункт «Новая» . После выбора этого подпункта , или нажатия клавиши F 2, происходит в ыполнение процедуры N 11 Click . Эта процедура предназначена для расстановки кораблей на игровых полях случайным образом (Приложение 1). Первоначально на форму выводится сообщение «Ваш ход» (блок 2). Далее переменным P и t 1 присваиваются значения True , и иниц иализируется генератор случайных чисел (блок 3). Затем организуется цикл с заданным количеством повторений по переменной U от 1 до 2 (блок 4). В этом цикле , в свою очередь организуются два вложенных цикла с заданным количеством повторений , в которых происх одит обнуление элементов массива записи (блоки 5, 6 и 7). После этого выполняется операция присваивания m[u].k:=20 (блок 8). Это – общее количество ячеек , которое занимают все корабли одного игрового поля. Далее организуются два вложенных цикла , первый с п араметром I от 4 до 1 с шагом – 1, второй с параметром j от 1 до 5- I с шагом 1 (блоки 9 и 10). В этих циклах выполняется расстановка кораблей случайным образом . Внутри этих циклов организуется еще один цикл типа «До» с условием окончания цикла t = True (блок 32). В теле цикла происходит операция присваивания t:=true (блок 11), и проверяется многовариантное условие , чему равно значение выражения random(2), сгенерированное случайное число , нулю или единице . Если это выражение рано нулю (блок 12), будет происход и ть установка корабля по горизонтали и будут выполнены следующие действия : генерируются случайным образом координаты X 1 и Y 1 (блок 13), организуется цикл с заданным числом повторений по переменной X (блок 14), в котором проверяется условие неравенства нулю ячейки с координатами X , Y 1 (блок 15), и если это так , то переменной t присваивается значение False (блок 16). И , в этом же цикле проверяется условие истинности переменной t . Если переменная t = True (блок 17), то происходит пропуск некоторых ячеек (блок 18) , и установка ячеек корабля (значение ячейки равно 2) циклически (блоки 19 и 20). После этого опять происходит пропуск некоторых ячеек (значение их равно 1) (блок 21). На этом цикл завершается (блок 14), и проверяется следующее значение выражения random(2 ) . Если это выражение равно единице (блок 22), то происходит установка корабля по вертикали . Все выполняемые действия этой ветки алгоритма аналогичны вышеописанным , с применением циклов по переменной Y (блоки 23 - 31). После выполнения этих действий проверя ется условие окончания цикла «До» (блок 32), и завершаются два вложенных цикла по переменным I и J (блоки 9 и 10). Далее , происходит визуальная расстановка кораблей на игровом поле человека . Для этого организуются два вложенных цикла по переменным I и J со значениями от 1 до 10 (блоки 33 и 34). В циклах проверяется условие заполнения ячейки поля клеткой корабля m[1].a[i,j]=2 (блок 35), и если это логическое выражение истинно , то переменной r присваивается название файла , содержащего картинку корабля (блок 3 7), иначе – пустую картинку (блок 36). Далее , с помощью двух процедур Case 1 происходит прорисовка ячеек на игровом поле (блоки 38 и 39). Последние действия в этой процедуре – вывод на панель строки состояния значений количества выстрелов и попаданий (блок 40), а также происходит присваивание переменным следующих значений : tm1:= T ime и new:=Tru e . Процедура Case 1, про которую было сказано выше , выполняет следующие действия (Приложение 2): при обращении к определенной ячейки игрового поля человека или компьютер а происходит прорисовка ячейки специальной картинкой , в зависимости от значения переменной r . В процедуре происходит множественный выбор , по номеру ячейки , и выполняется действие загрузки растрового файла в компонент TSpeedButton (блоки 2 - 401). После тог о , как все корабли были расставлены на игровом поле , программа ожидает срабатывания нескольких событий : · щелчка левой клавишей манипулятора мышь по ячейки игрового поля компьютера ; · выбора из пункта «Игра» главного меню подпункта «Выход» ; · выбора из пун кта «Помощь» главного меню подпункта «О программе» ; · выбора из пункта «Помощь» главного меню подпункта «Правила игры» При описанном первым событии происходит обращение к процедуре SpeedButton101Click (Приложение 3). В теле процедуры сразу проверяется пере менная t 1. Если t 1 не равна значению True (блок 2), то процедура завершает свою работу , иначе происходит присвоение переменной S имени объекта игрового поля , по которому производится щелчок , из имени объекта удаляется подстрока « SpeedButton » , оставшийся но мер объекта преобразуется в число (блок 3). После этого проверяется условие , делится ли это число на 10 с остатком (блок 4). Если это так , то переменной J присваивается значение I -90 (блок 6), иначе J = I -100 (блок 5). Далее , проверяется делимость числа J на 10 без остатка (блок 7). Если это условие выполняется , то переменной U присваивается значение 10 (блок 9), иначе вычисляется остаток от деления переменной J на 10 (блок 8). Полученное значение переменной U проверяется с использованием многовариантного выб ора , и в соответствии со значением переменной S присваивается одна из букв русского алфавита , от А до К (блоки 10 - 29). Потом проверяется условие , был ли щелчок на данной ячейке (блок 30), если щелчка не было , то осуществляется переход на положительную ве тку алгоритма , в которой , во-первых , осуществляется вывод в ячейку картинки , показывающей сделанный ход (блок 31), во-вторых , происходит вывод над игровым полем человека кода произведенного хода (блок 32), и в-третьих , переменной t 1 присваивается значение False , и кнопки подтверждения / отмены хода становятся доступными (блок 33). На этом процедура завершает свою работу (блок 34). При подтверждении сделанного хода , т.е . при щелчке на кнопке OK , происходит вызов процедуры BitBtn 1 Click (Приложение 4), которая производит так называемый выстрел , и в соответствии с этим , отмечает необходимые ячейки игровых полей. После вызова процедуры происходит приращение переменной KL на единицу (блок 2), и проверяется ячейка игрового поля (блок 3). Если в ячейке есть клетка к орабля , то выводится соответствующая картинка с помощью процедуры Case 1 (блок 4), уменьшается счетчик количества клеток кораблей , и соответствующая клетка помечается как использованная (значение равно 3) (блок 5). Далее , происходит проверка количества «жив ых» клеток кораблей . Если это количество равно нулю (блок 6), то выводится сообщение «Победа !» (блок 7), переменным P и t 1 присваивается значение False , кнопки подтверждения / отмены хода становятся неактивными (блок 8), и процедура завершает свою работу ( блок 19). Если количество «живых» клеток кораблей не равно нулю (блок 6), то выводится сообщение «Попал !» (блок 9), и переменной P присваивается логическое значение False (блок 10). При этом происходит объединение этой ветки алгоритма с веткой «Нет» блока условия 3 (пустая клетка ), в которой выводится сообщение «Промах» (блок 11), соответствующая ячейка заполняется необходимым изображением с помощью процедуры Case 1 (блок 12), ячейка помечается , как использованная (значение равно 3), и переменной P присваива ется логическое значение True (блок 13). Далее , переменной t 1 присваивается логическое значение True , вычисляется результативность S (блок 14). На панель 2 строки состояния выводятся значения количества выстрелов , количества попаданий и результативность иг рока (блок 15), кнопки подтверждения / отмены хода становятся неактивными (блок 16), и проверяется значение переменной p (блок 17). Если это значение равно True , то происходит вызов процедуры Komp (блок 18), которая производит ход компьютера. Процедура Kom p (Приложение 5) начинается с двух вложенных циклов типа «До» , в которых вычисляются координаты выстрела случайным образом (блок 2). После этого проверяется условие завершения внутреннего цикла (блок 3). Далее происходит многовариантная проверка координаты по вертикали В 1 от 1 до 10, в результате которой переменной S присваивается определенное значение , лежащее в промежутке от А до К (блоки 4 - 23). Выводится код хода компьютера над игровым полем (блок 24), и соответствующим образом заполняется ячейка игров ого поля , переменной PK присваивается необходимое логическое значение (блоки 25 - 29). Далее , происходит приращение количества выстрелов , вычисляется результативность ( S ) (блок 30), и на панель 0 строки состояния выводятся значения количества выстрелов , ко личества попаданий , и результативность (блок 31). Потом , проверяется условие завершения внешнего цикла «До» (блок 32), и если условие выполняется , то процедура заканчивает свою работу (блок 33). При отмене сделанного пользователем хода , т.е . при щелчке на кнопку NO , происходит вызов процедуры BitBtn 2 Click (Приложение 6). В этой процедуре очищается ячейка игрового поля с помощью процедуры Case 1 (блок 2), переменной t 1 присваивается логическое значение True , и кнопки подтверждения / отмены хода становятся неа ктивными (блок 3). В этом же приложении приведена процедура Timer 1 Timer (Приложение 6), которая основана на невизуальном компоненте Timer , и рассчитывает время игры . Здесь , если выполняется условие new = True (блок 2), то на панель 1 строки состояния выводит ся значение времени игры (блок 3). Все процедуры находится в модуле Unit 1, текст которого приведен в приложении 7. 2.2.2. Реализация справочной информации Справочная информация (правила игры ) реализована с помощью программы Help Development Studio . Эта программа позволяет создать файл справочной информации для Windows , используя текст формата Rich Edit Text . В процессе работы этой программы создается файл проекта справки *. hmp , который впоследствии может быть откомпилирован в файл справки (*. hlp ). В данн ой курсовой работе был создан файл проекта справки morboy . hmp , который был откомпилирован с помощью программы Help Development Studio , Microsoft Help WorkShop , входящей в состав Borland Delphi 6.0, и компилятора HcRtf . exe в файл morboy . hlp (рис .6). 2.3. Описание пользовательского интерфейса После запуска программы на экран выводится основное окно программы (рис .2). Необходимо вызвать главное меню и выбрать из пункта «Игра» подпункт «Новая» (рис .3). Рис .3. Программа с открытым главным меню После выбора происходит расстановка кораблей , и игра начинается (рис .4). Рис .4. Игра Игроку предос тавляется право первого хода . Ход осуществляется путем щелчка левой кнопкой мыши на игровом поле . После щелчка по клетке поля на ней появляется изображение мины (рис .4), и игроку предоставляется право подтвердить или отменить ход с помощью кнопок OK и No . После подтверждения в ячейке появляется изображение результата хода , а в нижней левой части окна появляется сообщение о результате : «Попал» (рис .4) или «Промах !» . Если был произведен результативный выстрел , то игроку дается право внеочередного хода . В про т ивном случае право хода передается компьютеру . Победа присуждается за все потопленные корабли , и на этом игра заканчивается (рис .5). Горячие клавиши , применяемые при работе программы : 1. Alt +И – Вызов пункта «Игра» главного меню 2. F 2 – Новая игра 3. F 10 – Выход в систему 4. Alt + N – Отмена хода Рис .5. Победа в игре Если в процессе игры пользователю необходимо обратиться к правилам , то с помощью пункта «Помощь» главного меню можно вызвать подпункт «Правила игры» . В результате появится окно справки , показанное на рис .6. Рис .6. Окно справки ЗАКЛЮЧЕНИЕ В результате выполнения дан ной курсовой работы был получен игровой программный продукт , названный «Морской бой» . Было проведено исследование компонентов программной среды Borland Delphi 6.0, которые использовались при создании игры. В результате исследования были выявлены следующие недостатки полученного программного продукта : 1. Низкий исскуственный интеллект , т.е . ход компьютера осуществляется случайным образом , что делает маловероятным победу компьютера ; 2. При полном потоплении корабля это никак не отражается ; 3. Невозможность во зврата на несколько ходов назад ; 4. Работоспособность приложения только в среде Windows ; 5. Невозможность ручной расстановки кораблей игрока. Однако , помимо недостатков , есть и достоинства у этого программного продукта : 1. Есть возможность отменить неверно сделанный ход с помощью кнопок подтверждения / отмены ; 2. Создана интерактивная справка с правилами игры ; 3. Программный продукт малотребователен к системным ресурсам компьютера . Минимальная конфигурация : процессор – не ниже Pentium , оперативная память – не ниже 16 Mb , операционная система – Windows 95 / 98/ Me / NT / 2000 / XP . В результате учета всех сделанных выше замечаний возможно улучшение созданного программного продукта , на которое потребуется минимум изменений исходного кода программы. СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 1. Журнал Компьютер Пресс , N 1, 1996 2. Дворак Дж . 350 игр для IBM PC . – С-Пб .:Пергамент , 1994, -318с. 3. Фаронов В.В . Delphi 4. Учебный курс . – М .: Нолидж , 1999. -447с. 4. Дарахвелидзе П.Г ., Марков Е.П . Delphi – среда визуального программирования . – СПб .: BHV -Санкт-Петербург , 1996. -352с. 5. Епанешников А ., Епанешников В . Программирование в среде Delphi 2.0. Учебное пособие . В 4-х частях . Ч .1. Описание среды . – М .:ДИАЛОГ-МИФИ , 1997. -235с. 6. Епанешников А ., Епанешников В . Программиро вание в среде Delphi 2.0. Учебное пособие . В 4-х частях . Ч .2. Язык Object Pascal 9.0. – М .:ДИАЛОГ-МИФИ , 1997. -319с. 7. Фаронов В.В . Турбо Паскаль 7.0. Начальный курс . Учебное пособие . – М .:Нолидж , 1997. -616с. 8. Фаронов В.В . Турбо Паскаль 7.0. Практика про граммирования . Учебное пособие . – М .:Нолидж , 1997. -432с.
1Архитектура и строительство
2Астрономия, авиация, космонавтика
 
3Безопасность жизнедеятельности
4Биология
 
5Военная кафедра, гражданская оборона
 
6География, экономическая география
7Геология и геодезия
8Государственное регулирование и налоги
 
9Естествознание
 
10Журналистика
 
11Законодательство и право
12Адвокатура
13Административное право
14Арбитражное процессуальное право
15Банковское право
16Государство и право
17Гражданское право и процесс
18Жилищное право
19Законодательство зарубежных стран
20Земельное право
21Конституционное право
22Конституционное право зарубежных стран
23Международное право
24Муниципальное право
25Налоговое право
26Римское право
27Семейное право
28Таможенное право
29Трудовое право
30Уголовное право и процесс
31Финансовое право
32Хозяйственное право
33Экологическое право
34Юриспруденция
 
35Иностранные языки
36Информатика, информационные технологии
37Базы данных
38Компьютерные сети
39Программирование
40Искусство и культура
41Краеведение
42Культурология
43Музыка
44История
45Биографии
46Историческая личность
47Литература
 
48Маркетинг и реклама
49Математика
50Медицина и здоровье
51Менеджмент
52Антикризисное управление
53Делопроизводство и документооборот
54Логистика
 
55Педагогика
56Политология
57Правоохранительные органы
58Криминалистика и криминология
59Прочее
60Психология
61Юридическая психология
 
62Радиоэлектроника
63Религия
 
64Сельское хозяйство и землепользование
65Социология
66Страхование
 
67Технологии
68Материаловедение
69Машиностроение
70Металлургия
71Транспорт
72Туризм
 
73Физика
74Физкультура и спорт
75Философия
 
76Химия
 
77Экология, охрана природы
78Экономика и финансы
79Анализ хозяйственной деятельности
80Банковское дело и кредитование
81Биржевое дело
82Бухгалтерский учет и аудит
83История экономических учений
84Международные отношения
85Предпринимательство, бизнес, микроэкономика
86Финансы
87Ценные бумаги и фондовый рынок
88Экономика предприятия
89Экономико-математическое моделирование
90Экономическая теория

 Анекдоты - это почти как рефераты, только короткие и смешные Следующий
Объявление по радио:
- Внимание! В нашем торговом центре найден мальчик Алёша. 26 лет. Родителей просят подойти в бар и оплатить два "Гиннесса".
Anekdot.ru

Узнайте стоимость курсовой, диплома, реферата на заказ.

Обратите внимание, курсовая по программированию "Разработка игровой программы "Морской бой"", также как и все другие рефераты, курсовые, дипломные и другие работы вы можете скачать бесплатно.

Смотрите также:


Банк рефератов - РефератБанк.ру
© РефератБанк, 2002 - 2016
Рейтинг@Mail.ru