14.02.2017 Views

. Стиллмен, Дж. Грин - Изучаем C#, 2-е издание

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

к у д а п р о п а л и ц в <strong>е</strong> т ы ?<br />

н<strong>е</strong>нк<strong>е</strong><br />

)^<strong>е</strong>ш <strong>е</strong>нк<strong>е</strong><br />

В о т к а к в ы гл я д и т к л а с с Flower д л я с и м у л я т о р а у л ь я .<br />

class Flower {<br />

private const int LifeSpanMin = 15000;<br />

private const int LifeSpanMax = 30000;<br />

private const double InitialNectar = 1.5;<br />

private const double MaxNectar = 5.0;<br />

private const double NectarAddedPerTurn = 0.01;<br />

private const double NectarGatheredPerTurn = 0.3;<br />

свойст ва {public Point Location { get; private set; }<br />

L o c a t i o n . ,<br />

public int Age { get; private set; }<br />

Aüve U Nectar<br />

к\р<strong>е</strong>Эназнйч<strong>е</strong>н<strong>е</strong>>| public bool Alive { get; private set; }<br />

т о л ь к о Эля<br />

^ public -----------------------^ double Nectar { get; private -t. V d u e Oset; C U ; ^}<br />

чт<strong>е</strong>н и я.<br />

public Г М 1 T -i ^ double /-ЧЧ ЛV-4 1 Л NectarHarvested ^ 4- _ ^ T T _ _________ ______ □ { f get; _ set; } ^родожит<strong>е</strong>ль--<br />

ность жизни.<br />

М <strong>е</strong>т од а о () вызыва<strong>е</strong>тся<br />

для каждого<br />

кадра. Возраст<br />

цв<strong>е</strong>тка за один цикл<br />

ув<strong>е</strong>личива<strong>е</strong>тся н<strong>е</strong>значит<strong>е</strong>льно,,<br />

но по<br />

м <strong>е</strong>р<strong>е</strong> работы с и м у ­<br />

лятора эти знач<strong>е</strong>ния<br />

сум м ирую т ся.<br />

public Flower(Point location,<br />

Location = location;<br />

Age = 0;<br />

Alive = true;<br />

Nectar = InitialNectar;<br />

NectarHarvested = 0;<br />

lifeSpan = random.Next(LifeSpanMin,<br />

}<br />

public double HarvestNectar0<br />

if (NectarGatheredPerTurn<br />

return 0;<br />

else {<br />

}<br />

}<br />

Random random) {<br />

{<br />

> Nectar)<br />

Nectar -= NectarGatheredPerTurn;<br />

NectarHarvested += NectarGatheredPerTurn;<br />

return NectarGatheredPerTurn;<br />

public void Go О {<br />

Age++;<br />

if (Age > lifeSpan)<br />

Alive = false;<br />

else {<br />

1/<br />

Nectar += NectarAddedPerTurn;<br />

if (Nectar > MaxNectar)<br />

Nectar = MaxNectar;<br />

Н <strong>е</strong>кт ар сл<strong>е</strong>ду<strong>е</strong>т<br />

добавлять только<br />

Живым цв<strong>е</strong>там.<br />

1<br />

F lo w e r<br />

Location: Point<br />

Age: int<br />

Alive: bool<br />

Nectar: double<br />

NectarHarvested: double<br />

lifespan: int<br />

HarvestNectar(): double<br />

Go()<br />

Д ост уп к полю<br />

N ectarH arvested<br />

должны им<strong>е</strong>т ь<br />

други<strong>е</strong> классы.<br />

LifeSpanMax + 1);<br />

Пч<strong>е</strong>лы вызывают м<strong>е</strong>т од<br />

H arvestN ectarQ для сбора н<strong>е</strong>ктара.<br />

За один раз пч<strong>е</strong>ла забира<strong>е</strong>т совс<strong>е</strong>м<br />

н<strong>е</strong>много н<strong>е</strong>кт ара, поэт ом у м<strong>е</strong>т од<br />

отсл<strong>е</strong>жива<strong>е</strong>т состояни<strong>е</strong> цв<strong>е</strong>тка<br />

на протяж<strong>е</strong>нии ряда кадров, пока<br />

н<strong>е</strong>кт ар н<strong>е</strong> закончится.<br />

, ^ П <strong>е</strong>р<strong>е</strong>м <strong>е</strong>нны <strong>е</strong> типа P o in t п ринадл<strong>е</strong>ж ат пространству им<strong>е</strong>н<br />

System.Drawing, ПОЭТОМу н<strong>е</strong> Забудьт<strong>е</strong> ДОбаВИТЬ СТрОЧКу using<br />

System.Drawing; В в<strong>е</strong>рхнюю часть ф зйла класса.<br />

532 г л а в а 12

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

Saved successfully!

Ooh no, something went wrong!