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 />

c l a s s O u tsid e W ith H id in g P la c e : O u ts id e , I H id in g P la c e {<br />

p u b l i c O u t s id e W it h H id in g P la c e ( s t r in g name, b o o l h o t , s t r i n g h id in g P la ceN a m e)<br />

: b a se(n a m e, h o t)<br />

{ t h is .h id in g P la c e N a m e = h id in g P la ce N a m e ; }<br />

}<br />

p r i v a t e s t r i n g h id in g P la ce N a m e ;<br />

p u b l i c s t r i n g H id in gP laceN am e {<br />

}<br />

g e t { r e t u r n h id in g P la ce N a m e ; }<br />

p u b l i c o v e r r id e s t r i n g D e s c r i p t i o n {<br />

}<br />

g e t {<br />

}<br />

c l a s s O pponent {<br />

r e t u r n b a s e . D e s c r i p t i o n +<br />

p r i v a t e Random random;<br />

p r i v a t e L o c a tio n m y L o ca tio n ;<br />

p u b l i c O p p o n e n t(L o c a tio n s t a r t i n g L o c a t io n )<br />

m y L o ca tio n = s t a r t i n g L o c a t io n ;<br />

random = new Random( );<br />

p u b l i c v o i d MoveO {<br />

i f (m yL ocation i s IH a sE x te r io r D o o r ) {<br />

IH a sE x te r io r D o o r L o ca tio n W ith D o o r<br />

i f (r a n d o m .N e x t(2) == 1)<br />

m y L o ca tio n a s<br />

Класс OutsideWithHidingPlace насл<strong>е</strong>ду<strong>е</strong>т<br />

от класса Outside и р<strong>е</strong>ализу<strong>е</strong>т<br />

м<strong>е</strong>тод IHidingPlace аналогично классу<br />

RoomWithHidingPlace.<br />

Можно сп ря таться " + h id in g P la ce N a m e +<br />

Конструктор класса Opponent 6 кач<strong>е</strong>ств<strong>е</strong><br />

парам<strong>е</strong>тра б<strong>е</strong>р<strong>е</strong>т начально<strong>е</strong> пом<strong>е</strong>щ<strong>е</strong>ни<strong>е</strong>.<br />

Он созда<strong>е</strong>т экз<strong>е</strong>мпляр Random,<br />

при помощи которого случайным образом<br />

осущ<strong>е</strong>ствля<strong>е</strong>тся п<strong>е</strong>р<strong>е</strong>м<strong>е</strong>щ<strong>е</strong>ни<strong>е</strong> из<br />

одного м<strong>е</strong>ста в друго<strong>е</strong>.<br />

i<br />

М<strong>е</strong>тод MoveQ при помощи оп<strong>е</strong>ратора<br />

IS пров<strong>е</strong>ря<strong>е</strong>т наличи<strong>е</strong> вн<strong>е</strong>шн<strong>е</strong>й дв<strong>е</strong>ри<br />

в комнат<strong>е</strong>. При <strong>е</strong><strong>е</strong> наличии с 50%-й<br />

в<strong>е</strong>роятностью он ч<strong>е</strong>р<strong>е</strong>з н<strong>е</strong><strong>е</strong> проходит.<br />

Таким способом он случайным образом<br />

п<strong>е</strong>р<strong>е</strong>м<strong>е</strong>ща<strong>е</strong>тся по дому, пока н<strong>е</strong> находит<br />

м<strong>е</strong>сто, гд<strong>е</strong> можно спрятаться.<br />

I H a s E x te r io r D o o r ;<br />

m y L o ca tio n = L o c a tio n W ith D o o r .D o o r L o c a tio n ;<br />

} Этот цикл while продолжа<strong>е</strong>тся, пока п<strong>е</strong>р<strong>е</strong>м<strong>е</strong>нная<br />

hidden н<strong>е</strong> прим<strong>е</strong>т знач<strong>е</strong>ни<strong>е</strong> true. Это произойд<strong>е</strong>т<br />

b o o l h id d e n = f a l s e ;<br />

при попадании в пом<strong>е</strong>щ<strong>е</strong>ни<strong>е</strong>, пригодно<strong>е</strong> для<br />

w h ile ( ! h id d en ) {<br />

укрытия.<br />

}<br />

i n t rand = r a n d o m .N e x t(m y L o c a tio n .E x its .L e n g th )<br />

m y L o ca tio n = m y L o c a t io n .E x it s [ r a n d ] ;<br />

i f (m yL ocation i s I H id in g P la c e )<br />

h id d e n = tr u e ;<br />

}<br />

p u b l i c b o o l C h e c k (L o c a tio n lo c a tio n T o C h e c k )<br />

}<br />

i f (lo c a tio n T o C h e c k != m yL ocation )<br />

e l s e<br />

r e t u r n f a l s e ;<br />

r e t u r n t r u e ;<br />

М<strong>е</strong>тод CheckQ сравнива<strong>е</strong>т<br />

знач<strong>е</strong>ни<strong>е</strong> п<strong>е</strong>р<strong>е</strong>м<strong>е</strong>нной location<br />

класса opponent со знач<strong>е</strong>ни -<br />

<strong>е</strong>м ссылки Location. Если об<strong>е</strong><br />

ссылки указывают на один<br />

объ<strong>е</strong>кт, значит, соп<strong>е</strong>рник<br />

найд<strong>е</strong>н!<br />

Ц <strong>е</strong> р <strong>е</strong> ^ <strong>е</strong> р н и т п <strong>е</strong> о и р а н и Щ ) U и р о Д о л ж и м !<br />

дальш<strong>е</strong> ► 333

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

Saved successfully!

Ooh no, something went wrong!