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