. Стиллмен, Дж. Грин - Изучаем C#, 2-е издание
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
колоду на стол<br />
і а ж н <strong>е</strong> н и <strong>е</strong><br />
П опрактику<strong>е</strong>м ся в прим <strong>е</strong>н<strong>е</strong>нии объ<strong>е</strong>ктов L i s t , созд ав класс д ля хран<strong>е</strong>ния<br />
колоды карты и форму, которая буд<strong>е</strong>т <strong>е</strong>го использовать.<br />
^ §орм а. позволяющая п<strong>е</strong>р<strong>е</strong>м<strong>е</strong>щать карты м <strong>е</strong>ж ду колодами<br />
Создадим класс D e c k (К о лода) для х р а н <strong>е</strong> н и я п р о и з в о л ь н о го ко л и ч<strong>е</strong>ства карт. В р<strong>е</strong>альной ко л о <br />
д<strong>е</strong> 52 ка р ты , н о в класс<strong>е</strong> D e c k м о ж <strong>е</strong> т б ы ть ско л ь ко уго д н о к а р т (и л и н<strong>е</strong> б ы ть н и о д н о й ).<br />
Зат<strong>е</strong>м вам п о тр <strong>е</strong>бу<strong>е</strong>тся ф орм а, показы ваю щ ая сод<strong>е</strong>рж им о<strong>е</strong> двух объ <strong>е</strong>ктов D eck . П р и п<strong>е</strong>рвом<br />
запуск<strong>е</strong> п р о гр а м м ы в колод<strong>е</strong> #1 м о ж <strong>е</strong> т б ы ть до 10 сл уч а й н ы х карт, а в колод<strong>е</strong> #2 — п о л н ы й наб<br />
ор (52 к а р ты ). О б <strong>е</strong> колод ы о т с о р т и р о в а н ы п о м асти и п о с та р ш и н с тв у В э то п о л о ж <strong>е</strong> н и <strong>е</strong> ко л о <br />
ду м о ж н о в<strong>е</strong> р н уть в л ю б о й м о м <strong>е</strong> н т щ <strong>е</strong>лчком на к н о п к <strong>е</strong> Reset. Т акж <strong>е</strong> ф орм а снабж <strong>е</strong>на кн о п ка м и<br />
« и » , ко то р ы <strong>е</strong> п<strong>е</strong>р<strong>е</strong>м <strong>е</strong>щ а ю т к а р ты из о д н о й ко л о д ы в другую .<br />
П омнит<strong>е</strong>, что с пом ощ ью<br />
свойства Nam e эл<strong>е</strong>м <strong>е</strong>нту<br />
управл<strong>е</strong>ния можно присвоить<br />
имя, улучш ив т<strong>е</strong>м сам ы м читаб<strong>е</strong>льность<br />
кода. При двойном<br />
щ <strong>е</strong>лчк<strong>е</strong> на кнопк<strong>е</strong> обработчику<br />
собы тий буд<strong>е</strong>т д ан о соотв<strong>е</strong>тствую<br />
щ <strong>е</strong><strong>е</strong> имя.<br />
Обратит<strong>е</strong><br />
внимани<strong>е</strong>,<br />
как карты<br />
добавляются<br />
в колл<strong>е</strong>кцию<br />
при помощи<br />
цикла foreach.<br />
Кнопки моу<strong>е</strong>ТоР<strong>е</strong>скЯ (в<strong>е</strong>рхняя) и тоу<strong>е</strong>ТоР<strong>е</strong>ск! (нижняя)<br />
п<strong>е</strong>рш<strong>е</strong>ьцаким. карты из одной колоды в другую.<br />
Кнопки reseti и resetz<br />
сначала вызывают<br />
м<strong>е</strong>тод ResetDeckQ,<br />
а потом м<strong>е</strong>тод<br />
R-edrawPeckQ.<br />
Д л я показа об<strong>е</strong>их колод используются<br />
два эл<strong>е</strong>м<strong>е</strong>нта<br />
ustBox. При щ<strong>е</strong>лчк<strong>е</strong> на кнопк<strong>е</strong><br />
^o v ero P eckl выбранная карта<br />
^п<strong>е</strong>р<strong>е</strong>м<strong>е</strong>ща<strong>е</strong>тся из колоды J z<br />
о колоду<br />
Им<strong>е</strong>на этих кнопок shuffle! и<br />
shuffieZ. Они вызывают п о <br />
ходящий м<strong>е</strong>тод P e c k .S K M rn 6 ()j<br />
чтобы п<strong>е</strong>р<strong>е</strong>тасовать колоду,<br />
а зат<strong>е</strong>м п<strong>е</strong>р<strong>е</strong>рисовывают <strong>е</strong><strong>е</strong>.<br />
Д обавить к ф орм<strong>е</strong> нуж н о н<strong>е</strong> только о б р а б о тчики с о б ы ти й для ш <strong>е</strong>сти к н о п о к, н о и два м<strong>е</strong>тода.<br />
Н а ч н и т<strong>е</strong> с м<strong>е</strong>тода R e s e t D e c k ( ) , возвращ аю щ <strong>е</strong>го колоду в исходно<strong>е</strong> состояни<strong>е</strong>. В кач<strong>е</strong>ств<strong>е</strong> парам<br />
<strong>е</strong>тра о н использу<strong>е</strong>т знач<strong>е</strong>ни<strong>е</strong> ти п а in t: <strong>е</strong>сли <strong>е</strong>му п<strong>е</strong>р<strong>е</strong>дать 1, о н пр<strong>е</strong>вращ а<strong>е</strong>т п<strong>е</strong>рвы й объ<strong>е</strong>кт D e ck<br />
в пустую колоду, а зат<strong>е</strong>м случайны м образом назнача<strong>е</strong>т <strong>е</strong>й 10 карт; п<strong>е</strong>р<strong>е</strong>дав знач<strong>е</strong>ни<strong>е</strong> 2, вы пр<strong>е</strong>врати<br />
т<strong>е</strong> в то р о й объ<strong>е</strong>кт D e c k в упорядоч<strong>е</strong>нную колоду из 52 карт:<br />
p r i v a t e v o id R ed raw D eck (i n t DeckNumber) {<br />
i f (DeckNumber = = 1 ) { —<br />
l i s t B o x l . I t e m s . C l e a r {);<br />
f o r e a c h ( s t r i n g cardName i n d e c k l.G etC a rd N a m e s())<br />
l ^ t B o x l . Ite m s .Add (cardName) ;<br />
l a b e l l . T e x t = "Deck #1 (" + d e c k l.C o u n t + " c a r d s)<br />
} e l s e {<br />
}<br />
l i s t B o x 2 . I t e m s . C l e a r ( );<br />
f o r e a c h ( s t r i n g cardName i n d e c k 2 . G etC ardN am es())<br />
l i s t B o x 2 . Ite m s.A d d (ca r d N a m e);<br />
l a b e l 2 . T e x t = "Deck #2 (" + d e c k 2 .C o u n t + " c a r d s)<br />
М<strong>е</strong>тод RedrawPeck()<br />
Т к и 2 Т скива<strong>е</strong>т из н<strong>е</strong><strong>е</strong> случай-<br />
« обновля<strong>е</strong>т<br />
сод<strong>е</strong>ржимо<strong>е</strong> т<strong>е</strong>кстовых<br />
соотв<strong>е</strong>тствии<br />
обм<strong>е</strong>ном.