. Стиллмен, Дж. Грин - Изучаем 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> бизуализатора<br />
Вот код класса Renderer. Основная форма вызыва<strong>е</strong>т<br />
м<strong>е</strong>тод R e n d e r О этого класса посл<strong>е</strong> м<strong>е</strong>тода<br />
W o r l d .G o (), чтобы отобразить на формах<br />
пч<strong>е</strong>л и цв<strong>е</strong>ты. Уб<strong>е</strong>дит<strong>е</strong>сь, что изображ<strong>е</strong>ни<strong>е</strong> цв<strong>е</strong>тка<br />
(Flower.png) такж<strong>е</strong> загруж<strong>е</strong>но в ваш про<strong>е</strong>кт.<br />
c l a s s R e n d e r e r {<br />
p r i v a t e W o r l d world;<br />
p r i v a t e H iv e F o r m hiveForm;<br />
p r i v a t e F i e l d F o r m fieldForm;<br />
H « “<br />
пч<strong>е</strong>лэл<strong>е</strong>м<strong>е</strong>нты<br />
управл<strong>е</strong>ни<strong>е</strong> и графич<strong>е</strong>ски<strong>е</strong> фрагм<strong>е</strong>нты<br />
Вс<strong>е</strong> поля визуализатора<br />
закрыты, так как други<strong>е</strong><br />
классы н<strong>е</strong> должны им<strong>е</strong>ть<br />
доступа к <strong>е</strong>го свойствам.<br />
Класс world просто вызыва<strong>е</strong>т<br />
м<strong>е</strong>тоды RenderQ<br />
и ResetQ. П<strong>е</strong>рвый рису<strong>е</strong>т<br />
графику на формах, а<br />
второй при п<strong>е</strong>р<strong>е</strong>загрузк<strong>е</strong><br />
форм удаля<strong>е</strong>т с нмх эл<strong>е</strong>м<strong>е</strong>нты<br />
управл<strong>е</strong>ния.<br />
О тсл<strong>е</strong>живани<strong>е</strong> состояния пч<strong>е</strong>л<br />
и цв<strong>е</strong>тов осущ<strong>е</strong>ствля<strong>е</strong>тся ч<strong>е</strong>р<strong>е</strong>з<br />
объ<strong>е</strong>кты В<strong>е</strong><strong>е</strong> и Flower. А ля<br />
отображ<strong>е</strong>ния цо<strong>е</strong>тод цв<strong>е</strong>тов использи использу-p<br />
r i v a t e D i c t i o n a r y < F l o w e r , P i c t u r e B o x > flowerLookup = \ Р'^^мг<strong>е</strong>Бох, й Зля<br />
n e w D i c t i o n a r y < F l o w e r , P i c t u r e B o x > () ; / ^ ^ ^ С ^ Г п р Т Т о м о ш Т Т ^<br />
p r i v a t e L i s t < F l o w e r > deadFlowers = n e w L i s t < F l o w e r > {) ; > вар<strong>е</strong>й визуализатор связыва<strong>е</strong>т<br />
^аждую ^ пч<strong>е</strong>лу ^ и г^1Л.УГк(/01Ц каждый Ц0С1/ цв<strong>е</strong>ток<br />
p r i v a t e D i c t i o n a r y < B e e , B e e C o n t r o l> beeLookup =<br />
С- с ПК UK ЭАаАЛР.ииллплл!. эл<strong>е</strong>м<strong>е</strong>нтами BeeControl , .<br />
n e w D i c t i o n a r y < B e e , B e e C o n t r o l > ( ) ;<br />
и rictureßoK.<br />
p r i v a t e L i s t < B e e > retiredBees = n e w L i s t < B e e > ( ) ;<br />
p u b l i c Renderer( W o r ld w o r l d ,<br />
}<br />
t h i s . w o r l d = w o r l d ;<br />
t h i s . h i v e F o r m = h iv e F o r m ;<br />
t h i s . f i e l d F o r m = f i e l d F o r m ;<br />
p u b l i c v o i d Render 0<br />
}<br />
D r a w B e e s ( ) ;<br />
D r a w F lo w e r s ( ) ;<br />
R e m o v e R e tir e d B e e s A n d D e a d F lo w e r s ( ) ;<br />
{<br />
J<br />
H iv e F o r m h iv e F o r m , F i e l d F o r m f i e l d F o r m )<br />
Тайм<strong>е</strong>р основной формы вызыва<strong>е</strong>т м <strong>е</strong>-<br />
— ■mod RenderQ, который обновля<strong>е</strong>т пч<strong>е</strong>л<br />
^ и цв<strong>е</strong>ты, а зат<strong>е</strong>м очища<strong>е</strong>т ик словари.<br />
A<br />
{ Когда цв<strong>е</strong>ток<br />
вян<strong>е</strong>т, а пч<strong>е</strong>ла<br />
уходит на за <br />
служ<strong>е</strong>нный о т <br />
дых, информация<br />
о ник удаля<strong>е</strong>тся<br />
из словар<strong>е</strong>й при<br />
помощи списков<br />
deadFlowers<br />
и retiredBees.<br />
p u b l i c v o i d Reset 0 {<br />
f o r e a c h ( P i c t u r e B o x f l o w e r i n f l o w e r L o o k u p . V a l u e s<br />
f i e l d F o r m . C o n t r o l s . R e m o v e ( f l o w e r ) ;<br />
f l o w e r . D i s p o s e ( ) ;<br />
}<br />
f o r e a c h ( B e e C o n t r o l b e e i n b e e L o o k u p . V a lu e s )<br />
h i v e F o r m . C o n t r o l s . R e m o v e ( b e e ) ;<br />
f i e l d F o r m . C o n t r o l s . R e m o v e ( b e e ) ;<br />
b e e . D i s p o s e 0 ;<br />
}<br />
f l o w e r L o o k u p . C l e a r ( ) ;<br />
b e e L o o k u p . C le a r 0 ;<br />
{<br />
) {<br />
При п<strong>е</strong>р<strong>е</strong>загрузк<strong>е</strong> симулятора для<br />
каждой формы вызыва<strong>е</strong>тся м<strong>е</strong>тод<br />
Controk.RemoveQ, удаляющий вс<strong>е</strong><br />
эл<strong>е</strong>м<strong>е</strong>нты управл<strong>е</strong>ния. Он находит<br />
каждый эл<strong>е</strong>м<strong>е</strong>нт в словар<strong>е</strong> и вызыва<strong>е</strong>т<br />
для н<strong>е</strong>го.м<strong>е</strong>тод PisposeQ. Посл<strong>е</strong><br />
ч<strong>е</strong>го очища<strong>е</strong>т и словари такж<strong>е</strong>.<br />
дальш<strong>е</strong> > 593