
Гама на 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))