JavaScript

Насколько надо владеть JS чтобы начать писать игру змейку?

Владею базовыми знаниями JS + DOM. Было бы хорошо, если бы отвечали те, у кого уже имеется опыт написания змейки на JS
 
const canvas = document.getElementById("game");
const ctx = canvas.getContext("2d");

const ground = new Image();
ground.src = "img/ground.png";

const foodImg = new Image();
foodImg.src = "img/food.png";

let box = 32;

let score = 0;

let food = {
x: Math.floor((Math.random() * 17 + 1)) * box,
y: Math.floor((Math.random() * 15 + 3)) * box,
};

let snake = [];
snake[0] = {
x: 9 * box,
y: 10 * box
};

document.addEventListener("keydown", direction);

let dir;

function direction(event) {
if(event.keyCode == 37 && dir != "right")
dir = "left";
else if(event.keyCode == 38 && dir != "down")
dir = "up";
else if(event.keyCode == 39 && dir != "left")
dir = "right";
else if(event.keyCode == 40 && dir != "up")
dir = "down";
}

function eatTail(head, arr) {
for(let i = 0; i < arr.length; i++) {
if(head.x == arr[i].x && head.y == arr[i].y)
clearInterval(game);
}
}

function drawGame() {
ctx.drawImage(ground, 0, 0);

ctx.drawImage(foodImg, food.x, food.y);

for(let i = 0; i < snake.length; i++) {
ctx.fillStyle = i == 0 ? "green" : "red";
ctx.fillRect(snake[i].x, snake[i].y, box, box);
}

ctx.fillStyle = "white";
ctx.font = "50px Arial";
ctx.fillText(score, box * 2.5, box * 1.7);

let snakeX = snake[0].x;
let snakeY = snake[0].y;

if(snakeX == food.x && snakeY == food.y) {
score++;
food = {
x: Math.floor((Math.random() * 17 + 1)) * box,
y: Math.floor((Math.random() * 15 + 3)) * box,
};
} else {
snake.pop();
}

if(snakeX < box || snakeX > box * 17
|| snakeY < 3 * box || snakeY > box * 17)
clearInterval(game);

if(dir == "left") snakeX -= box;
if(dir == "right") snakeX += box;
if(dir == "up") snakeY -= box;
if(dir == "down") snakeY += box;

let newHead = {
x: snakeX,
y: snakeY
};

eatTail(newHead, snake);

snake.unshift(newHead);
}

let game = setInterval(drawGame, 100);






//


  





Игра на JavaScript







MS
Maksat Seytiyev
59 846
Лучший ответ
Думаю, твоего уровня как раз достаточно. С canvas заморачиваться не стоит, а вот сделать таблицу из небольших квадратных ячеек в качестве игрового поля - получится как раз классическая змейка, очень похожая на те, что делали на текстовых дисплеях.
а ты попробуй, если не осилишь, значит еще недостаточно
Сергей Хегай
Сергей Хегай
94 209
На 4 или 5.
MM
Mark Market
43 053
чтобы начать писать можно вообще не владеть, а походу разобраться. так новые языки и учатся. Я cмогу написать ее на js, не владея сейчас js)
С)
Серега )))
10 596
Талай Садыков не владея JS на JS? где логика?
Змейку на JS, конечно, не писал, но многолетний опыт разработки, думаю, может восполнить этот недостаток.
Если владеешь основами программирования, то смело начинай писать змейку. К тому же, лучше использовать canvas вместо элементов DOM
NA
N. A. Muslim
9 233