рдХреИрдирд╡рд╕ рдкрд░ рд╕рд╛рдВрдк

рдореИрдВ рдЖрджрд░рдгреАрдп рд╣рд╛рдмрд░рд╛ рд╕рдореБрджрд╛рдп рдХреЛ рд╢реБрднрдХрд╛рдордирд╛рдПрдВ рджреЗрддрд╛ рд╣реВрдВред рдЕрдкрдиреА рд░рд┐рд▓реАрдЬ рдХреЗ рджрд┐рди, "рдХреИрдирд╡рд╛рд╕ рдФрд░ рд╕реНрдкреНрд░рд╛рдЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЧреЗрдо рдмрдирд╛рдирд╛" рдкреЛрд╕реНрдЯ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдХреИрдирд╡рд╕ рдореЗрдВ рдЕрдкрдиреЗ рдЬреНрдЮрд╛рди рдХреЛ рдЧрд╣рд░рд╛ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдЗрд╕рд▓рд┐рдП, рдЬрдм рддрдХ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдХрд╛рдо рдореЗрдВ рдЗрд╕ рддрддреНрд╡ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рдереА, рддрдм рддрдХ рдЖрдкрдХреЛ рдПрдкреАрдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рддреНрд╡рд░рд┐рдд рдХреЛрдбрд╝рд╛ рдЪрд▓рд╛рдирд╛ рд╣реЛрдЧрд╛ред
рдмреЗрд╢рдХ, рд░реЗрдЦрд╛рдПрдБ, рдЖрдпрддреЗрдВ, рддреНрд░рд┐рдХреЛрдг рдФрд░ рдЕрд░реНрдзрд╡реГрддреНрдд рдЦреАрдВрдЪрдирд╛ рдПрдХ рдмрд╣реБрдд рд╣реА рдордиреЛрд░рдВрдЬрдХ рдХрд╛рд░реНрдп рд╣реИред рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрдиреБрднрд╡ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХрд╛рд░реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ - рдХреБрдЫ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдФрд░ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдПред

рддреЛ рдЕрдкрдиреЗ рдЦреБрдж рдХреЗ рдЦреЗрд▓, рдкрд░рд┐рдЪрд┐рдд рд╕рд╛рдБрдк рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдЪрд╛рд░ рдкреИрджрд╛ рд╣реБрдЖ рдерд╛ред

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдХрд╛рдо рдФрд░ рдЖрд░рд╛рдо рдореЗрдВ рдЗрддрдирд╛ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЦреЗрд▓ рдХреЗрд╡рд▓ рдЕрдм рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕реЗ рдЦреЗрд▓ рдХреЗ рдмреАрдЯрд╛ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рд╣реЛрдиреЗ рджреЗрдВред рд╢рд╛рдпрдж рдХреЛрдИ рдореЗрд░реЗ рдХрд╛рдо рдореЗрдВ рдЖрдПрдЧрд╛ред рд╢рд╛рдпрдж рдореБрдЭреЗ рдирд┐рдордВрддреНрд░рдг рдорд┐рд▓реЗрдЧрд╛, рд▓реЗрдХрд┐рди рд╕рд╛рде рд╣реА рдореИрдВ рдЕрдкрдиреЗ рд╕рд╣рдпреЛрдЧрд┐рдпреЛрдВ рдХреА рдЖрд▓реЛрдЪрдирд╛рддреНрдордХ рдпрд╛ рд╕рд░рд╛рд╣рдиреАрдп рд░рд╛рдп рдХреЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдкреА рд╕реЗ рд╕реБрдиреВрдВрдЧрд╛ред

