Гама на JavaScript прямо в онлайне
Спецвыпуск хакер, номер #002, стр. 002-060-5
{
objectdy=-objectdy; // Мяч отражается
score++; // Очки возрастают
}
if (objectdx<0 && (racketpos*2-1==objectx || racketpos*2==objectx ||racketpos*2+1==objectx))
// Аналогично: если мяч движется влево и находится в зоне ракетки
{
objectdy=-objectdy; // Мяч отражается
score++; // Очки возрастают
}
deltascore++; // Количество отскоков увеличилось на единицу
if (deltascore==5){ // Если мяч отскочил уже 5 раз, ускорим игру!
deltascore=0; // Сбросили счетчик отскоков на ноль
waitdelay=waitdelay*0.75; // Уменьшили задержку, т.е. ускорили на 25%
}
if (errorflag!=1)scoreboard.value="Score: "+score; // Вывели очки в табло, если все ОК
} // Конец блока if, проверявшего, находится ли мяч на последней горизонтали
// Теперь три легких случая - мяч у трех стенок:
if (objecty<2) objectdy=-objectdy; // Мяч у верхней стенки, меняем направление
if (objectx>29)objectdx=-objectdx; // Мяч у правой стенки, меняем направление
if (objectx<2) objectdx=-objectdx; // Мяч у левой стенки, меняем направление
// Осуществляем движение:
objectx+=objectdx; // Двигаем объект по X
objecty+=objectdy; // Двигаем объект по Y
if (objecty>19) errorflag=1; // Ошибка! Мяч не был вовремя отражен!
} // Конец тела функции
Вот, собственно, и все! Теперь тебе остается со спокойным сердцем закрыть тэг <SCRIPT> и создать внутри <BODY> с помощью стандартных тэгов кнопочку Start Game (onclick=newgame()), форму (name=battleForm) и внутри ее TEXTAREA размером 30 на 20 (name=battleTA cols=30 rows=20). Не забудь про табло <INPUT name=scoreboard>, и твоя первая игра полностью готова!
Напоследок хочу привести код полного HTML-файла со всем необходимым и пожелать тебе новых игр на JavaScript!
Листинг финального файла squash.htm:
<!- Между этих строк расположены комментарии для HTML
Cтандартный заголовок
-->
<HTML>
<HEAD>
<TITLE>Squash!</TITLE>
</HEAD>
<!-
Собственно, главный JS-сценарий
//-->
<SCRIPT LANGUAGE=javascript>
<!--
var fieldx=1; // X-координата игрового поля
var fieldy=1; // Y-координата игрового поля
var objectx=2; // X-координата мячика
var objectdx=1; // Смещение мячика по оси X
var objecty=2; // Y-координата мячика
var objectdy=1; // Смещение мячика по оси Y
var racketpos=7; // Положение ракетки
var errorflag=0; // Если 0, то все ОК. Единица, если мяч вовремя не отбит
var score=0; // Набранные очки
var deltascore=1; // Количество отскоков
var waitdelay=200; // Задержка в миллисекундах между движениями мячика (скорость игры)
var onflag=0; // Если 0, то игра не начата. Единица, если уже идет
var printscreen; // Главная переменная вывода
function newgame(){ // Объявляем функцию newgame без аргументов
if(onflag==0){ // Т.е. если игра не начата, то...
errorflag=0; // Сбрасываем в значение по умолчанию
score=0; // Очевидно, что очков пока нет
objectx=objecty=2; // Задаем начальные координаты для мяча
fieldx=fieldy=1; // Задаем начальные координаты для поля