Компьютерные книги
Главное меню
Главная Поиск по сайту Добавить материал О нас Карта книг Карта сайта
Реклама
computersbooks.net -> Добавить материал -> Языки программирования -> Ватсон К. -> "С#" -> 133

С# - Ватсон К.

Ватсон К. С# — Лори, 2005 . — 879 c.
ISBN 1-861004-98-2
Скачать (прямая ссылка): vatsonc2005.pdf
Предыдущая << 1 .. 127 128 129 130 131 132 < 133 > 134 135 136 137 138 139 .. 404 >> Следующая


)

Console. WriteLine ("Card in play: (QJ*, playCard);

Ц Вывод подсказки игроку — любо взять открытую карту со стола, // либо новуи карту из колоды bool inputOK = false; do (

Console.WriteLine(‘Press T to cake card in play or D to * + 'draw:'); string input = Console.ReadLine(); if (input.ToLower () *=* *t')

(

// Добавление карты, взятой со стола, к картам,

// находящимся у игрока

Console.WriteLine('Drawn: (0)'. playCard); players [currentPlayer] .PlayHand. Add (playCard) ; inputOK • true;

>

if (input.ToLower0 **= 'd')

{

// Добавление карта, ято-. из колоды, х картам,

// находящимся у игрока Card newCard;

// добавление карты только в том случае, если она еде // не на руках bool cardlelnPlayerHand,-do (

. newCard » playDeck.GetCard(currentCard++)j

cardlsInPlayerHand = false;

// Просмотр а цикле карт всех игроков с цель»

// обнаружения карты newCard у кого-либо на руках foreach (Player testPlayer in players)

(

cardlsInPlayerHand |=

testPlayer.PlayHand.Contains(newCard)j

)

) while (cardlsInPlayerHand);

// Включение обнаруженной карты в карты, находящиеся // на руках

Console.WriteLinet'Drawn: (0)', newCard); players(currentPlayer).PlayHand. Add(newCard)i inputOK = true;

>

) while [inputOK =* false);
События ________________285

/ / Вывод перенумерованных карт в новом раскладе Console. WriteLine< 'New hand: ')

for (int i = Of i < players ICurrenCPlayer], play Hand. Count; i++)

{

Console.WriteLine('[QJ: {1J', i + 1,

players[currentplayerl.PlayHand[i- I) i

) _

II Приглашение игроку снести какую-либо карту inputOK - false; int choice * -1(

do '

(

Console.WriteLine('Choose card to discard:'); string input = Console.ReadLine<); try C

// Попытка преобразовать введенную информацию в допустимый // диапазон карт

choice * Convert.ToInt32(input); if ((choice > 0) u (choice <¦ 8) ) inputOK * true»

> . ' catch [

II В случае неудачи при попытке преобразовать аеденцув // информацию, продолжаем выводить приглашение

)

} while (inputOK == false);

II Помещаем ссылку на сносимую карту в playCard (кладем карту 11 ил стоп) , после чего удаляем ее из карт, находящихся на руках playCard - players[currentPlayer] .PlayHand[choice - Hi playerstcurrentPlayer].PlayHand.RemoveAt(choice - 1))

Console,WriteLine('Discardings (0)*, playCard);

11 Разделение текста, выводящегося для различных игроков Console.WriteLine() ;

t / Проверка на предмет того, не выиграл ли кто-либо из игроков, //и выход из цикла по игрокам в таком случае GameWon =¦ players [currentplayerj.HasWonO ; if (GameWon ==¦ true) break»

}

) while (GameWon == false);

И Завершение игры и возврат информации о выигравшем игроке, return currentPlayer;

}

) '

)

Вы можете развлечься и поиграть з эту игру, только не забудьте уделить некоторое время подробному изучению кода. Вы также можете попробовать включить точку останова в метод Reshuffle о н запустить игру с 7 игроками. Если при этом карты будут постоянно сдаваться, а сданная карта — сбрасываться, то очень скоро произойдет пересдача, поскольку при игре с 7 игроками остаются свободными только три карты, Таким способом вы сможете убедиться, что все работает правильно, наблюдая за тем, как эти три карты появляются заново.
286___________________ Глава 12

Итоги

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

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

Этой главой завершается не только исчерпывающее описание ООП, применительно к программированию на С#, но и описание языка C# как такового. Начиная с этого момента мы будем применять полученные знания для реализации более сложных сценариев, например, для создания Windows- и web-приложений, а также для дальнейшего использования .NET Framewodt.

Упражнения

1. Напишите код, используя синтаксис общего назначения (object sender, EventArgs е) для обработки либо

События Timer. Elapsed, либо события Connection.MessageArrived, которые поступают из. кода, описанного в данной главе.

Обработчик должен выводить строку, указывающую на тип полученного события, а также либо поле Message параметра MessageAri-ivedEventArgs, либо СВОЙСТВО SignalTime параметра ElapsedEventArgs — в зависимости от типа полученного события.

2, Измените приведенный пример карточной игры так, чтобы осуществлялась проверка более интересного условия выигрыша,
Предыдущая << 1 .. 127 128 129 130 131 132 < 133 > 134 135 136 137 138 139 .. 404 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

Эком "Microsoft Excel 2000 шаг за шагом Русская версия самоучитель " (Самоучитель)

Поляков А.Ю. "Методы и алгоритмы компьютерной графики в примерах Vizual C++" (Графика)

Баяковский Ю.М. "Графическая библиотека Open GL " (Графика)

Валиков А. "Технология " (Языки программирования)
Авторские права © 2013 ComputersBooks. Все права защищены.