рдЪрд▓реЛ рдЪрд▓рддреЗ рд╣реИрдВ!
рдХреЛрдб jQuery рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рдкреГрд╖реНрда рд▓реЛрдб рдШрдЯрдирд╛ рдХреЗ рдмрд╛рдж рд╕рднреА рдЪрд░ рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдШреЛрд╖рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рд╣рдо рдЪрд░ рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдХреБрдЫ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдХреИрдирд╡рд╛рд╕ рдХрд╛ рдЖрдХрд╛рд░ рднреА рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕рд╛рдВрдк рдХреЗ "рд╢рд░реАрд░" рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░рддреЗ рд╣реИрдВред рдЬреЛ рдПрдХ рдмрд╣реБрдЖрдпрд╛рдореА рд╕рд░рдгреА рд╣реЛрдЧреАред рдпрд╣ рд╡рд┐рдЪрд╛рд░ рд╣реИ рдХрд┐ рд╕рд╛рдВрдк рдХрд╛ рд╢рд░реАрд░ 9px рддрдХ 9px рдХреЗ рдХреНрд╖реЗрддреНрд░ рдХреЗ рд╕рд╛рде рд╕реЗрдХреНрдЯрд░реЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рд╣реИ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрдХреНрдЯрд░ рдХрд╛ рдореВрд▓ рджреГрд╢реНрдп рдХреЗ рдкреГрдердХреНрдХрд░рдг рдХреЗ рд▓рд┐рдП 10. 1px "рдХреЗ рдПрдХрд╛рдзрд┐рдХ" рд╕реЗрдХреНрдЯрд░ рдХреЗ рджрд╛рдИрдВ рдУрд░ рдЦреАрдВрдЪрд╛ рдирд╣реАрдВ рдЬрд╛рдПрдЧрд╛ред

//  ,     var canvas, context, first_x, first_y, rabbit_pos = new Array(), rabbit_on_field = false, start = true, state = false, g_over = false, direction = 'right'; //      canvas = document.getElementById('mycanvas'); canvas.width = 310; canvas.height = 310; context = canvas.getContext('2d'); //    context.fillStyle = "#CE3429"; //     var snake_sectors = [[10, 50], [20, 50], [30, 50], [40, 50]]; 

рдЦреЗрд▓ рдореИрджрд╛рди рдХреА рд╕реАрдорд╛рдУрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп, рдЬрд┐рд╕реЗ рд╣рдо рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреА рдШреЛрд╖рдгрд╛ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рдХреЙрд▓ рдХрд░реЗрдВрдЧреЗред

 //    function field(context){ context.strokeStyle = "#546DEA"; context.lineWidth = 1; context.strokeRect(7, 7, 295, 295); } 

рд╕реНрдиреЗрдХ рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рдВрдХреНрд╢рди, рдЬрд┐рд╕рдореЗрдВ рдЕрдиреНрдп рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдп рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред

 //   function snake(){ if(state){ //  ""   //      undefined context.clearRect(first_x, first_y, 9, 9); //  "" :  , / if(start){ //     ,       //   ,   9px  10 for(var i in snake_sectors){ context.fillRect(snake_sectors[i][0], snake_sectors[i][1], 9, 9); } start = false; } else{ //     - "" context.fillRect(snake_sectors.slice(-1)[0][0], snake_sectors.slice(-1)[0][1], 9, 9); } //         if(!rabbit_on_field){ rabbit(); } //     ""  "" var last_x = snake_sectors.slice(-1)[0][0]; var last_y = snake_sectors.slice(-1)[0][1]; first_x = snake_sectors[0][0]; first_y = snake_sectors[0][1]; //        if(direction == 'right'){ var next_x = last_x + 10; if(next_x > 290){ //    ,   window.setTimeout(game_over, 700); return false; } snake_sectors.push([next_x, last_y]); } if(direction == 'down'){ var next_y = last_y + 10; if(next_y > 290){ //    ,   window.setTimeout(game_over, 700); return false; } snake_sectors.push([last_x, next_y]); //     ("" ) } if(direction == 'up'){ var next_y = last_y - 10; if(next_y < 10) { //    ,   window.setTimeout(game_over, 700); return false; } snake_sectors.push([last_x, next_y]); } if(direction == 'left'){ var next_x = last_x - 10; if(next_x < 10) { //    ,   window.setTimeout(game_over, 700); return false; } snake_sectors.push([next_x, last_y]); } //          // .. ""    for(var i = 0; i < snake_sectors.length - 1; i++){ if(snake_sectors.slice(-1)[0][0] == snake_sectors[i][0] && snake_sectors.slice(-1)[0][1] == snake_sectors[i][1]){ //   window.setTimeout(game_over, 700); return false; } } //     //     "" if(!is_catching()) snake_sectors.splice(0, 1); else rabbit(); //   ,   -   setTimeout(snake, 200); // 200 ms } } 

