Простая игра со стрельбой
В данном уроке мы сделаем очень простую игру со стрельбой с использованием jQuery. Правила у игры очень простые - нужно стрелять в злодеев, а полицейского не трогать. Целиться надо с помощью мышки, а стрелять - левой кнопкой.
HTML
Код HTML содержит 3 основных элемента div
: панель кнопок и статистики, основное поле игры и финальное сообщение, которое выводится по завершению игры.
Панель кнопок и статистики
Здесь выводится информация о количестве промахов и удачных выстрелов, а также кнопка для запуска игры.
<div id="stat"> <span id="hit">0 Hit</span> <span id="miss">0 Miss</span> <a id="btnstart" href="javascript://">Play ↓</a> </div>
Основное поле игры
Здесь размещаются персонажи игры - три плохиша и один кибальчиш.
<div id="container"> <div id="char1" class="character enemy1"></div> <div id="char2" class="character enemy2"></div> <div id="char3" class="character enemy3"></div> <div id="char4" class="character ally"></div> </div>
Финальное сообщение
Выводится только по завершению игры, в остальное время - скрыто.
<div id="message"> Спасибо за игру. Нажмите "Играть", чтобы запустить игру снова. </div>
JQuery
Логика игры предельно проста. В начале игры все персонажи скрыты и размещаются в случайном порядке в внутри контейнера. Из всех персонажей только один будет показан в случайном порядке.
Когда игра запускается, она будет длиться 30 секунд. Все состояния переводятся в значения по умолчанию. Когда игрок попадает в плохиша, запускается эффект взрыва. Если попасть в кибальчиша, то будет запущен эффект горизонтального отскока. Все используемые эффекты реализованы в библиотеке jQuery UI.
var miss = 0; var hit = 0; $(document).ready(function() { var play; $("#btnstart").click(function(){ startplay(); }); function startplay() { $("#message").fadeOut('slow'); $(".character").fadeOut('slow'); $("#miss").html("0 мимо"); $("#hit").html("0 в цель"); miss = 0; hit = 0; $("#btnstart").css("color", "#e3e3e3"); $("#btnstart").unbind("click"); play = setInterval(scramble, 1800); setTimeout(function() { clearInterval(play); $("#btnstart").css("color", "#333333"); $("#btnstart").bind("click", startplay); // Выводим финальное сообщение var containerPos = $('#container').offset(); $("#message").animate({ top: containerPos.top, left: containerPos.left }, 'fast', function() { setTimeout(function() { $("#message").fadeIn('slow'); $(".character").fadeIn('slow'); }, 500); }); }, 30000); } $(".character").click(function() { if ($(this).hasClass("ally")) { $(this).effect("bounce", { times: 2, direction: 'left' }, 300); $(this).slideUp("fast"); miss++; $("#miss").html(miss + " мимо"); } else { $(this).effect("explode", 500); hit++; $("#hit").html(hit + " в цель"); } }); }); function randomFromTo(from, to){ return Math.floor(Math.random() * (to - from + 1) + from); } function scramble() { var children = $('#container').children(); var randomId = randomFromTo(1, children.length); moveRandom('char'+randomId); setTimeout(function(){ $("#char"+randomId).slideDown('fast'); }, 500); setTimeout(function() { $("#char"+randomId).slideUp('fast'); }, 1500); } function moveRandom(id) { /* Получаем положение контейнера и размер * -- метод доступа: cPos.top и cPos.left */ var cPos = $('#container').offset(); var cHeight = $('#container').height(); var cWidth = $('#container').width(); // Получаем отступы прямоугольника (предполагаем, что все отступы равны) var pad = parseInt($('#container').css('padding-top').replace('px', '')); // Получаем размер перемещаемого прямоугольника var bHeight = $('#'+id).height(); var bWidth = $('#'+id).width(); // Устанавливаем максимум для положения maxY = cPos.top + cHeight - bHeight - pad; maxX = cPos.left + cWidth - bWidth - pad; // Устанавливаем минимум для положение minY = cPos.top + pad; minX = cPos.left + pad; // Устанавливаем новое положение newY = randomFromTo(minY, maxY); newX = randomFromTo(minX, maxX); $('#'+id).animate({ top: newY, left: newX }, 'slow', function() { }); }
CSS
Используемый для игры код CSS. Для фона задействован шаблон, для каждого из четырёх персонажей используется свое изображение, а курсор мыши устанавливается в виде прицела.
body { cursor: url('img/target.gif'); background: #ffffff url("img/trentanove.gif") repeat top right; } #container { background: #ffffff url("img/trentaquattro.gif") repeat top right; margin: 0 auto; border: 5px solid #999999; width: 600px; height: 350px; padding: 20px 50px; cursor: url("img/target.gif"), pointer; -webkit-border-radius: .5em; -moz-border-radius: .5em; border-radius: .5em; } #message { background: #999999; margin: 0 auto; border: 5px solid #999999; width: 600px; height: 350px; padding: 20px 50px; -webkit-border-radius: .5em; -moz-border-radius: .5em; border-radius: .5em; position: absolute; opacity: 0.8; filter:alpha(opacity=80); text-align: center; font-size: 28px; color: #000000; display: none; } .character { border: 2px solid #f3f3f3; width: 95px; height: 95px; position: absolute; display: none; -webkit-border-radius: .5em; -moz-border-radius: .5em; border-radius: .5em; cursor: url('img/target.gif'), pointer; } .character:hover { opacity: 0.6; filter:alpha(opacity=60); } .enemy1 { background: url("img/enemy1.jpg"); } .enemy2 { background: url("img/enemy2.jpg"); } .enemy3 { background: url("img/enemy3.jpg"); } .ally { background: url("img/ally.jpg"); }
Источник: http://feedproxy.google.com/~r/ruseller/CdHX/~3/IU3gHQFWFJU/lessons.php


Дайджест новых статей по интернет-маркетингу на ваш email
Новые статьи и публикации
- 2025-03-14 » SPF-запись
- 2025-03-07 » SEO на маркетплейсах: как оптимизировать карточку товара для поисковой выдачи
- 2025-02-18 » Топ-10 бесплатных нейросетей для генерации изображений: лучшие ии генераторы 2024 года
- 2025-02-11 » Критическая уязвимость в 1С-Битрикс
- 2025-02-11 » Google Search Console: руководство для начинающих вебмастеров
- 2025-02-11 » Методы измерения результативности рекламных кампаний: плюсы и минусы
- 2025-02-11 » Тренды SEO в 2025 году
- 2025-02-10 » Свой Google в локалке. Ищем иголку в стоге сена
- 2025-01-29 » SEO — это комплексная работа. Шесть главных факторов ранжирования сайтов
- 2025-01-29 » Гайд для главной страницы e-commerce сайта: как оформить, чтобы повысить конверсию
- 2025-01-20 » Krea AI выпустила бесплатную функцию преобразования изображений в 3D-объекты — их можно вращать и вписывать в фотографии
- 2025-01-19 » Отзывы на Яндекс Картах: как пройти модерацию
- 2025-01-15 » Топ-6 лучших российских нейросетей, в которых можно генерировать тексты и изображения бесплатно и без VPN
- 2025-01-14 » 15 бесплатных способов узнать, чем интересуется ваша аудитория
- 2025-01-11 » Бездепозитные бонусы в казино за регистрацию с выводом: особенности и возможности получения
- 2025-01-09 » Новая модель LAM способна выполнять задачи в Word
- 2024-12-26 » Универсальный промпт для нейросети: как выжать максимум из ChatGPT, YandexGPT, Gemini, Claude в 2025
- 2024-11-26 » Капитан грузового судна, или Как начать использовать Docker в своих проектах
- 2024-11-26 » Обеспечение безопасности ваших веб-приложений с помощью PHP OOP и PDO
- 2024-11-22 » Ошибки в Яндекс Вебмастере: как найти и исправить
- 2024-11-22 » Ошибки в Яндекс Вебмастере: как найти и исправить
- 2024-11-15 » Перенос сайта на WordPress с одного домена на другой
- 2024-11-08 » OSPanel 6: быстрый старт
- 2024-11-08 » Как установить PhpMyAdmin в Open Server Panel
- 2024-09-30 » Как быстро запустить Laravel на Windows
- 2024-09-25 » Next.js
- 2024-09-05 » OpenAI рассказал, как запретить ChatGPT использовать содержимое сайта для обучения
- 2024-08-28 » Чек-лист: как увеличить конверсию интернет-магазина на примере спортпита
- 2024-08-01 » WebSocket
- 2024-07-26 » Интеграция с Яндекс Еда
На голодный желудок русский человек ничего делать и думать не хочет, а на сытый - не может Раневская Фаина Георгиевна - (1896-1984) - выдающаяся советская актриса театра и кино |
Мы создаем сайты, которые работают! Профессионально обслуживаем и продвигаем их , а также по всей России и ближнему зарубежью с 2006 года!
Как мы работаем
Заявка
Позвоните или оставьте заявку на сайте.
Консультация
Обсуждаем что именно Вам нужно и помогаем определить как это лучше сделать!
Договор
Заключаем договор на оказание услуг, в котором прописаны условия и обязанности обеих сторон.
Выполнение работ
Непосредственно оказание требующихся услуг и работ по вашему заданию.
Поддержка
Сдача выполненых работ, последующие корректировки и поддержка при необходимости.
Или напишите нам в WhatsApp
Или напишите нам в WhatsApp