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

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

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; // Главная переменная вывода

Теперь давай напишем вспомогательную функцию newgame, которая будет вызываться при нажатии кнопки "Start Game". Ее основная работа - проверка, не начата ли новая игра (т.е. удостовериться в том, что onflag равен 0), и в инициализации переменных для новой игры:

Шаг 2: Функция newgame:

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

if(onflag==0){ // Т.е. если игра не начата, то...

errorflag=0; // Сбрасываем в значение по умолчанию

score=0; // Очевидно, что очков пока нет

objectx=objecty=2; // Задаем начальные координаты для мяча

fieldx=fieldy=1; // Задаем начальные координаты для поля

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

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

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

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

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

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

Теперь самое время определить функцию main. Это основная функция всей программы. Она проверяет, был ли правильно отбит мячик (т.е. значение errorflag), и если все в порядке, вызывает функции definefield (она наполняет главную переменную printscreen и выводит ее в текстовое поле) и definemovement (результатом работы которой является обсчет движения объектов - мячика и ракетки). Однако главное в main - рекурсивный вызов самой функции main через некоторый таймаут. Таким образом, весь процесс замыкается, и вся игра продолжается до момента ошибки игрока. Вот, короче, сама функция main:

Шаг 3: Функция main:

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

Перед описанием функций, выполняющих основную работу (definemovement и definefield), давай напишем еще пару вспомогательных для определения браузера и обработки клавиатуры:

Шаг 4: Вспомогательные функции:

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

загрузка...
Cпец Хакер #075Cпец Хакер #074Cпец Хакер #073Cпец Хакер #072Cпец Хакер #071Cпец Хакер #070Cпец Хакер #069Cпец Хакер #068Cпец Хакер #067Cпец Хакер #066Cпец Хакер #065Cпец Хакер #064Cпец Хакер #063Cпец Хакер #062Cпец Хакер #061Cпец Хакер #060Cпец Хакер #059Cпец Хакер #058Cпец Хакер #057Cпец Хакер #056Cпец Хакер #055Cпец Хакер #054Cпец Хакер #053Cпец Хакер #052Cпец Хакер #051Cпец Хакер #050Cпец Хакер #049Cпец Хакер #048Cпец Хакер #047Cпец Хакер #046Cпец Хакер #045Cпец Хакер #044Cпец Хакер #043Cпец Хакер #042Cпец Хакер #041Cпец Хакер #040Cпец Хакер #039Cпец Хакер #038Cпец Хакер #037Cпец Хакер #036Cпец Хакер #035Cпец Хакер #034Cпец Хакер #033Cпец Хакер #032Cпец Хакер #031Cпец Хакер #030Cпец Хакер #029Cпец Хакер #028Cпец Хакер #027Cпец Хакер #026Cпец Хакер #025Cпец Хакер #024Cпец Хакер #023Cпец Хакер #022Cпец Хакер #021Cпец Хакер #020Cпец Хакер #019Cпец Хакер #018Cпец Хакер #017Cпец Хакер #016Cпец Хакер #015Cпец Хакер #014Cпец Хакер #013Cпец Хакер #012Cпец Хакер #011Cпец Хакер #010Cпец Хакер #009Cпец Хакер #008Cпец Хакер #007Cпец Хакер #006Cпец Хакер #005Cпец Хакер #004Cпец Хакер #003Cпец Хакер #002Cпец Хакер #001