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