Создание библиотеки
Я правильно понимаю, что это синтаксис библиотеки в javascript с ключом rank и значением suit?
var hand = [ { "rank":"семерка", "suit":"пик" }, { "rank":"четверка", "suit":"червей" }, { "rank":"двойка", "suit":"треф" }, { "rank":"семерка", "suit":"пик" }, { "rank":"восьмерка", "suit":"бубен" } ]; Тогда как мне создать такую же библиотеку по ходу выполнения кода. Т.е. у меня есть текстовые поля, куда рандомно закидываются значения карт (номинал и масть, например, восьмерка черви или туз треф). Теперь, чтобы работать с этими значениями, мне нужно присвоить переменной hand значения текстовых полей так, как показано выше, чтобы я мог обращаться к номиналам (hand.rank) и к мастям (hand.suit) <input type="button" value="Кликни!" onclick="func1()"> <p><input type="text" id="random1" readonly></p> <p><input type="text" id="random2" readonly></p> <input type="text" id="random3" readonly> <p><input type="text" id="random4" readonly></p> <input type="text" id="random5" readonly> <p><input type="button" value="Кликни!" onclick="ANSWER"></p> <p><input type="text" id="solve"></p> var ranks = ["двойка","тройка","четверка","пятерка","шестерка", "семерка","восьмерка","девятка","десятка","валет","дама","король","туз"]; var suits = ["пик","червей","треф","бубен"]; function func() { return { rank: ranks[Math.floor(Math.random() * ranks.length)], suit: suits[Math.floor(Math.random() * suits.length)] }; } var hand = []; function func1() { for (var i = 0; i < 5; i++) { var card = func(); hand[i] = card; document.getElementById("random" + (i + 1)).value = card.rank + " " + card.suit; } } function containsNTimes(handRanks, rank, n) { //............. } function containsNMasti_1(handRanks, suit, n) { //.............. } function containsNMasti_2(handRanks1, rank) { //............. } } function FullHouse(hand) { //............ } function StreetFlesh(hand) { //............ } function ANSWER() { // ЗДЕСЬ НУЖНО СОЗДАТЬ ТУ САМУЮ БИБЛИОТЕКУ hand try { while(true) { if (FullHause(hand)) { document.getElementById('solve').value = 'Комбинация - Фулл-Хауз'; } else if (StreetFlesh(hand)) { document.getElementById('solve').value = 'Комбинация - Стрит-Флеш'; } else { document.getElementById('solve').value = 'Нет известной комбинации'; } } } catch (e) { alert( 'No game!' ); } finally { if (confirm("Продолжить?")) break; else break; } } Буду очень благодарен за помощь! |
Цитата:
Цитата:
|
Malleys,
Да, в этой строчке создается объект: var hand = []; Но он пустой. Или когда рандомно заполняются поля, то и заполняется сам объект с ключом и значением? Я не знаю, как вот передать все это в функцию ANSWER... |
Цитата:
Цитата:
function ANSWER() { // ЗДЕСЬ НУЖНО СОЗДАТЬ ТУ САМУЮ БИБЛИОТЕКУ hand alert(hand); try { while(true) { |
Malleys,
проблема в том, что у меня ничего не происходит, когда нажимаю на кнопку "кликни!": <p><input type="button" value="Кликни!" onclick="ANSWER()"></p> Я думал, это из-за того, что массив объектов пустой, но видимо дело в другом... |
Malleys,
Я закомментировал try,catch и finally, вот что вывелось: [object Object],[object Object],[object Object],[object Object],[object Object] Почему так? |
Потому что по умолчанию строковое представление объектов так выглядит!
Можно так... alert(JSON.stringify(hand)); А можно своё собственное, которое я уже писал вам... alert(hand.map(function(card) { return card.rank + " " + card.suit; }).join(", ")); А это... function ANSWER() { // ЗДЕСЬ НУЖНО СОЗДАТЬ ТУ САМУЮ БИБЛИОТЕКУ hand try { while(true) { if (FullHause(hand)) { document.getElementById('solve').value = 'Комбинация - Фулл-Хауз'; } else if (StreetFlesh(hand)) { document.getElementById('solve').value = 'Комбинация - Стрит-Флеш'; } else { document.getElementById('solve').value = 'Нет известной комбинации'; } } } catch (e) { alert( 'No game!' ); } finally { if (confirm("Продолжить?")) break; else break; } }Оно у вас застревает в вечном цикле... и зачем вам тут try,catch и finally, ошибок не предвидится... может это также как с библиотекой, вы думаете одно, а оно означает другое? |
Malleys,
вот-вот, сам понимаю, что ошибок не может быть, если все автоматически задается, но у меня такая лабораторная - обязательное использование этой конструкции. |
Цитата:
Может так? function ANSWER() { // ЗДЕСЬ НУЖНО СОЗДАТЬ ТУ САМУЮ БИБЛИОТЕКУ hand try { if (FullHause(hand)) { document.getElementById('solve').value = 'Комбинация - Фулл-Хауз'; } else if (StreetFlesh(hand)) { document.getElementById('solve').value = 'Комбинация - Стрит-Флеш'; } else { document.getElementById('solve').value = 'Нет известной комбинации'; throw new Error("Нет известной комбинации"); } } catch (e) { alert( 'No game!' ); } finally { if (confirm("Продолжить?")) func1(); // а здесь заново запустить } } |
Malleys,
Теперь понял, зачем эта конструкция. Но все равно ничего не происходит при нажатии на вторую кнопку Первая тоже перстала работать |
Часовой пояс GMT +3, время: 18:45. |