Microsoft Kodu - 6 (Подсчет очков, а также логическое И)

Mar 17, 2012 22:53

Подсчет очков наверняка является важной деталью в играх (увы, я не спец в играх!), в любом случае, в Коду есть такая возможность, и заодно можно использовать счёт и как счетчик или даже как переменную.


Как я понимаю (т.к. документации то нет ;) ), счет - это некая глобальная переменная, доступная для программирования из программы любого объекта. Ну то есть, запрограммировать поведение бота можно только в программе для этого бота. Делать манипуляции со счетом можно откуда угодно, из программы для любого объекта. Пусть в моем примере с аэростатом и байкером у аэростата будет белый счет, а у байкера - красный.

Когда аэростат создает яблоко, то его белый счет пусть увеличивается на 1 очко.

Когда байкер съедает яблоко, то пусть его красный счет увеличивается на 1 очко, при этом белый счет аэростата уменьшается на 1 очко.

Значит, нам надо добавить еще одно действие в правило для Аэростата, когда срабатывает условие 5 секунд и создается яблоко, надо еще увеличить счет на единицу.

Берем строчку

КОГДА таймер -> 5 сек ДЕЛАТЬ (действия ->) создать -> яблоко

и следующую за ней пустую строчку сдвигаем мышью, "зацепившись" за цифру, ту, что в кружочке слева от строки, вправо, чтобы получилось вот так, что строка под номером 3 сдвинута по отношению к строке 2:



Это означает, что действие, которое мы укажем в строке (правиле) 3, будет происходить только тогда, когда будет выполнено условие в строке 2. Условие мы уже не будем задавать, а действие - увеличение белого счета на 1. Все действия со счетом находятся в меню "игра". Как обычно, в скобки я заключаю те пункты меню, которые надо выбрать, но которые потом не появляются в строке с правилом.

КОГДА ДЕЛАТЬ (игра ->) очки -> 1 очко -> (счет ->) белый

Вы уже, наверно, обратили внимание, что счетов много - 11 разных цветов, а если не хватит цветов, то можно использовать и буквы латинского алфавита.

Как и с таймером, очки можно суммировать. Например, вам нужно добавлять 7 очков, а такой опции нет. Поэтому вы выбираете сначала 2 очка, а потом еще 5 очков, т.е., строка с правилом будет выглядеть вот так

КОГДА ДЕЛАТЬ (игра ->) очки -> 2 очка -> 5 очков -> (счет ->) белый

Аналогично сделаем и для байкера, при условии касания яблок добавим 2 вложенных действия: одно - добавляет 1 очко к красному счету, а другое - вычитает 1 очко из белого счета (т.е., байкер отыграл одно очко у Аэростата), оно будет выглядеть вот так:

(игра ->) вычесть -> 1 очко -> (счет ->) белый

или же, вот так:



И чтобы сделать игру законченной, давайте добавим условие окончания игры: когда на земле присутствует 5 яблок, т.е., белый счет Аэростата равен 5. Вот это условие как раз можно задать где угодно: в программе Аэростата или же в программе Байкера, т.к. условие, что белый счет равен 5, можно проверять из любого места, попробуйте сами убедиться в этом.

КОГДА счет -> (счет->) белый -> (баллы->) 5 очков ДЕЛАТЬ (игра ->) конец

(хмм, очередная нестыковка при переводе: то очки, то баллы)

Можно использовать возможности ведения счета и как просто счетчика, например, пусть дерево создает яблоки каждые 2 секунды, но нам нужно создать лишь 5 яблок. Тогда можно сделать вот так
КОГДА таймер -> 2 сек
   КОГДА счет -> (счет -> ) красный -> (сравнить ->) ниже -> 5 очков ДЕЛАТЬ (действие -> ) создать -> (объект-> ) яблоко
        КОГДА ДЕЛАТЬ очки -> красный -> 1 очко

Ну вы поняли? в первом правиле мы задаем условие - каждые 2 секунды. Во втором правиле мы проверяем, красный счет больше 5? Если нет, то создаем яблоко И переходим к правилу 3: увеличиваем красный счет на 1.

игра, kodu, microsoft

Previous post Next post
Up