Профессиональный веб-дизайн: Введение в современные веб-технологии "3. Создание внешней таблицы. Теперь создайте таблицу с двумя строками. Во второй строке создайте две ячейки - в первую переместите таблицу цифр, а во вторую - таблицу знаков." Как в ячейку <td> поместить таблицу? Таблица же сама состоит из ячеек. Исходя из задания следует, что <td> может быть родителем для <td>, но это противоречит правилам HTML? |
Опубликован: 01.09.2010 | Уровень: для всех | Доступ: платный | ВУЗ: Сибирский федеральный университет
Лекция 9:
Сценарии Javascript
Объектная модель создана, и мы можем ее использовать. Сохраним весь вышеприведенный код в файле blackjack.js. Создадим HTML-документ ( blackjack.htm ):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>BlackJack</title> <script type="text/javascript" src="blackjack.js"></script> <link href="blackjack.css" rel="stylesheet" type="text/css" /> </head> <body> <!-- Весь пользовательский интерфейс располагается здесь --> <div class="Hand" id="dealer"> </div> <div id="result"> </div> <div id="player" class="Hand"> </div> <div> Баланс: $<span id="balance"></span> Ставка: $<span id="bet"></span><br /> Очки: <span id="sum"></span> </div> <input type="button" onclick="bet()" value="увеличить ставку" id="btnBet" /> <input type="button" onclick="nextCard()" value="взять карту" id="btnRun" /> <input type="button" onclick="finish()" value="Крупье" id="btnFinish" /> </body> </html>
Стилевая информация хранится в отдельном файле blackjack.css. Вот примерное содержание:
body { background-color: Green; color: White; font-family: Comic Sans MS; font-size: 14px; text-align: center; } .Card { border: solid 1px #000; margin: 6px; } .Hand { height: 120px;/* Делаем достаточно высоким, чтобы поместилась карта */ } #result { height: 30px; }
Остается создать игроков, инициализировать колоду карт и обработать события нажатия на кнопки.
//задаем функцию, выполняемую при загрузке страницы window.onload = function() { Deck.init(); //заполняем колоду картами player = new Hand(); //игрок объявлен глобально dealer = new Hand(); //крупье объявлен глобально //кнопки "Взять карту" и "крупье" изначально недоступны document.getElementById('btnRun').disabled = true; document.getElementById('btnFinish').disabled = true; //вспомогательная функция Show() определена ниже Show(); } //обрабатываем нажатие кнопки "увеличить ставку" function bet() { dealer.init(); //сбросить карты у крупье player.init(); //сбросить карты у игрока Deck.shuffle(); //перетасовать колоду //очищаем окно от карт и результата document.getElementById('player').innerHTML = ''; document.getElementById('dealer').innerHTML = ''; document.getElementById('result').innerHTML = ''; document.getElementById('sum').innerHTML = ''; if (player.bet()) { // нет необходимости писать if (player.bet() > 0) // 0 == false, любое другое число == true document.getElementById('btnRun').disabled = false; } Show(); } //обрабатываем нажатие кнопки "взять карту" function nextCard() { var oTest = document.getElementById('player'); var oSum = document.getElementById('sum'); //берем карту и показываем ее в окне браузера oTest.appendChild(player.nextCard().img); var s = player.calc(); //подсчитываем очки oSum.innerHTML = s; //показываем очки //делаем доступной карту "Крупье" document.getElementById('btnFinish').disabled = false; if (s > 21 && player.cards.length > 2) { //у игрока перебор. нет смысла продолжать document.getElementById('result').innerHTML = 'Не повезло'; player.currentBet = 0; document.getElementById('btnFinish').disabled = true; document.getElementById('btnRun').disabled = true; } Show(); } //обрабатываем нажатие кнопки "крупье" function finish() { document.getElementById('btnRun').disabled = true; document.getElementById('btnFinish').disabled = true; //находим элемент с id="dealer" var oDealer = document.getElementById('dealer'); //таково внутреннее правило казино - рисковать до 16 очков while (dealer.calc() < 17) { //добавляем карты крупье и отображаем их oDealer.appendChild(dealer.nextCard().img); } switch (player.compare(dealer)) { case 1: document.getElementById('result').innerHTML = '!!! Победа !!!'; player.balance += player.currentBet * 2; player.currentBet = 0; break; case -1: document.getElementById('result').innerHTML = 'Не повезло'; player.currentBet = 0; break; default: // 0 - ровно document.getElementById('result').innerHTML = '??? Ровно ???'; break; } Show(); } //вспомогательная функция function Show() { //находим элемент с id='balance' и показываем баланс игрока //у крупье баланс не ограничен document.getElementById('balance').innerHTML = player.balance; document.getElementById('bet').innerHTML = player.currentBet; }
Этот код можно добавить в файл blackjack.js. Сохраните все файлы в одной папке. Откройте файл blackjack.htm в браузере.
Вопросы
- Какое назначение имеет язык Javascript?
- Каким образом сценарий Javascript вставляется в HTML-документ?
- Как объявляется переменная? Какие имена недопустимы?
- Какие типы данных имеются в Javascript?
- Как создаётся массив? С чего начинается нумерация элементов массива?
- Перечислите и охарактеризуйте управляющие структуры Javascript.
- Какие существуют в Javascript варианты синтаксиса создания функций?
- Как создать несколько однотипных пользовательских объектов?
- Как добавить метод к типу объекта?
- Как создаётся объект при отсутствии необходимости определения его типа?