14.02.2017 Views

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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

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

р<strong>е</strong>ш<strong>е</strong>ни<strong>е</strong><br />

длинных<br />

П р З Ж Н <strong>е</strong> Н И Й В о т как п о л н о с т ь ю в ы гл я д я т м <strong>е</strong>тоды д л я кл а сса Game.<br />

p r i v a t e v o id Deal О { М<strong>е</strong>тод PealQ втыва<strong>е</strong>тся в начал<strong>е</strong><br />

s t o c k . S h u f f l e О ;<br />

м асу<strong>е</strong>т колоду и разда<strong>е</strong>т<br />

fo r ( i n t 1 = 0; i < 5; i++)<br />

f o r e a c h (P la y e r p la y e r i n p la y e r s )<br />

каждому игроку no пять карт.<br />

Зат<strong>е</strong>м он собира<strong>е</strong>т взятки, <strong>е</strong>сли<br />

p l a y e r . TakeCard (s t o c k . D e a l () ) ; маковы<strong>е</strong> появляются.<br />

f o r e a c h (P la y e r p la y e r i n p la y e r s )<br />

P u llO u t B o o k s ( p la y e r ) ;<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 />

Если посл<strong>е</strong> того<br />

как игрок спросил<br />

картц, образовалась<br />

взятка, она<br />

У к<strong>е</strong>-го забира<strong>е</strong>тся.<br />

Ьсли взяток н<strong>е</strong>т<br />

он б<strong>е</strong>р<strong>е</strong>т новы<strong>е</strong> '<br />

карт из за-}<br />

naca.<br />

}<br />

V a lu e s cardT oA skFor = p l a y e r s [ 0 ] . P e e k ( s e le c t e d P la y e r C a r d ) .V a lu e ,•<br />

f o r ( i n t i = 0; i < p l a y e r s . Count; i++ ) {<br />

i f ( i == 0)<br />

p l a y e r s [ 0 ] .A sk F o r A C a r d (p la y er s, 0, s t o c k , ca rd T o A sk F o r );<br />

e l s e<br />

p la y e r s [ i] .A s k F o r A C a r d ( p la y e r s , i , s t o c k ) ;<br />

i f ( P u l lO u t B o o k s ( p la y e r s [ i] )) {<br />

textB oxO n F orm .T ext += p la y e r s [ i] .N a m e<br />

i n t c a rd = 1;<br />

+ " drew a new hand" +<br />

w h ile (c a rd 0)<br />

p l a y e r s [i ] . T ak eC ard (s t o c k . D e a l ()]<br />

c a r d + + ;<br />

}<br />

p l a y e r s [0] .S o rtH a n d O ;<br />

i f (s to c k .C o u n t ==0) {<br />

textB oxO nF orm . T ext =<br />

"The s t o c k i s o u t<br />

r e t u r n t r u e ;<br />

}<br />

r e t u r n f a l s e ;<br />

РУ^тся!^ч^тТб1Типог>яд^‘^'^‘ copmucnucoK.<br />

Зат<strong>е</strong>м n p o 6 eS em !^^ отобража<strong>е</strong>мый<br />

лась ли игра b L u J Z<br />

закончиp<br />

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

E n v ir o n m e n t. N ew L ine;<br />

К<br />

I<br />

Посл<strong>е</strong> щ<strong>е</strong>лчка на кнопк<strong>е</strong> Ask for<br />

a card игра вызыва<strong>е</strong>т м<strong>е</strong>тод<br />

AskForACardQ с выбранной<br />

картой в кач<strong>е</strong>ств<strong>е</strong> парам<strong>е</strong>тра.<br />

Зат<strong>е</strong>м м<strong>е</strong>тод AskForACardQ<br />

вызыва<strong>е</strong>тся для каждого из<br />

игроков.<br />

o f c a r d s . Game o v e r ! E n viron m en t.N ew L in e;<br />

IE n u m erab le< V alu es> b o o k s P u lle d = p l a y e r . P u llO u tB o o k s ()<br />

f o r e a c h (V a lu e s v a lu e i n b o o k sP u lle d )<br />

b o o k s .A d d (v a lu e , p la y e r )<br />

i f (p la y e r.C a r d C o u n t == 0)<br />

r e t u r n t r u e ;<br />

r e t u r n f a l s e ;<br />

М<strong>е</strong>тод PullOutBooksQ пров<strong>е</strong>ря<strong>е</strong>т карты<br />

игрока на наличи<strong>е</strong> б з я т о к . Обнаруж<strong>е</strong>нная<br />

взятка добавля<strong>е</strong>тся в словарь. Если карт<br />

н<strong>е</strong> осталось, возвраща<strong>е</strong>тся знач<strong>е</strong>ни<strong>е</strong> true.<br />

386 глава 8

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

Saved successfully!

Ooh no, something went wrong!