Программирование >>  Программирование с использованием ajax 

1 ... 124 125 126 [ 127 ] 128 129 130 ... 396


I file:iHC BegVCSharp/ChaptiTl3 Chi3CarflLib/Ch13C*rdCUenLDtn/Debug:h13CardCI nt.EXF


Puc. 13.8. Карточная игра в действии

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

Резюме

В этой главе были описаны некоторые более сложные приемы, расширяющие знания по языку С#. Далее перечислены ключевые моменты, с которыми вы ознакомились в этой главе.

□ Квалификация наименований типов в пространствах имен (с более детальным описанием, чем приводилось в предыдущих главах).

□ Применение операции : : и ключевого слова global для гарантии того, что ссылки на типы являются ссылками именно на те типы, которые требуются.

□ Реализация собственных объектов исключений и передача более детальной информации обработчикам исключений.



Упражнения

1. Напишите с использованием универсального синтаксиса (object sender, EventArgs е) код обработчика событий, способного принимать от приведенного ранее в этой главе кода либо событие Timer. Elapsed, либо событие Connection.MessageArrived. Этот обработчик должен выводить на экран строку, сообщающую о том, событие какого типа было получено, вместе со свойством Message параметра MessageArrivedEventArgs или свойством SignalTime параметра ElapsedEventArgs в зависимости от того, какое событие произошло.

2. Модифицируйте пример приложения карточной игры так, чтобы в нем выполнялась проверка на предмет соблюдения такого же более интересного условия выигрыша, как и в популярной карточной игре рамми . В соответствие с правилами, выигравшим считается игрок, у которого на руках окажется два набора карт - один, состоящий из трех карт, и второй, состоящий из четырех карт. Под набором подразумевается либо последовательность карт одной масти (например, 3 червей, 4 червей, 5 червей, 6 червей), либо несколько карт одного достоинства (например, 2 червей, 2 пик, 2 бубен).

□ Использование специального исключения в коде для CardLib - библиотеки карточной игры, которая разрабатывалась в последних нескольких главах.

□ События и обработка событий, что является очень важной темой. Требуемый код, хотя и довольно замысловат и непрост для изучения в начале, на самом деле является достаточно простым; к тому же, с обработчиками событий в настоящей книге придется встретиться еще не раз.

□ Некоторые наглядные примеры событий и способы их обработки.

В главе снова были внесены изменения в проект CardLib, после чего он был использован для создания простого приложения карточной игры. Это приложение позволило проиллюстрировать практически все из тех приемов, которые рассматривались в этой книге до сих пор.

Вместе с этой главой подошло к концу не только описание всех приемов ООП, применяемых в программировании на С#, но и описание всей версии языка С# 2.0. В следующей главе речь пойдет о новых функциональных возможностях С#, которые появились в версии С# 3.0.




Расширения в языке С# 3.0

Язык С# не стоит на месте. Андерс Хейлсберг (Anders Hejlsberg), автор языка С#, и другие разработчики в Microsoft продолжают обновлять и шлифовать его. На момент написания настоящей книги самые последние изменения были представлены в версии С# 3.0, вышедшей в составе линейки продуктов Visual Studio 2008. К этому этапу у вас может возникнуть вопрос, что же еще могло потребоваться; и действительно в плане функциональных возможностей в предьщущих версиях С# мало чего не достает. Это, однако, вовсе не означает, что разработчики языка С# не могут упрощать некоторые аспекты программирования на С# или модернизировать отношения между С# и другими технологиями.

Возможно, легче всего объяснить это, вспомнив о дополнении, которое появилось между версиями 1.0 и 2.0- обобщения. Хотя обобщения и являются чрезвычайно полезными, никаких функциональных возможностей, которых нельзя было бы получить ранее, они на самом деле не предоставляют. Несомненно, они значительно упрощают дело, и без них пришлось бы писать гораздо больше кода. Вряд ли кто-то захотел бы вернуться обратно в те времена, когда еще не было обобщенных классов коллекций. И, тем не менее, существенной частью языка С# обобщения не являются. Но зато улучшением в этом языке их, несомненно, назвать можно.

Расширения в версии С# 3.0 выглядят во многом так же. Они предлагают новые способы для получения тех или иных результатов, которых раньше было трудно достигать без применения длинных и/или сложных приемов программирования.

О двух таких новых средствах в версии С# 3.0, как автоматические свойства и частичные методы, уже рассказывалось в этой книге (см. главу 10). В обоих случаях можно было заметить, что подобные изменения скорее влияют на компиляцию кода С#, чем делают нечто совершенно новое. Это является общим свойством всех расширений С#, которое лишь подтверждает тот факт, что никаких значительных изменений в таких улучшениях не наблюдается.



1 ... 124 125 126 [ 127 ] 128 129 130 ... 396

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика