Skip to content

Commit d6a2a69

Browse files
committed
update script SkillfactoryCoding#8 add number parser
1 parent f7d7884 commit d6a2a69

File tree

1 file changed

+67
-9
lines changed

1 file changed

+67
-9
lines changed

bjs/08_if_else/script.js

Lines changed: 67 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -33,21 +33,79 @@ let gameRun;
3333
function Start()
3434
{
3535
//Заменить методы window на что-нибудь из bootstrap (20 баллов)
36-
minValue = parseInt(prompt('Минимальное знание числа для игры','0'));
37-
maxValue = parseInt(prompt('Максимальное знание числа для игры','100'));
38-
alert(`Загадайте любое целое число от ${minValue} до ${maxValue}, а я его угадаю`);
36+
minValue = parseInt(prompt('Минимальное знание числа для игры','0')) || 0;
37+
maxValue = parseInt(prompt('Максимальное знание числа для игры','100')) || 100;
38+
39+
if (minValue > maxValue)
40+
{
41+
let b = minValue;
42+
minValue = maxValue;
43+
maxValue = b;
44+
}
3945

40-
//Валидация введенных значений (через дизъюнкции) (10 баллов)
46+
minValue = minValue < -999 ? -999 : minValue;
47+
maxValue = maxValue > 999 ? 999 : maxValue;
4148

42-
//Ограничение по минимому и максимому для введенных значений (через тернарный оператор) (10 баллов)
43-
// мин = -999 макс = 999
49+
50+
alert(`Загадайте любое целое число от ${minValue} до ${maxValue}, а я его угадаю`);
4451

4552
answerNumber = Math.floor((minValue + maxValue) / 2);
4653
orderNumber = 1;
4754
gameRun = true;
4855

4956
orderNumberField.innerText = orderNumber++;
50-
answerField.innerText = `${nextAnswerPhrases[0]} ${answerNumber }?`;
57+
answerField.innerText = `${nextAnswerPhrases[0]} ${IntToText(answerNumber)}?`;
58+
}
59+
60+
function IntToText(n)
61+
{
62+
const maxLength = 20;
63+
let result = "";
64+
let sign = (Math.abs(n) != n) ? "минус " : "";
65+
let workNuber = Math.abs(n);
66+
67+
if (n == 0)
68+
{
69+
result = 'ноль';
70+
}
71+
else if ((workNuber > 10) && (workNuber < 20))
72+
{
73+
switch (workNuber)
74+
{
75+
case 11: result = `${sign}одинадцать`; break;
76+
case 12: result = `${sign}двенадцать`; break;
77+
case 13: result = `${sign}тринадцать`; break;
78+
case 14: result = `${sign}четырнадцать`; break;
79+
case 15: result = `${sign}пятнадцать`; break;
80+
case 16: result = `${sign}шестнадцать`; break;
81+
case 17: result = `${sign}семнадцать`; break;
82+
case 18: result = `${sign}восемнадцать`; break;
83+
case 19: result = `${sign}девятнадцать`; break;
84+
}
85+
}
86+
else
87+
{
88+
const textValues =
89+
[
90+
["", "один", "два", "три", "четыре", "пять", "шесть", "семь", "восемь", "девять"],
91+
["", "десять", "двадцать", "тридцать", "сорок", "пятьдесят", "шестьдесят", "семьдесят", "восемьдесят", "девяносто"],
92+
["", "сто", "двести", "тристо", "четыресто", "пятьсот", "шестьсот", "семьсот", "восемьсот", "девятьсот"],
93+
];
94+
95+
let i = 0;
96+
while (workNuber != 0)
97+
{
98+
let curDigit = workNuber % 10;
99+
result = textValues[i][curDigit] + (result.length > 0 ? " ": "") + result;
100+
101+
workNuber = Math.floor(workNuber / 10);
102+
i++;
103+
}
104+
105+
result = sign + result;
106+
}
107+
108+
return (result.length < maxLength) ? result : n;
51109
}
52110

53111
Start();
@@ -81,7 +139,7 @@ document.querySelector('#btnOver').addEventListener('click', function () {
81139
//Вывод числа в прописью, если строка получается менее 20 символов (15 баллов)
82140

83141
const phraseRandom = Math.round( Math.random() * (nextAnswerPhrases.length - 1));
84-
answerField.innerText = `${nextAnswerPhrases[phraseRandom]} ${answerNumber }?`;
142+
answerField.innerText = `${nextAnswerPhrases[phraseRandom]} ${IntToText(answerNumber)}?`;
85143
}
86144
}
87145
})
@@ -102,7 +160,7 @@ document.querySelector('#btnLess').addEventListener('click', function () {
102160
//Вывод числа в прописью, если строка получается менее 20 символов (15 баллов)
103161

104162
const phraseRandom = Math.round( Math.random() * (nextAnswerPhrases.length - 1));
105-
answerField.innerText = `${nextAnswerPhrases[phraseRandom]} ${answerNumber }?`;
163+
answerField.innerText = `${nextAnswerPhrases[phraseRandom]} ${IntToText(answerNumber)}?`;
106164
}
107165
}
108166
})

0 commit comments

Comments
 (0)