ЖУРНАЛ ХАКЕР

Гама на JavaScript прямо в онлайне

Спецвыпуск хакер, номер #002, стр. 002-060-6


waitdelay=200; // Присваиваем значение по умолчанию

deltascore=0; // Нет игры - нет и отскоков

scoreboard.value="Score: "+score; //Записываем ноль в табло

main(); // Вызываем основную функцию

} //Конец блока if

} // Конец тела функции newgame

function main(){ // Объявляем функцию main без аргументов

if (errorflag!=1){ //Если ошибки нет, т.е. если мяч успешно отбит...

definefield(); // Вызываем функцию, отвечающую за прорисовку поля

definemovement(); // Вызываем функцию, отвечающую за движение объектов

onflag=1; // Обозначаем, что игра уже идет

setTimeout("main()",waitdelay); // Вызываем main через waitdelay миллисекунд

} //Конец блока if

else { //Ошибка! Мяч не был отбит!

printscreen="Вы жестоко ошиблись!!!!!"; // Формируем строку сообщения

battleForm.battleTA.value=printscreen; // Выводим сообщение

onflag=0; //Устанавливаем в состояние "игры нет"

} // Конец блока else

} // Конец тела функции main

function testbrowser(){ // Объявляем функцию testbrowser без аргументов

if (window.navigator.userAgent.indexOf("MSIE")== -1) // Если в объекте информации о

// браузере userAgent нет строки MSIE, то это - не Internet Explorer!

alert ("Please use IE for this page!"); // Используем метод alert для предупреждения

} // Конец тела функции testbrowser

function keyboard(){ // Объявляем функцию keyboard без аргументов

if (window.event.keyCode==37 && racketpos>1) racketpos--;

// Если нажата кнопка влево и ракетка не у левого края, двигаем ее влево

if (window.event.keyCode==39 && racketpos<15) racketpos++;

// Аналогично: нажата кнопка вправо и ракетка не у самого края, двигаем ее вправо

} // Конец тела функции keyboard

function definefield(){ // Объявляем саму функцию и в который раз без аргументов

printscreen=""; // Обнуляем переменную, отвечающую за прорисовку поля

fieldx=fieldy=1; // Начинаем поиск мячика с левого верхнего угла поля

// Блок 1:

while (fieldy<20){ // Для каждой строки по 19-ю включительно:

for (fieldx=1; fieldx<31; fieldx++){ // Для каждого элемента сравниваем:

if (objectx==fieldx && objecty==fieldy) printscreen+="o";

// Если совпали координаты, то на этом месте - мячик

else printscreen+="."; // Иначе - пусто

} // Конец цикла for - вся строка просмотрена в поисках мячика

fieldy++; // Берем следующую строку, и все сначала, пока не исчерпаем все 19 строк

} // Конец цикла while - все 19 строк пройдены

// Блок 2 для последней 20-ой строки:

for (fieldx=1; fieldx<16; fieldx++){ // Для каждого второго элемента (всего 15 позиций!)

if (racketpos==fieldx) printscreen+="=="; // Если совпали, значит рисуем ракетку

else printscreen+=".."; // Иначе - пусто

} // Конец цикла for - где-то нарисовали ракетку

battleForm.battleTA.value=printscreen; // Рисуем наше поле в TEXTAREA "battleTA"

} // Конец функции definefield

function definemovement(){ // Объявляем функцию без аргументов

// Сразу самый сложный случай: мяч на последней горизонтали

if (objecty>18){ // Внимание! Мяч на предпоследней строке!

if (objectdx>0 && (racketpos*2-2==objectx || racketpos*2==objectx || racketpos*2-1==objectx))

Назад на стр. 002-060-5  Содержание  Вперед на стр. 002-060-7