Я создаю игры со змеями, используя JavaScript, и я использовал мозаичные изображения для создания части со змеями (голова, тело, хвост), но в некотором месте на карте это показывает неправильные изображения

Вот мой код:

function drawSnake() { // Loop over every snake segment for (var i=0; i{amp}lt;snake.length; i  ) { var segment = snake[i]; var segx = segment.slice(1,2); var segy = segment.slice(0,1); var tilex = segx*cellWidth; var tiley = segy*cellHeight; // Sprite column and row that gets calculated var tx; var ty; if (i == 0) { // Tail; Determine the correct image var j = i 1; var nseg = snake[j]; var nsegx = nseg.slice(1,2); var nsegy = nseg.slice(0,1); if (segy {amp}lt; nsegy) { // Up tx = 4; ty = 3; } else if (segx {amp}gt; nsegx) { // Right tx = 3; ty = 3; } else if (segy {amp}gt; nsegy) { // Down tx = 3; ty = 2; } else if (segx {amp}lt; nsegx) { // Left tx = 4; ty = 2; } } else if (i == snake.length-1) { // Head; Determine the correct image var k = i-1; var pseg = snake[k]; // Prev segment var psegx = pseg.slice(1,2); var psegy = pseg.slice(0,1); nseg = 0; //console.log(segx, segy, tilex, tiley, pseg); if (psegy {amp}lt; segy) { // Up tx = 4; ty = 1; } else if (psegx {amp}gt; segx) { // Right tx = 3; ty = 1; } else if (psegy {amp}gt; segy) { // Down tx = 3; ty = 0; } else if (psegx {amp}lt; segx) { // Left tx = 4; ty = 0; } } else { // Body; Determine the correct image var l = i-1; var m = i 1; var pseg = snake[l]; // Previous segment var nseg = snake[m]; // Next segment var psegx = nseg.slice(1,2); var psegy = nseg.slice(0,1); var nsegx = pseg.slice(1,2); var nsegy = pseg.slice(0,1); //console.log(segx, segy, tilex, tiley, pseg); if (psegx {amp}lt; segx {amp}amp;{amp}amp; nsegx {amp}gt; segx || nsegx {amp}lt; segx {amp}amp;{amp}amp; psegx {amp}gt; segx) { // Horizontal Left-Right tx = 1; ty = 0; } else if (psegx {amp}lt; segx {amp}amp;{amp}amp; nsegy {amp}gt; segy || nsegx {amp}lt; segx {amp}amp;{amp}amp; psegy {amp}gt; segy) { // Angle Left-Down tx = 2; ty = 0; } else if (psegy {amp}lt; segy {amp}amp;{amp}amp; nsegy {amp}gt; segy || nsegy {amp}lt; segy {amp}amp;{amp}amp; psegy {amp}gt; segy) { // Vertical Up-Down tx = 2; ty = 1; } else if (psegy {amp}lt; segy {amp}amp;{amp}amp; nsegx {amp}lt; segx || nsegy {amp}lt; segy {amp}amp;{amp}amp; psegx {amp}lt; segx) { // Angle Top-Left tx = 2; ty = 2; } else if (psegx {amp}gt; segx {amp}amp;{amp}amp; nsegy {amp}lt; segy || nsegx {amp}gt; segx {amp}amp;{amp}amp; psegy {amp}lt; segy) { // Angle Right-Up tx = 0; ty = 1; } else if (psegy {amp}gt; segy {amp}amp;{amp}amp; nsegx {amp}gt; segx || nsegy {amp}gt; segy {amp}amp;{amp}amp; psegx {amp}gt; segx) { // Angle Down-Right tx = 0; ty = 0; } } // Draw the image of the snake part ctx.drawImage(tileimage, tx*64, ty*64, 64, 64, tilex, tiley, cellWidth, cellHeight); } } 

Я уже проверяю состояние типа (psegy {amp}lt; segy) в голове, хотя это условие и есть, но на изображении показана неправильная часть змеи.

Jefry

новый участник этого сайта. Будьте внимательны, спрашивая разъяснения, комментируя и отвечая. Проверьте наш

Правила поведения

,