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>живающий статистику игры<br />

Так как в форм<strong>е</strong> должно отображаться общ<strong>е</strong><strong>е</strong> колич<strong>е</strong>ство нажатых, пропущ<strong>е</strong>нных<br />

и правильно нажатых клавиш, а такж<strong>е</strong> точность, значит, мы должны<br />

отсл<strong>е</strong>живать вс<strong>е</strong> эти данны<strong>е</strong>. Каж<strong>е</strong>тся, нам потр<strong>е</strong>бу<strong>е</strong>тся новый класс!<br />

Назовит<strong>е</strong> <strong>е</strong>го S t a t s . Он буд<strong>е</strong>т сод<strong>е</strong>ржать ч<strong>е</strong>тыр<strong>е</strong> поля типа i n t с им<strong>е</strong>нами<br />

T o t a l (Вс<strong>е</strong>го), M i s s e d (Пропущ<strong>е</strong>но), C o r r e c t (Правильно) и A c c u r a c y<br />

(Точность), а такж<strong>е</strong> м<strong>е</strong>тод U p d a t e с одним парам<strong>е</strong>тром типа b o o l , который<br />

получа<strong>е</strong>т знач<strong>е</strong>ни<strong>е</strong> t r u e , <strong>е</strong>сли нажатая игроком клавиша совпала с буквой,<br />

появивш<strong>е</strong>йся в окн<strong>е</strong> ListBox, и знач<strong>е</strong>ни<strong>е</strong> f a ls e , <strong>е</strong>сли игрок ошибся.<br />

c l a s s S t a t s<br />

{<br />

p u b l i c i n t T o t a l = 0;<br />

p u b l i c i n t M isse d = 0;<br />

p u b l i c i n t C o r r e c t = 0;<br />

p u b l i c i n t A c cu ra c y = 0;<br />

p u b l i c v o id U p d a te (b o o l c o r r e c tK e y )<br />

{<br />

T o t a l ++;<br />

i f ( ! c o r r e c tK e y )<br />

{<br />

M isse d + + ;<br />

}<br />

e l s e<br />

{<br />

}<br />

C o r r e c t ++;<br />

При каждом вызов<strong>е</strong> м<strong>е</strong>тода<br />

UpdateQ вычисля<strong>е</strong>тся проц<strong>е</strong>нт<br />

правильных попаданий,<br />

а р<strong>е</strong>зультат этих вычисл<strong>е</strong>ний<br />

пом<strong>е</strong>ица<strong>е</strong>тся в пол<strong>е</strong> Accuracy.<br />

}<br />

}<br />

A c cu ra c y = 100 * C o r r e c t / (M issed + C o r r e c t) ;<br />

Поля для отсл<strong>е</strong>живания объ<strong>е</strong>ктов Stats и Random<br />

Вам потр<strong>е</strong>бу<strong>е</strong>тся экз<strong>е</strong>мпляр класса Stats для хран<strong>е</strong>ния информации, поэтому добавьт<strong>е</strong> пол<strong>е</strong><br />

stats. Как вы уж<strong>е</strong> вид<strong>е</strong>ли, пол<strong>е</strong> random, сод<strong>е</strong>ржащ<strong>е</strong><strong>е</strong> объ<strong>е</strong>кт Random, пока отсутству<strong>е</strong>т.<br />

Напишит<strong>е</strong> в в<strong>е</strong>рхн<strong>е</strong>й части кода формы:<br />

p u b l i c p a r t i a l c l a s s Forml<br />

{<br />

: Form<br />

Random random = new Random();<br />

Stats stats = new Stats();<br />

Пр<strong>е</strong>жд<strong>е</strong> ч<strong>е</strong>м продолжить, присвойт<strong>е</strong> свойству<br />

Enabled тайм<strong>е</strong>ра знач<strong>е</strong>ни<strong>е</strong> True. Для эл<strong>е</strong>м<strong>е</strong>нта<br />

ProgressBar сд<strong>е</strong>лайт<strong>е</strong> свойство Maximum<br />

равным 701, а для свойства KeyPreview<br />

формы выб<strong>е</strong>рит<strong>е</strong> знач<strong>е</strong>ни<strong>е</strong> True. Попробуйт<strong>е</strong><br />

отв<strong>е</strong>тить на вопрос, что буд<strong>е</strong>т,<br />

<strong>е</strong>сли это н<strong>е</strong> сд<strong>е</strong>лать?<br />

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

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

Saved successfully!

Ooh no, something went wrong!