14.02.2017 Views

. Стиллмен, Дж. Грин - Изучаем C#, 2-е издание

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

запиши их<br />

Длинны<strong>е</strong><br />

упраж н<strong>е</strong>ш я<br />

Создани<strong>е</strong> классо б а т <strong>е</strong><br />

Ф орм а со хр а н я <strong>е</strong> т экз<strong>е</strong>м пляр Game, у п р а в л я ю щ и й и гр о й . П о с м о тр и т <strong>е</strong> , как<br />

о н использу<strong>е</strong>тся.<br />

8 классах Player и Game им<strong>е</strong>ются ссылки на<br />

c l a s s Game {<br />

эл<strong>е</strong>м<strong>е</strong>нт формы TextBoxJ в котором появляются<br />

сообщ<strong>е</strong>ния о ход<strong>е</strong> игры. Уб<strong>е</strong>дит<strong>е</strong>сь, что<br />

p r i v a t e L is t < P la y e r > players;<br />

p r i v a t e D ic t io n a r y < V a lu e s , P la y e r > books; в в<strong>е</strong>рхн<strong>е</strong>й части файлов <strong>е</strong>сть строка «using<br />

p r i v a t e D eck stock;<br />

System.VJindows.Forms;».<br />

p r i v a t e T extB ox textBoxOnForm;<br />

p u b l i c Game( s t r i n g p layerN am e, IE n u m e r a b le < str in g > opponentN am es, T extB ox textBoxOnForm )<br />

Random random = new Random{);<br />

^<br />

t h i s . textB oxO nForm = textB oxO nForm ;<br />

p l a y e r s = new L i s t < P l a y e r > () ;<br />

p la y e r s .A d d (n e w P la y e r (p la y e r N a m e , random, textB oxO nForm ))<br />

fo r e a c h ( s t r i n g p la y e r i n opponentN am es)<br />

p la y e r s .A d d (n e w P la y e r ( p l a y e r , random, textB oxO nForm ))<br />

b o o k s = new D ic t io n a r y < V a lu e s , P la y e r > () ;<br />

s t o c k = new Deck О ; _ -у.<br />

D e a l ();<br />

p l a y e r s [0] .S ortH an d O<br />

p r i v a t e v o id D e a lO {<br />

/ / Им<strong>е</strong>нно зд <strong>е</strong> с ь начина<strong>е</strong>тся и гр а .<br />

Это пол<strong>е</strong>зно и для инкапсуляции.<br />

Если использовать 1Епит<strong>е</strong>гаЫ<strong>е</strong><br />

вм<strong>е</strong>сто Listj вы н<strong>е</strong> смож<strong>е</strong>т<strong>е</strong><br />

случайно отр<strong>е</strong>дактировать код.<br />

/ / Т а су <strong>е</strong>т ся к ол ода, р а з д а <strong>е</strong> т с я по пять карт каждому и гр ок у, за т <strong>е</strong>м с помощью<br />

/ / цикла f o r e a c h вызыва<strong>е</strong>тся м <strong>е</strong>тод P u llO u tB o o k s О для каж дого и гр ок а.<br />

Инт<strong>е</strong>рф<strong>е</strong>йс IEnumerable<br />

д<strong>е</strong>ла<strong>е</strong>т классы бол<strong>е</strong><strong>е</strong> гибкими.<br />

Об этом сл<strong>е</strong>ду<strong>е</strong>т помнить<br />

при дальн<strong>е</strong>йш<strong>е</strong>м р<strong>е</strong>дактировании<br />

кода. В данный мом<strong>е</strong>нт<br />

для получ<strong>е</strong>ния экз<strong>е</strong>мпляра<br />

класса Game можно<br />

написать stringQ.List.<br />

p u b l i c b o o l PlayOneRound(i n t s e le c t e d P la y e r C a r d ) {<br />

}<br />

/ / Сыграйт<strong>е</strong> один р а з . Парам<strong>е</strong>тром я вл я<strong>е</strong>тся выбранная игроком карта и з им<strong>е</strong>ющихся на руках<br />

/ / Вызовит<strong>е</strong> м <strong>е</strong>тод A skForA C ardО для каждого и з игроков, начиная с ч<strong>е</strong>лов<strong>е</strong>ка<br />

/ / с нул<strong>е</strong>вым инд<strong>е</strong>к сом . Зат<strong>е</strong>м вы зовит<strong>е</strong> м <strong>е</strong>тод P u llO u tB o o k sО -<br />

/ / <strong>е</strong>сл и он в<strong>е</strong>рн <strong>е</strong>т зн ач<strong>е</strong>н и <strong>е</strong> t r u e , зн ач и т, у игрока кончились<br />

/ / карты. Закончив со вс<strong>е</strong>ми игроками, о тсор ти р уй т<strong>е</strong> карты<br />

/ / ч <strong>е</strong>л ов<strong>е</strong>ка (чтобы список в форм<strong>е</strong> выгляд<strong>е</strong>л к р а с и в о ). П ров<strong>е</strong>рьт<strong>е</strong>, н<strong>е</strong> закончились<br />

/ / ли карты в з а п а с <strong>е</strong> . В сл уч а<strong>е</strong> полож ит<strong>е</strong>льного р <strong>е</strong> зу л ь т а т а оч исти т<strong>е</strong> пол<strong>е</strong> T extB ox<br />

/ / и вы в<strong>е</strong>дит<strong>е</strong> ф разу "The s t o c k i s o u t o f c a r d s . Game o v e r ! " .<br />

p u b l i c b o o l PullOutBooks(P la y e r p la y e r ) {<br />

}<br />

/ / Игроки выкладывают в зя т к и . М<strong>е</strong>тод возвращ а<strong>е</strong>т зн ач<strong>е</strong>ни <strong>е</strong> t r u e , <strong>е</strong>сл и карты у<br />

/ / игрока за к о н ч и л и сь . Каждая в зя тк а д о б а в л я <strong>е</strong>тся в словарь B o o k s.<br />

p u b l i c s t r i n g DescribeBooksО {<br />

}<br />

/ / Этот м <strong>е</strong>тод возвращ а<strong>е</strong>т длинную стр ок у с описани<strong>е</strong>м в зя т о к каждого игрока,<br />

/ / взяв з а о сн о в у сод<strong>е</strong>рж ани<strong>е</strong> словаря B ooks: "Joe h a s а book o f s i x e s .<br />

/ / (п <strong>е</strong>р<strong>е</strong>н ос строки) Ed h a s a book o f A c e s ."<br />

384 глава 8

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!