рдХреНрд░рдо рдореЗрдВред рдпрджрд┐ рд░рд╛рдЬреНрдп == рд╕рдЪ (рдЦреЗрд▓ рдХреА рд╕рд╣реА / рдЧрд▓рдд рд╕реНрдерд┐рддрд┐ рд╢реБрд░реВ / рд╡рд┐рд░рд╛рдо рджреЗрддрд╛ рд╣реИ), рддреЛ рдлрд╝рдВрдХреНрд╢рди рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рд╡рд░реНрдгрди рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдиреАрдЪреЗ рдЕрдиреНрдп рд╕рднреА рдХрд╛рд░реНрдп рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╕рд╛рдБрдк () рдореЗрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ: рдЦрд░рдЧреЛрд╢ рдХрд╛ рдирд┐рд╖реНрдХрд░реНрд╖ (рдЗрд╕рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЗ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдореВрд▓реНрдпреЛрдВ рдХреА рдкреАрдврд╝реА рдХреЗ рд╕рд╛рде рдФрд░ рд╕рд╛рдБрдк рдХреЗ "рд╢рд░реАрд░" рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ);
 //      function rabbit(){ //    rabbit_pos[0] = math_rand(); rabbit_pos[1] = math_rand(); //       ""  for(var i in snake_sectors){ if(rabbit_pos[0] == snake_sectors[i][0]){ rabbit_pos[0] = math_rand(); } if(rabbit_pos[1] == snake_sectors[i][1]){ rabbit_pos[1] = math_rand(); } } //  ,        context.fillRect(rabbit_pos[0], rabbit_pos[1], 9, 9); rabbit_on_field = true; } 

рдХрд┐рд╕реА рд╢реНрд░реЗрдгреА рдореЗрдВ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдорд╛рдиреЛрдВ рдХрд╛ рдлрд╝рдВрдХреНрд╢рди-рдЬрдирд░реЗрдЯрд░;

 //       //     function math_rand(){ return Math.ceil((Math.random() * 2.9) * 10) * 10; } 

рдЦрд░рдЧреЛрд╢ рдХреЗ "рдЦрд╛рдиреЗ" рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ (рдЦрд░рдЧреЛрд╢ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЗ рд╕рд╛рде "рд╕рд┐рд░" рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ);

 //   ""  // ..   ""     function is_catching(){ if(rabbit_pos[0] == snake_sectors.slice(-1)[0][0] && rabbit_pos[1] == snake_sectors.slice(-1)[0][1]) return true; else return false; } 

рдЦреЗрд▓ рдХреЗ рдЕрдВрдд рдХреА рдШреЛрд╖рдгрд╛ рдФрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкрд░ рд▓реМрдЯрдирд╛ (рдПрдХ рдирдИ рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП);

 // " ",      - //         function game_over(){ //   ,     , //          "Game Over" g_over = true; //     context.clearRect(8, 8, 293, 293); //      context.font='35px Verdana'; context.strokeStyle="#DB733B"; context.strokeText('Game Over!',47,160); //     -   "Game Over!" setTimeout(function(){context.clearRect(8, 8, 293, 293); g_over = false}, 1500); //    -    snake_sectors = [[10, 50], [20, 50], [30, 50], [40, 50]]; state = false; direction = 'right'; start = true; rabbit_on_field = false; } 

"рдЧреЗрдорд┐рдВрдЧ" рдХреБрдВрдЬреА рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рджрдмрд╛рдиреЗ рдХреА рдШрдЯрдирд╛рдУрдВ рдХреЛ рдкрдХрдбрд╝рдирд╛;

 //     ""  document.onkeydown = function(event){ var keyCode; if(event == null){ keyCode = window.event.keyCode; } else{ keyCode = event.keyCode; } switch(keyCode){ // space/ case 32: //     if(!g_over){ //    (continue) state = (!state) ? true : false; //   snake(); } break; // left/  case 37: //    "" if(direction == 'right') return; direction = 'left'; break; // up/  case 38: //    "" if(direction == 'down') return; direction = 'up'; break; // right/  case 39: //    "" if(direction == 'left') return; direction = 'right'; break; // down/  case 40: //    "" if(direction == 'up') return; direction = 'down'; break; default: break; } } 

рдЖрдк рдпрд╣рд╛рдВ рдЦреЗрд▓ рд╕рдХрддреЗ рд╣реИрдВ ред

рдореБрдЭреЗ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд╕реНрд╡рд╕реНрде рдЖрд▓реЛрдЪрдирд╛ рд╕реБрдирдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

Source: https://habr.com/ru/post/In202014/


All Articles