рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА 30 рдкрдВрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рд▓реЛрдЧреЛрдВ рдХреЛ рдлрд┐рдЯ рдХрд░рддреЗ рд╣реБрдП
рдПрдХреНрд╕реЗрд▓ рдФрд░ рдПрдХ
рд╕рд╛рдБрдк рдХреЛ рдлрд┐рдЯ рдХрд░рддреЗ рд╣реБрдП, рдореИрдВрдиреЗ рдкреНрд░рдЧрддрд┐ рдХреЗ рд╕рд╛рде рд░рд╣рдиреЗ рдФрд░ рдРрд╕рд╛ рдХреБрдЫ рдмрдирд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред
рддреЛ, рджреЗрд╡рд┐рдпреЛрдВ рдФрд░ рд╕рдЬреНрдЬрдиреЛрдВ - рд╢реБрджреНрдз рдЬреЗрдПрд╕ рдкрд░ 30-рд▓рд╛рдЗрди рд╡рд╛рд▓реЗ рдЕрд░реНрдХрд╛рдиреЙрдЗрдбред
рдмреЗрд▓рд╛ рд╕реЗ рд▓рд┐рдВрдХред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВ рдЗрд╕реЗ
рдХреЛрдбрдкреЗрди рдкрд░ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ
рдХрд░реВрдВрдЧрд╛ , рдЕрдиреНрдпрдерд╛
рдлрд┐рдбреЗрд▓ рдиреЗ рдкреВрд░реА рд░рд╛рдд 500koy рдХреЗ рд╕рд╛рде рдЙрддреНрддрд░ рджрд┐рдпрд╛ред
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ:
(function (fld, pF, px, py, dx, dy, lifes, score) { var cycle = setInterval(function () { var bx = pF(ball.style.left = pF(ball.style.left) + dx + 'px'), by = pF(ball.style.top = pF(ball.style.top) + dy + 'px'), row = ((by - 30) / 14) | 0, col = (bx / 32) | 0; if (bx < 0 && dx < 0 || bx >= 314 && dx > 0) dx *= -1; if (bx + 6 >= px && bx + 6 <= px + 64 && by >= 259 && by <= 264) { dy *= -1; if (bx + 6 <= px + 21) dx = -6; else if (bx + 6 >= px + 43) dx = 6; else if (Math.abs(dx) == 6) dx = (dx * 2 / 3) | 0; } if (by < 0) dy *= -1; if (by >= 288 && !--lifes) clearInterval(cycle), alert('Game over!'); if (by >= 288 && lifes) dy *= -1, lifesNode.innerHTML = lifes; if (by >= 18 && by <= 100 && fld[row * 10 + col].className != 'removed') { dy *= -1, fld[row * 10 + col].className = 'removed'; if (dx < 0 && ((bx | 0) % 32 < 10 || (bx | 0) % 32 > 22)) dx *= -1; if (dx > 0 && (((bx + 12) | 0) % 32 < 10 || ((bx + 12) | 0) % 32 > 22)) dx *= -1; scoreNode.innerHTML = ++score; if (score == 50) clearInterval(cycle), alert('Victory!'); } }, 1000 / 60); document.addEventListener('mousemove', function (e) { px = (e.pageX > 40) ? ((e.pageX < 290) ? e.pageX - 40 : 256) : 0; paddle.style.left = px + 'px'; }, false); }(field.children, parseFloat, 129, 270, -4, -4, 3, 0));
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдореИрдВрдиреЗ рдЕрдзрд┐рдХрддрдо рдкреНрд░рд╛рдорд╛рдгрд┐рдХрддрд╛ рд╣рд╛рд╕рд┐рд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА:
- рдЧреЗрдВрдж рдХреЗ рдкрд░рд╛рд╡рд░реНрддрди рдХрд╛ рдХреЛрдг рдЗрд╕ рдмрд╛рдд рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ (рдереЛрдбрд╝рд╛) рдХрд┐ рд░реИрдХреЗрдЯ рдХреЗ рдХрд┐рд╕ рддрд░рдл рдЧрд┐рд░ рдЧрдпрд╛: рдЬрдм рдмрд╛рдИрдВ рддреАрд╕рд░реА рдХреЗ рд▓рд┐рдП рдЧрд┐рд░рдиреЗ рдкрд░, рдЧреЗрдВрдж рдмрд╛рдИрдВ рдУрд░ рдЙрдбрд╝рддреА рд╣реИ, рдЬрдм рд╡рд╣ рджрд╛рдПрдВ рддреАрд╕рд░реЗ рд╕реЗ рдЯрдХрд░рд╛рддреА рд╣реИ - рджрд╛рдИрдВ рдУрд░ (рджреЛрдиреЛрдВ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдкреНрд░рдХреНрд╖реЗрдкреНрдп рдмреАрдЪ рдХреА рдУрд░ рд╕реЗ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдХреЛрдг рдкрд░ рдкрд░рд┐рд▓рдХреНрд╖рд┐рдд рд╣реЛрддрд╛ рд╣реИ) , рдЬрдм рдпрд╣ рдХреЗрдВрджреНрд░ рд╕реЗ рдЯрдХрд░рд╛рддрд╛ рд╣реИ, рддреЛ рдЧреЗрдВрдж 45 ┬░ рдкрд░ рдЙрдбрд╝ рдЬрд╛рддреА рд╣реИ рдФрд░ x- рдЕрдХреНрд╖ рдХреЗ рд╕рд╛рде рдЗрд╕рдХреА рджрд┐рд╢рд╛ рдирд╣реАрдВ рдмрджрд▓рддреА рд╣реИред
- рд╕реНрдХреЛрд░рд┐рдВрдЧ (рдФрд░ рдЗрд╕рдХреЗ рдмрд┐рдирд╛ рдХреНрдпрд╛)ред
- рддреАрди рдЬреАрд╡рди рджрд┐рдП рдЧрдП рд╣реИрдВред рд╕рдЪ рд╣реИ, рдЬрдм рдХреЛрдИ рдЧреЗрдВрдж рдиреАрдЪреЗ рдЬрд╛рддреА рд╣реИ, рддреЛ рдЦреЗрд▓ рд░реАрд╕реЗрдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдЧреЗрдВрдж рд╕рд┐рд░реНрдл рдЙрдЫрд▓рддреА рд╣реИ рдФрд░ рдПрдХ рдЬреАрд╡рди рд▓реЗрддреА рд╣реИред
рдХрдорд┐рдпреЛрдВ рдХреЗ рдмреАрдЪ: рдЧреЗрдВрдж рдХрднреА-рдХрднреА рдЕрдиреБрдЪрд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддреА рд╣реИ рдФрд░ рдХрдИ рдИрдВрдЯреЛрдВ рдХреЛ рддреЛрдбрд╝ рджреЗрддреА рд╣реИред
рд╣реБрдб рдХреЗ рдиреАрдЪреЗ
рд▓реЗрдЖрдЙрдЯ рдХреЗ рд╕рд╛рде рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИред рдИрдВрдЯреЗрдВ - рдЗрдирд▓рд╛рдЗрди рдмреНрд▓реЙрдХ, рд░реИрдХреЗрдЯ рдФрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯрд╛рдЗрд▓ - рд╕реНрдерд┐рддрд┐: рдирд┐рд░рдкреЗрдХреНрд╖ред
рд▓реЗрдХрд┐рди рдЯрдХреНрдХрд░ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд╕рд╛рде рдереЛрдбрд╝рд╛ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИред рдЬрд┐рд╕ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдИрдВрдЯреЗрдВ рд╕реНрдерд┐рдд рд╣реИрдВ, рд╡рд╣ рдКрдкрд░ рдФрд░ рдиреАрдЪреЗ рддрдХ рд╕реАрдорд┐рдд рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЯрдХрд░рд╛рд╡ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рддрднреА рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдЬрдм рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдкреНрд░рдХреНрд╖реЗрдкреНрдп рд╣реЛрддрд╛ рд╣реИред рдИрдВрдЯреЛрдВ рдХреА рдКрдВрдЪрд╛рдИ рдФрд░ рдЪреМрдбрд╝рд╛рдИ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЧреЗрдВрдж рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рд▓реЗрддреЗ рд╣реБрдП, рд╣рдо рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдИрдВрдЯреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рдЧрд┐рд░ рдЧрдпрд╛ред рдпрджрд┐ рдЗрд╕рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ
X
рдФрд░
Y
, рдФрд░ рдИрдВрдЯреЛрдВ рдХреА рдЪреМрдбрд╝рд╛рдИ рдФрд░ рдКрдВрдЪрд╛рдИ рдЪреМрдбрд╝рд╛рдИ рдФрд░ рдКрдБрдЪрд╛рдИ рд╣реИ, рддреЛ рдирд┐рдЬреА
X / width
рдФрд░
Y / height
рд╕реЗ рдкреВрд░реНрдгрд╛рдВрдХ рднрд╛рдЧ рд▓реЗрддреЗ рд╣реБрдП
Y / height
рд╣рдо рд╡рд░реНрддрдорд╛рди рд▓рдХреНрд╖реНрдп рдХреЗ рд╕реНрддрдВрдн рдФрд░ рдкрдВрдХреНрддрд┐ рд╕рдВрдЦреНрдпрд╛ рдХреЙрд▓реЛрдиреА рдФрд░ рдкрдВрдХреНрддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдЬрд╛рдирдХрд░, рд╣рдо рдЗрд╕ рддрддреНрд╡ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреА рдЧрдгрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
number = row * rowLength + col
ред
рд╕реМрднрд╛рдЧреНрдп рд╕реЗ,
querySelectorAll
рддрддреНрд╡реЛрдВ рдХреЛ рдЙрд╕реА рдХреНрд░рдо рдореЗрдВ рд▓реМрдЯрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╡реЗ html рдореЗрдВ рд╕реНрдерд┐рдд рд╣реЛрддреЗ рд╣реИрдВред рдФрд░ рд╣рдо рдЖрд╕рд╛рдиреА рд╕реЗ рд╡рд░реНрддрдорд╛рди рдИрдВрдЯ рдХреЛ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВ:
elements[number].className = 'removed'
ред
setInterval
рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рд╕рднреА рдбреЗрд╕реНрдХрдЯреЙрдк рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рджреЗрд╢реА
requestAnimationFrame
рдкрд╣рд▓реЗ рд╣реА
рд▓рд╛рдЧреВ рд╣реЛ рдЪреБрдХрд╛ рд╣реИ, рдЗрд╕реЗ
requestAnimationFrame
рдкрдХреНрд╖ рдореЗрдВ рдЫреЛрдбрд╝рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рдЖрдкрдХреЛ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдХрд╡рд░ рдХрд░рдиреЗ рдХреА рднреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░реА рдмрд╛рдд, рдпрд╣ рдХреЛрдб рдХреА рдПрдХ (рдХреАрдорддреА!) рдмрдЪрд╛рддрд╛ рд╣реИ:
requestAnimationFrame(function () frame { requestAnimationFrame(frame); });
рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░
рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдХреЛрдб рдХрд╛рдлреА рдХреЙрдореНрдкреИрдХреНрдЯ рдирд┐рдХрд▓рд╛ред рд╕рдмрд╕реЗ рд▓рдВрдмреА рд░реЗрдЦрд╛ 88 рд╡рд░реНрдг (рдЗрдВрдбреЗрдВрдЯреЗрд╢рди рд╕рд╣рд┐рдд) рд╣реИред рдЦреЗрд▓ рд╣реА рдереЛрдбрд╝рд╛ рдЯреЗрдврд╝рд╛ рд╣реИ, рдЕрдЪреНрдЫрд╛, 30 рд▓рд╛рдЗрдиреЛрдВ рд╕реЗ рдХреНрдпрд╛ рдЙрдореНрдореАрдж рдХреА рдЬрд╛рдП? '
рдЕрдм, рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░, рдЬреИрд╕рд╛ рдХрд┐ рдХрд┐рд╕реА рдиреЗ рдкрд┐рдЫрд▓реА рдкреЛрд╕реНрдЯ рдкрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рджреЗрдЦрд╛ рдерд╛, рдЖрдкрдХреЛ 30 рд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ 'рдЯрд┐рдиреА рд╡рд┐рдВрдбреЛрдЬ' рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред