. Стиллмен, Дж. Грин - Изучаем 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