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.

колоду на стол<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>ном.

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

Saved successfully!

Ooh no, something went wrong!