@@ -33,21 +33,79 @@ let gameRun;
3333function 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
53111Start ( ) ;
@@ -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