Описание раздела Объекты

Обсуждение курса «Объекты»

Можете помочь разобраться, зачем в 8 задании мы присваиваем cats результат работы функции, если эта переменная итак изменяется, без присваивания ей результата? И в теории вроде как опечатка для этого задания, забыли поставить букву “в” в предложении: "Мы создаём массив cats с объектами игроков и передаём его _ функцию runGame. "

Практически везде, где в задании указано : “создать цикл до длины массива (не включая это значение)” - задание подсвечивается зеленым, только если создать цикл до всей длины , т.е. до array.length, а не array.length - 1. Эт норм?

Спасибо за вашу внимательность, опечатку мы исправим!
Приведите пример кода с циклом, пожалуйста. В каком задании и какой код у вас засчитывается, как верный?

Задание № 17 - " for (var i = 0; i < winners.length; i++) ",
№12 - " for (var i = 0 ; i< players.length; i++) {} "
Дальше я еще не прошел.
И ответьте пж на мой вопрос в 1 комментарии.

И в 8 задании ,вроде как, есть еще 1 ошибочка орфографическая. В предложении : “В нашей программе происходит тоже самое.” тоже должно писаться раздельно, но это не точно )

Ответ на ваш вопрос находится в теории этого задания

«Несмотря на то, что такое поведение объектов — известный факт, работа программы может стать неочевидной, если мы захотим передать изменённый массив ещё куда-то, ведь мы меняем массив неявно по ходу работы цикла. Код нужно писать максимально просто и понятно для себя и других разработчиков. Поэтому мы будем возвращать изменённый массив players из функции и записывать его в массив cats, явно обновляя его»

Да, переменная меняет своё значение, но код всегда должен быть написан максимально понятно и очевидно не только вам, но и другим разработчикам. Поэтому мы явно перезаписываем значение

Как вы пишите код с array.length - 1, что программа его не засчитывает?

Если учесть Ваши рекомендации полезной литературы для интенсива “JavaScript, уровень 1”.
А также видео “Математика для программиста” https://htmlacademy.ru/shorts/19

Должен сообщить, что Ваш подход для бросания игральных костей неверный.
В теории к заданию [1/28] Сыграем? написано, что бросание 2-х игральных костей можно приравнять к выбору случайного числа из диапазона 2 - 12 (равномерный распределения).
На самом деле появления цифры из этого диапазона имеет нормальный закон распределения, т.е. 7 выпадает чаще всего, 2 и 12 реже всего.

Сделал пару тестов, чтобы убедиться прав ли я (вдруг Вы заложили в функцию keks.throwDice(min, max) нормальный закон распределения)
Выбрасываем одну кость (по Кексу выбор из диапазона 1 - 6)
Закон распределения:
1-166861; 2-166737; 3-166134; 4-166940; 5-166811; 6-166517;

Выбрасываем две кости (по Кексу выбор из диапазона 2 - 12)
Закон распределения:
2-90889; 3-90915; 4-91473; 5-90514; 6-90439; 7-90739; 8-90643; 9-91440; 10-90909; 11-90865; 12-91174;

Выбрасываем по одной кости два раза и складываем результат
Закон распределения:
2-27678; 3-55757; 4-83541; 5-110899; 6-139168; 7-166400; 8-139335; 9-110770; 10-83325; 11-55619; 12-27508;

Из последнего теста видно, что если переделать функцию, можно увидеть, что появление цифры 7 в 6 раз чаще, чем 2 или 12.
Решил что будет верно начепатать это сообщение, чтобы будущие программисты не заучили, что бросание 2 и более костей - это просто рандомный выбор из определенного диапазона.
При использовании генератора цифр с нормальным законом распределения в задании
Внесём корректировки будет вероятнее появления 2 котов победителей.

А так в целом это никак не влияет на обучение (прохождение) курса по объектам)

1 лайк

Объекты/ Задание 7/

  1. Внутри цикла в теле функции удалите вывод элемента в консоль.
  2. Объявите внутри цикла переменную throwResult , которая содержит результат одного броска keks.throwDice(quantity, quantity * 6); .
  3. Текущему игроку увеличьте количество очков на результат броска players[i].points += throwResult; .
  4. Выведите в консоль имя игрока и количество его игровых очков players[i].name + ' выбросил ' + players[i].points .
    Решение:
    var diceNumber = 2;

var firstCat = {
name: ‘Кекс’,
points: 0
};

var secondCat = {
name: ‘Рудольф’,
points: 0
};

var cats = [firstCat, secondCat];

var runGame = function (quantity, players) {
for (var i = 0; i < players.length; i++) {
var throwResult = keks.throwDice(quantity, quantity * 6);
players[i].points += throwResult;
console.log(players[i].name + ’ выбросил ’ + players[i].points);
}
};

runGame(diceNumber, cats);
Вопрос:
Что такое - keks.throwDice? откуда keks? и что это такое? в коде этого нет.