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.

в а ш <strong>е</strong> м <strong>е</strong> с т о в м и р <strong>е</strong><br />

Код для класса l/1/orld<br />

К л а с с W o r ld — о д и н и з с ам ы х п р о с т ы х в н а ш <strong>е</strong> м с и м у л я т о ­<br />

р <strong>е</strong> . В о т о т п р а в н а я т о ч к а для н а п и с а н и я ко д а . Е с л и п р и с м о ­<br />

т р <strong>е</strong> т ь с я , вы у в и д и т <strong>е</strong> о т с у т с т в и <strong>е</strong> о тд <strong>е</strong> л ь н ы х ф р а гм <strong>е</strong> н т о в , к о ­<br />

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

u s i n g S y s t e m . D r a w i n g ;<br />

c l a s s W o r l d {<br />

p r i v a t e c o n s t d o u b l e N e c t a r H a r v e s t e d P e r N e w F l o w e r = 50.0;<br />

p r i v a t e c o n s t int F i e l d M i n X =15;<br />

p r i v a t e c o n s t int F i e l d M i n Y = m ■. i KoopduHamfi,<br />

опр<strong>е</strong>д<strong>е</strong>ляющи<strong>е</strong> границы<br />

p r i v a t e c o n s t int F i e l d M a x X = 690<br />

цв<strong>е</strong>точного поля.<br />

p r i v a t e c o n s t int F i e l d M a x Y = 2 90<br />

Пробл<strong>е</strong>мы с инкапсуляци<strong>е</strong>й!<br />

Обратит<strong>е</strong> внимани<strong>е</strong> на открыты<strong>е</strong><br />

поля Hive, Bees и Flowers. Другой<br />

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

знач<strong>е</strong>ни<strong>е</strong> null, что стан<strong>е</strong>т причиной<br />

с<strong>е</strong>рь<strong>е</strong>зных пробл<strong>е</strong>м! Подумайт<strong>е</strong>, какими<br />

свойствами и м<strong>е</strong>тодами можно<br />

воспользоваться для инкапсуляции.<br />

p u b l i c H i v e Hive;<br />

p u b l i c L i s t < B e e > B e es;<br />

p u b l i c L i s t < F l o w e r > F l o w e r s ;<br />

в м и р <strong>е</strong> сущ <strong>е</strong>ст ву<strong>е</strong>т<br />

вс<strong>е</strong>го один ул<strong>е</strong>й,<br />

/^лнож<strong>е</strong>ство пч<strong>е</strong>л<br />

и цв<strong>е</strong>тков.<br />

p u b l i c W o r l d 0 {<br />

B e e s = n e w L i s t < B e e > ( ) ;<br />

F l o w e r s = n e w L i s t < F l o w e r > ()<br />

R a n d o m r a n d o m = n e w R a n d o m ()<br />

f o r (int i = 0 ; i < 10; i++)<br />

A d d F l o w e r ( r a n d o m ) ;<br />

}<br />

ф о р т р у я новый м ир, мы<br />

. созда<strong>е</strong>м ул<strong>е</strong>м м добавля<strong>е</strong>м<br />

%0 цв<strong>е</strong>тков.<br />

p u b l i c v o i d G o ( R a n d o m r a n d o m ) { Зд<strong>е</strong>сь мы прост о вызывав,л л . .<br />

H i v e . G o (random) ; < ----- - п<strong>е</strong>р<strong>е</strong>давая <strong>е</strong>му e-My экз<strong>е</strong>мпляр Random.<br />

f o r (int і = B e e s . C o u n t -<br />

B e e b e e = B e e s [ i ] ;<br />

b e e .G o ( r a n d o m ) ;<br />

if ( b e e . C u r r e n t s t a t e ==<br />

B e e s .R e m o v e ( b e e );<br />

}<br />

i >= 0 ; i--) {<br />

— М<strong>е</strong>т од QoQ} вызыва<strong>е</strong>тся для в<strong>е</strong><strong>е</strong>к<br />

им<strong>е</strong>ющихся в наличии пч<strong>е</strong>л.<br />

B e e s t a t e . R e t i r e d ) „<br />

_______<br />

Выш<strong>е</strong>дыАуьо<br />

■-------------- пч<strong>е</strong>лу нужно удалить<br />

(дз наш<strong>е</strong>го мира.<br />

d o u b l e t o t a l N e c t a r H a r v e s t e d = 0;<br />

f o r (int i = F l o w e r s .C o u n t - 1; i<br />

}<br />

F l o w e r f l o w e r = F l o w e r s [ i ] ;<br />

f l o w e r . G o 0 ;<br />

>= 0 ; І-) {<br />

t o t a l N e c t a r H a r v e s t e d -t-= f l o w e r . N e c t a r H a r v e s t e d ;<br />

if (!f l o w e r . A l i v e )<br />

F l o w e r s .R e m o v e (flower) ;<br />

цв<strong>е</strong>т ы такжр<br />

сл<strong>е</strong>ду<strong>е</strong>т удалить.<br />

Зля „.жЭого<br />

Нужно отсл<strong>е</strong>живать<br />

колич<strong>е</strong>ство н<strong>е</strong>ктара,<br />

-собранно<strong>е</strong> на каждом<br />

этап<strong>е</strong>. Поэт ому мы<br />

сум м иру<strong>е</strong>м н<strong>е</strong>кт ар,<br />

собранный с каждого<br />

цв<strong>е</strong>тка.<br />

546 гл а в а 12

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

Saved successfully!

Ooh no, something went wrong!