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> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<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 .

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

Saved successfully!

Ooh no, something went wrong!