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