. Стиллмен, Дж. Грин - Изучаем 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> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br />
длинных<br />
П р З Ж Н <strong>е</strong> Н И Й Так вы глядят полностью написанны <strong>е</strong> м<strong>е</strong>тоды класса P la y e r .<br />
p u b lic P la y e r ( S t r i n g name. Random random, TTextBox textBoxOnForm ) {<br />
t h is .n a m e = name;<br />
t h is .r a n d o m = random;<br />
Э т о к о н с т р у к т о р к л а с с а P la y e r . О н<br />
t h i s . textBoxO nForm = textB oxO nForm ;<br />
^ —з а д а <strong>е</strong> т зн<br />
a<br />
а ч <strong>е</strong><br />
...................................<br />
н и я п р и в а т н ы х п о л <strong>е</strong> й и до -<br />
t h i s . c a r d s = new D eck( new C ard[] {} ) ; 5 в т <strong>е</strong> к с т о в о <strong>е</strong> п о л <strong>е</strong> с т р о к у с и н -<br />
te x tB o x O n F o r m . T e x t += name + ф о р м а ц и <strong>е</strong> й о п р и с о <strong>е</strong> д и н и в ш <strong>е</strong> м с я и г р о к <strong>е</strong> .<br />
}<br />
" h a s j u s t j o i n e d t h e game" + E n viron m en t.N ew L in e;<br />
p u b l i c V a lu e s G etR andom V alue() {<br />
Card randomCard = c a r d s . P e e k (random . N e x t (c a r d s . C ou nt)<br />
r e t u r n random C ard. V a lu e ;<br />
}<br />
p u b l i c D eck DoY ouH aveA ny(Values v a lu e ) {<br />
Deck c a rd sIH a v e = c a r d s . P u l lO u t V a lu e s ( v a lu e ) ;<br />
textB oxO n F orm .T ext += Name + " h a s " + c a r d sIH a v e .C o u n t +<br />
М <strong>е</strong> т о д а ^ Я а п с 1 о т \/а 1 и <strong>е</strong> () с пом ош ,ьн><br />
м <strong>е</strong> т о д а Р <strong>е</strong> <strong>е</strong> к О в ы б и р а <strong>е</strong> т с л у ч а й н у ю<br />
к а р т у с р <strong>е</strong> д и и м <strong>е</strong> ю ш ,и х с я у и г р о к а .<br />
+ C a r d .P lu r a l (v a lu e ) + E n v ir o n m e n t.N e w L in e ; М <strong>е</strong> т о д P o Y o u H a v e A n u Q и с п о л ь з ц <strong>е</strong> т<br />
r e t u r n c a rd sIH a v e ; М <strong>е</strong> т о д P u llO u tV a lu e si) д л я и з в л <strong>е</strong> ч <strong>е</strong> -<br />
‘ ^ ------'Ния к а р т , к о т о р ы <strong>е</strong> с о о т в <strong>е</strong> т с т в у <br />
ю т з а д а н н ы м п а р а м <strong>е</strong> т р а м<br />
p u b l i c v o i d A sk F o rA C a rd (L ist< P la y er> p l a y e r s , i n t m ylndex. Deck stock)^ ( ^<br />
V a lu e s random V alue = G etR andom V alue() ;<br />
A sk F o rA C a r d (p la y e rs, m yln d ex, s t o c k , random V alue)<br />
Дополнит<strong>е</strong>льно<strong>е</strong> мини-упражн<strong>е</strong>ни<strong>е</strong>: Улучшит<strong>е</strong> инкапсуляцию<br />
класса Player, зам<strong>е</strong>нив в этих двух м<strong>е</strong>тодах List на<br />
IEnumerable, н<strong>е</strong> повлияв на работу программы.<br />
p u b l i c v o i d A sk F o rA C a rd (L ist< P la y er> p l a y e r s , i n t m ylndex.<br />
Deck s t o c k . V a lu e s v a lu e ) {<br />
textB oxO nForm . T e x t += Name + " a s k s i f anyon e h a s a "<br />
+ v a lu e + E n viron m en t.N ew L in e;<br />
i n t t o ta lC a r d s G iv e n = 0;<br />
f o r ( i n t i = 0; i < p la y e r s .C o u n t ; i+ + ) {<br />
i f ( i != m ylndex) {<br />
P la y e r p la y e r = p l a y e r s [ i ] ;<br />
D eck C ardsG iven = p l a y e r . D o Y o u H a v eA n y (v a lu e);<br />
}<br />
i f<br />
}<br />
to ta lC a r d s G iv e n += C a r d sG iv e n . C o u n t;<br />
w h ile (C a rd sG iv en .C o u n t > 0)<br />
c a r d s.A d d (C a r d sG iv e n .D e a l 0 ) ;<br />
( to ta lC a r d s G iv e n == 0) {<br />
textB oxO n F orm .T ext += Name +<br />
" m ust draw from t h e s t o c k ."<br />
c a r d s .A d d ( s t o c k .D e a l () ) ;<br />
^<br />
+ E n v ir o n m e n t. N ew L ine;<br />
В программ<strong>е</strong> два п <strong>е</strong> <br />
р<strong>е</strong>груж<strong>е</strong>нных м<strong>е</strong>тода<br />
As.kPorACard{). Эт от<br />
использу<strong>е</strong>т ся соп<strong>е</strong>рникам<br />
и— выбира<strong>е</strong>т<br />
случайную карт у из<br />
им<strong>е</strong>юш,ихся и вызыва<strong>е</strong>т<br />
второй м<strong>е</strong>т од<br />
AskForACardQ.<br />
М <strong>е</strong> т о д A s k F o r A C a r d Q<br />
п р о в <strong>е</strong> р я <strong>е</strong> т в с <strong>е</strong> х и г р о к о в<br />
( з а и с к л ю ч <strong>е</strong> н и <strong>е</strong> м с п р а ш и <br />
в а ю щ <strong>е</strong> г о ) , в ы з ы в а <strong>е</strong> т и х<br />
м <strong>е</strong> т о д P o Y o u H a v e A n y Q<br />
и д о б а в л я <strong>е</strong> т н а й д <strong>е</strong> н н ы <strong>е</strong><br />
п о д х о д я щ и <strong>е</strong> к а р т ы .<br />
П ри о т с у т с т в и и у с о п <strong>е</strong> р н и к о в п о д х о д я щ и х<br />
к а р т и г р о к б <strong>е</strong> р <strong>е</strong> т к а р т у и з з а п а с а п р и<br />
п о м о щ и м <strong>е</strong> т о д а P e a lQ .