JavaScript로 뱀 게임을 만들고 있습니다. 따라서 화살표 키를 누르면 'snakehead'가 계속 그 방향으로 움직여야합니다.javascript settimeout이 더 빠르고 더 빠르게 진행됩니까?
처음 키를 누르면 멋지게 작동하지만 그 후에는 헤드가 더 빠르고 더 빠르게 움직입니다.
그래서 내가 원하는 것은 100 밀리 초마다 한 번 머리를 움직이는 것입니다. 만약 당신이 정말로 무슨 뜻인지 모르겠다면이 페이지를 보아라. http://www.dbzweb.be/08/braetj08/snake.html
그런데 누군가 내 코드를 어떻게 바꿔서 같은 속도로 작동하는지 알려줄 수 있는가?
function init_game() {
if ((event ? event.keyCode : down) == (event ? 40 : 1)) /*down*/
{
if ((snakehead + z) < z * z) {
right = 0;
left = 0;
up = 0;
down = 1;
document.getElementsByClassName(snakehead, "div", document)[0].id = "gamebox";
snakehead = snakehead + z;
document.getElementsByClassName(snakehead, "div", document)[0].id = "gameboxsnake";
} else {
document.write("<h1>game over!</h1> press this button to try again.<br><input type='button' value='retry' onclick='window.open(\"http://www.dbzweb.be/08/braetj08/snake.html\",\"_self\")'>");
}
}
if ((event ? event.keyCode : up) == (event ? 38 : 1)) /*up*/
{
if ((snakehead - z) > -1) {
right = 0;
left = 0;
up = 1;
down = 0;
document.getElementsByClassName(snakehead, "div", document)[0].id = "gamebox";
snakehead = snakehead - z;
document.getElementsByClassName(snakehead, "div", document)[0].id = "gameboxsnake";
} else {
document.write("<h1>game over!</h1> press this button to try again.<br><input type='button' value='retry' onclick='window.open(\"http://www.dbzweb.be/08/braetj08/snake.html\",\"_self\")'>");
}
}
if ((event ? event.keyCode : right) == (event ? 39 : 1)) /*right*/
{
if ((snakehead + 1) % z !== 0) {
right = 1;
left = 0;
up = 0;
down = 0;
document.getElementsByClassName(snakehead, "div", document)[0].id = "gamebox";
snakehead = snakehead + 1;
document.getElementsByClassName(snakehead, "div", document)[0].id = "gameboxsnake";
} else {
document.write("<h1>game over!</h1> press this button to try again.<br><input type='button' value='retry' onclick='window.open(\"http://www.dbzweb.be/08/braetj08/snake.html\",\"_self\")'>");
}
}
if ((event ? event.keyCode : left) == (event ? 37 : 1)) /*left*/
{
if (snakehead % z !== 0) {
right = 0;
left = 1;
up = 0;
down = 0;
document.getElementsByClassName(snakehead, "div", document)[0].id = "gamebox";
snakehead = snakehead - 1;
document.getElementsByClassName(snakehead, "div", document)[0].id = "gameboxsnake";
} else {
document.write("<h1>game over!</h1> press this button to try again.<br><input type='button' value='retry' onclick='window.open(\"http://www.dbzweb.be/08/braetj08/snake.html\",\"_self\")'>");
}
}
t = 0;
t = setTimeout("init_game()", 100);
}
내가이 downvoting하고있다. [faq]를 검토하고 ** 시간을 투자하여 좋은 질문을 작성하십시오. 그렇지 않으면 좋은 대답을 쓰는 데 시간을 투자 할 가치가 없습니다. – zzzzBov
[들여 쓰기 스타일] (http://en.wikipedia.org/wiki/Indent_style) –
메모 :'setTimeout'에 문자열을 전달하지 말고'eval'을 사용합니다. 함수 대신't = setTimeout (init_game, 100);'함수를 전달하십시오. –