тСтрис Π½Π° Π΄ΠΆΠ°Π²Π° скрипт

ВСтрис Π½Π° Π΄ΠΆΠ°Π²Π° скрипт

БоврСмСнная вСрсия Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ HTML5 Π² связкС c CSS ΠΈ Javascript прСвращаСтся Π½Π΅ просто Π² массовый инструмСнт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρ‹ ΠΈΠ·. нуля строк ΠΊΠΎΠ΄Π°, Π½ΠΎ, Ρ‚ΠΎΠ³ΠΎ ΠΈ гляди, «HTML-программисты» потСснят классичСских πŸ™‚ По ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ дСтских курсов ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ построСны ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Π° этой связкС.

Π£Π΄ΠΎΠ±Π½ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ вся логичСская Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ°, Π±ΡƒΠ΄ΡŒ Ρ‚ΠΎ Ρ„ΠΎΡ€ΠΌΠ° прилоТСния ΠΈΠ»ΠΈ ΠΊΠ°Π½Π²Π° для Π²Ρ‹Π²ΠΎΠ΄Π° Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ, дСлаСтся ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ HTML, для оформлСния ΠΈ вёрстки идСально подходят стили CSS, Π° Π² JS Π΅ΡΡ‚ΡŒ срСдства для ΡƒΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ доступа ΠΊ Π»ΡŽΠ±ΠΎΠΌΡƒ ΡƒΠ·Π»Ρƒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°, высокоуровнСвыС срСдства программирования ΠΈ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρ‹ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ. К Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅, Π² Π½Ρ‹Π½Π΅ распространённых вСрсиях JS Π½Π΅Ρ‚ Π² чистом Π²ΠΈΠ΄Π΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ нСпонятных Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠΌ «ΠΊΠ»Π°ΡΡΠΎΠ²» с Π·Π°ΠΏΡƒΡ‚Π°Π½Π½Ρ‹ΠΌΠΈ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ, Π½ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ΅ конструированиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

Шагая Π² Π½ΠΎΠ³Ρƒ со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ, Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΈ ΠΌΡ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌ Π½Π° HTML+Javascript Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π·Π°ΠΊΠΎΠ½Ρ‡Π΅Π½Π½ΠΎΠ΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, классичСский ВСтрис ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ ΠΎΠ½ описан Π² Π’ΠΈΠΊΠΈΠΏΠ΅Π΄ΠΈΠΈ.

Π’ΠΎΡ‚ Ρ„Π°ΠΉΠ»Ρ‹ Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ ΠΈ стиля, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π² ΠΎΠ΄Π½Ρƒ ΠΏΠ°ΠΏΠΊΡƒ.

Π€Π°ΠΉΠ» index.html
Π€Π°ΠΉΠ» tetrisstyle.css
Π€Π°ΠΉΠ» js/canvas.js
Π€Π°ΠΉΠ» js/controller.js

Π‘Π°ΠΌΠ° ΠΈΠ³Ρ€Π°, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅, Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄Π»ΠΈΠ½Π½Π΅Π΅, Ρ€ΠΎΠ²Π½ΠΎ Π² 200 строк, Π½ΠΎ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Π²Π°ΠΌ Π±Π΅Π· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΏΠΎΠ½ΡΡ‚ΡŒ Π΅Ρ‘.

Π€Π°ΠΉΠ» js/game.js

РазумССтся, Π½Π΅Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΏΡ€ΠΈΠΊΡ€ΡƒΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠΊΡ€ΡƒΡ‚ΠΈΡ‚ΡŒ сюда, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, сохранСниС Ρ€Π΅ΠΊΠΎΡ€Π΄Π° Π² Cookie-Ρ„Π°ΠΉΠ»Π΅, ΠΏΡ€Π΅Π΄ΡƒΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ скорости ΠΈΠ³Ρ€Ρ‹ Π² зависимости ΠΎΡ‚ количСства ΡƒΠ±Ρ€Π°Π½Π½Ρ‹Ρ… Π»ΠΈΠ½ΠΈΠΉ ΠΈΠ»ΠΈ Π½Π°Π±Ρ€Π°Π½Π½Ρ‹Ρ… ΠΎΡ‡ΠΊΠΎΠ² (ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ interval Π² game.js ) ΠΈ Ρ‚.Π΄.

Π’Π°ΠΊΠΆΠ΅, ΠΊΡ€ΠΎΠΌΠ΅ ΠΏΠ°ΡƒΠ·Ρ‹ ΠΏΠΎ Π½Π°ΠΆΠ°Ρ‚ΠΈΡŽ Esc, ΠΌΡ‹ Π½Π΅ прСдусмотрСли ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ остановок Π² ΠΈΠ³Ρ€Π΅, ΠΏΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΈΠ³Ρ€Ρ‹ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ начинаСтся новая. Π’ ΠΎΠ±Ρ‰Π΅ΠΌ, ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π΅ΡΡ‚ΡŒ ΠΊΡƒΠ΄Π° Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‚ΡŒ.

Ну, Ρ‡Π΅ΠΌ Ρ…ΡƒΠΆΠ΅ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»Π°? πŸ™‚ ΠšΡΡ‚Π°Ρ‚ΠΈ, Ρ‡Ρ‘Ρ€Π½ΠΎ-Π±Π΅Π»Ρ‹ΠΉ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π» ΠΎΡ‚ 1986 Π³ΠΎΠ΄Π° Ρƒ мСня сработал ΠΏΠΎΠ΄ Windows7, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π°ΠΉΠΌΠ΅Ρ€ Ρ‚Π°ΠΌ, Π²ΠΈΠ΄ΠΈΠΌΠΎ, Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹ΠΉ, ΠΈΠ·-Π·Π° Ρ‡Π΅Π³ΠΎ слишком быстро ΠΏΠ°Π΄Π°ΡŽΡ‚ Ρ„ΠΈΠ³ΡƒΡ€ΠΊΠΈ. Но ΠΈΠ·-ΠΏΠΎΠ΄ эмулятора DOS Π΄ΠΎΠ»ΠΆΠ½ΠΎ всё Π±Ρ‹Ρ‚ΡŒ идСально.

тСтрис Π½Π° Π΄ΠΆΠ°Π²Π° скрипт. file. тСтрис Π½Π° Π΄ΠΆΠ°Π²Π° скрипт Ρ„ΠΎΡ‚ΠΎ. тСтрис Π½Π° Π΄ΠΆΠ°Π²Π° скрипт-file. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° тСтрис Π½Π° Π΄ΠΆΠ°Π²Π° скрипт. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° file. БоврСмСнная вСрсия Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ HTML5 Π² связкС c CSS ΠΈ Javascript прСвращаСтся Π½Π΅ просто Π² массовый инструмСнт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρ‹ ΠΈΠ·. нуля строк ΠΊΠΎΠ΄Π°, Π½ΠΎ, Ρ‚ΠΎΠ³ΠΎ ΠΈ гляди, "HTML-программисты" потСснят классичСских :) По ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ дСтских курсов ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ построСны ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Π° этой связкС.Π‘Ρ‹Π³Ρ€Π°Ρ‚ΡŒ Π² Π΅Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ «Π’Стрис» Π½Π° HTML+Javascript, Ρ‚ΠΎΠΆΠ΅ Π³Π»ΡŽΡ‡Π½ΠΎΠ²Π°Ρ‚, сами ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, ΠΏΠΎΡ‡Π΅ΠΌΡƒ (15 Кб)

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Как Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ свой ВСтрис Π½Π° Java Π·Π° полчаса

Как Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ свой ВСтрис Π½Π° Java Π·Π° полчаса

Π’ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… ΡΡ‚Π°Ρ‚ΡŒΡΡ… этой сСрии ΠΌΡ‹ ΡƒΠΆΠ΅ успСли Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ сапёра, Π·ΠΌΠ΅ΠΉΠΊΡƒ ΠΈ дСсктопный ΠΊΠ»ΠΎΠ½ ΠΈΠ³Ρ€Ρ‹ 2048. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ свой ВСтрис.

Нам, ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ, понадобятся:

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ вопрос Π² коммСнтариях, Π½Π΅ Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ Π·Π°Π³Π»ΡΠ½ΡƒΡ‚ΡŒ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΌ Π½Π° Π½Π΅Π³ΠΎ ΡƒΠΆΠ΅ давался ΠΎΡ‚Π²Π΅Ρ‚. Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π³ΠΎΡ‚ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π½Π° GitHub.

Π‘ Ρ‡Π΅Π³ΠΎ Π½Π°Ρ‡Π°Ρ‚ΡŒ?

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ

Код, чСстно говоря, достаточно капитанский:

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹ для ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π½ΠΎΠ³ΠΎ ΠΈ графичСского ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ

Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΠ½ΠΎΠ³ΠΈΠΌ Π½Π΅ нравится, Ρ‡Ρ‚ΠΎ я ΠΏΠΈΡˆΡƒ эти ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π½Π° LWJGL, я Ρ€Π΅ΡˆΠΈΠ» Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΡƒΠ΄Π΅Π»ΠΈΡ‚ΡŒ врСмя Ρ‚ΠΎΠ»ΡŒΠΊΠΎ интСрфСйсам этих классов. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΡ… с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‚ΠΎΠΉ GUI-Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, которая Π΅ΠΌΡƒ нравится (ΠΈΠ»ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚). Π― ΠΆΠ΅ ΠΏΠΎ старинкС Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π» ΠΈΡ… Π½Π° LWJGL, ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ здСсь Π² ΠΏΠ°ΠΏΠΊΠ°Ρ… graphics/lwjglmodule ΠΈ keyboard/lwjglmodule.

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹ ΠΆΠ΅, послС добавлСния Π² Π½ΠΈΡ… всСх упомянутых Π²Ρ‹ΡˆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

ΠžΡ‚Π»ΠΈΡ‡Π½ΠΎ, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π΄Π°Π½Π½Ρ‹Π΅. Π§Ρ‚ΠΎ дальшС?

А дальшС ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ эти Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ с ΠΈΠ³Ρ€ΠΎΠ²Ρ‹ΠΌ ΠΏΠΎΠ»Π΅ΠΌ. Если ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ сказал ΡΠ΄Π²ΠΈΠ½ΡƒΡ‚ΡŒ Ρ„ΠΈΠ³ΡƒΡ€Ρƒ ΠΊΡƒΠ΄Π°-Ρ‚ΠΎ, Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‘ΠΌ полю, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π²ΠΈΠ½ΡƒΡ‚ΡŒ Ρ„ΠΈΠ³ΡƒΡ€Ρƒ Π² Ρ‚Π°ΠΊΠΎΠΌ-Ρ‚ΠΎ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ. Если ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ сказал, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Ρ„ΠΈΠ³ΡƒΡ€Ρƒ ΠΏΠΎΠ²Π΅Ρ€Π½ΡƒΡ‚ΡŒ, ΠΏΠΎΠ²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π΅ΠΌ, ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. ΠšΡ€ΠΎΠΌΠ΅ этого нСльзя Π·Π°Π±Ρ‹Π²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ 1 Ρ€Π°Π· Π² FRAMES_PER_MOVE (Π²Ρ‹ ΠΆΠ΅ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π»ΠΈ Ρ„Π°ΠΉΠ» с константами?) ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΄Π²ΠΈΠ³Π°Ρ‚ΡŒ ΠΏΠ°Π΄Π°ΡŽΡ‰ΡƒΡŽ Ρ„ΠΈΠ³ΡƒΡ€ΠΊΡƒ Π²Π½ΠΈΠ·.

Бюда ΠΆΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Π½Π° ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ поля (Π² ВСтрисС ΠΈΠ³Ρ€Π° Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ, ΠΊΠΎΠ³Π΄Π° Ρ„ΠΈΠ³ΡƒΡ€Π°ΠΌ Π½Π΅ΠΊΡƒΠ΄Π° ΠΏΠ°Π΄Π°Ρ‚ΡŒ):

Π’Π°ΠΊ, Π° Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ напишСм класс для Ρ‚ΠΎΠ³ΠΎ магичСского gameField, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ всё это ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‘ΠΌ, Π΄Π°?

А ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΡ‹ ΠΈΡ… Π±ΡƒΠ΄Π΅ΠΌ Ρ‚Π°ΠΊ:

А Π²ΠΎΡ‚ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ классу, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎΠ± ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΌ ΠΏΠΎΠ»Π΅ ΠΈ Π΅Ρ‘ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅.

Класс GameField

Π­Ρ‚ΠΎΡ‚ класс Π΄ΠΎΠ»ΠΆΠ΅Π½, Π²ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΏΠΎΠ»Π΅ ΠΈ ΠΎ ΠΏΠ°Π΄Π°ΡŽΡ‰Π΅ΠΉ Ρ„ΠΈΠ³ΡƒΡ€Π΅, Π° Π²ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ для ΠΈΡ… обновлСния, ΠΈ получСния ΠΎ Π½ΠΈΡ… ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ – ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚Π΅Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ ΡƒΠΆΠ΅ использовали, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΠΉ Ρ†Π²Π΅Ρ‚ ячСйки ΠΏΠΎ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ графичСский ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΌΠΎΠ³ ΠΎΡ‚Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π΅.

Π₯Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ полС…

…и ΠΎ ΠΏΠ°Π΄Π°ΡŽΡ‰Π΅ΠΉ Ρ„ΠΈΠ³ΡƒΡ€Π΅

TpReadableColor β€” простой enum, содСрТащий элСмСнты с говорящими названиями (RED, ORANGE ΠΈ Ρ‚.ΠΏ.) ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ случайным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· этих элСмСнтов. НичСго особСнного Π² Π½Ρ‘ΠΌ Π½Π΅Ρ‚, ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ‚ΡƒΡ‚.

Π­Ρ‚ΠΎ всС поля, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°ΠΌ понадобятся. Как извСстно, поля Π»ΡŽΠ±ΡΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ.
Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ это слСдуСт Π² конструкторС.

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ ΠΈ инициализация ΠΏΠΎΠ»Π΅ΠΉ

А Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΌ Π·Π° spawnNewFigure()? ΠŸΠΎΡ‡Π΅ΠΌΡƒ инициализация Ρ„ΠΈΠ³ΡƒΡ€Ρ‹ вынСсСна Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄?

На этом с Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ΠΌ Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΡ‹ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ»ΠΈ. ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‚Π΄Π°ΡŽΡ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΏΠΎΠ»Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠΌ классам.

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‰ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΌ ΠΏΠΎΠ»Π΅

Π’Π°ΠΊΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄Π° всСго Π΄Π²Π°. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ†Π²Π΅Ρ‚ ячСйки (для графичСского модуля):

А Π²Ρ‚ΠΎΡ€ΠΎΠΉ сообщаСт, ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΎ Π»ΠΈ ΠΏΠΎΠ»Π΅ (ΠΊΠ°ΠΊ это происходит, ΠΌΡ‹ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π»ΠΈ Π²Ρ‹ΡˆΠ΅):

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΎΠ±Π½ΠΎΠ²Π»ΡΡŽΡ‰ΠΈΠ΅ Ρ„ΠΈΠ³ΡƒΡ€Ρƒ ΠΈ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅

Π‘Π΄Π²ΠΈΠ³ Ρ„ΠΈΠ³ΡƒΡ€Ρ‹

Π§Ρ‚ΠΎ ΠΌΡ‹ сдСлали Π² этом ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅? ΠœΡ‹ запросили Ρƒ Ρ„ΠΈΠ³ΡƒΡ€Ρ‹ ячСйки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹ ΠΎΠ½Π° заняла Π² случаС сдвига. А Π·Π°Ρ‚Π΅ΠΌ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· этих ячССк ΠΌΡ‹ провСряСм, Π½Π΅ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π»ΠΈ ΠΎΠ½Π° Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ поля, ΠΈ Π½Π΅ находится Π»ΠΈ ΠΏΠΎ Π΅Ρ‘ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌ Π² сСткС статичный Π±Π»ΠΎΠΊ. Если Ρ…ΠΎΡ‚ΡŒ ΠΎΠ΄Π½Π° ячСйка Ρ„ΠΈΠ³ΡƒΡ€Ρ‹ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ ΠΈΠ»ΠΈ пытаСтся Π²ΡΡ‚Π°Ρ‚ΡŒ Π½Π° мСсто Π±Π»ΠΎΠΊΠ° – сдвига Π½Π΅ происходит. Coord здСсь – класс-ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° с двумя ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ числовыми полями (x ΠΈ y ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹).

ΠŸΠΎΠ²ΠΎΡ€ΠΎΡ‚ Ρ„ΠΈΠ³ΡƒΡ€Ρ‹

Π›ΠΎΠ³ΠΈΠΊΠ° Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Π° сдвигу:

ПадСниС Ρ„ΠΈΠ³ΡƒΡ€Ρ‹

Π‘Π½Π°Ρ‡Π°Π»Π° ΠΊΠΎΠ΄ Π² точности повторяСт ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ Π΄Π²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π°:

Π’Π°ΠΊ ΠΊΠ°ΠΊ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ пСрСноса ячССк какая-Ρ‚ΠΎ линия ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒΡΡ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ, послС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ добавлСния ячСйки ΠΌΡ‹ провСряСм линию, Π² ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ Π΅Ρ‘ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ, Π½Π° ΠΏΠΎΠ»Π½ΠΎΡ‚Ρƒ:

Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ истину, Ссли линию ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠΈΡ‚ΡŒ. ПослС добавлСния всСх ΠΊΠΈΡ€ΠΏΠΈΡ‡ΠΈΠΊΠΎΠ² Ρ„ΠΈΠ³ΡƒΡ€Ρ‹ Π² сСтку (ΠΈ удалСния всСх Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹Ρ… Π»ΠΈΠ½ΠΈΠΉ), ΠΌΡ‹, ΠΏΡ€ΠΈ нСобходимости, запускаСм ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сдвигаСт Π½Π° мСсто пустых Π»ΠΈΠ½ΠΈΠΉ нСпустыС:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ GameField Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΠΏΠΎΡ‡Ρ‚ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ β€” Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Π³Π΅Ρ‚Ρ‚Π΅Ρ€Π° для Ρ„ΠΈΠ³ΡƒΡ€Ρ‹. Π•Ρ‘ вСдь графичСскому ΠΌΠΎΠ΄ΡƒΠ»ΡŽ Ρ‚ΠΎΠΆΠ΅ придётся ΠΎΡ‚Ρ€ΠΈΡΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Ρ„ΠΈΠ³ΡƒΡ€Π° опрСдСляСт свои ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Π² Ρ€Π°Π·Π½Ρ‹Ρ… состояниях. Π”Π° ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ вСсь класс Ρ„ΠΈΠ³ΡƒΡ€Ρ‹.

Класс Ρ„ΠΈΠ³ΡƒΡ€Ρ‹

Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ это всё я ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ – Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ для Ρ„ΠΈΠ³ΡƒΡ€Ρ‹ (1) Β«ΠΌΠ½ΠΈΠΌΡƒΡŽΒ» ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρƒ, Ρ‚Π°ΠΊΡƒΡŽ, Ρ‡Ρ‚ΠΎ всС Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈ находятся Π½ΠΈΠΆΠ΅ ΠΈ ΠΏΡ€Π°Π²Π΅Π΅ Π½Π΅Ρ‘, (2) состояниС ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚Π° (ΠΈΡ… всСго 4, послС 4-Ρ… ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚ΠΎΠ² Ρ„ΠΈΠ³ΡƒΡ€Π° всСгда возвращаСтся Π² Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅) ΠΈ (3) маску, которая ΠΏΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π΄Π²ΡƒΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ²:

Rotation ΠΌΠΎΠ΄ здСсь Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

БоотвСтствСнно, ΠΎΡ‚ самого класса Figure Π½Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ конструктор, ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ поля:

И ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΌΡ‹ пользовались Π² GameField ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Π²ΠΈΠ΄Π°:

Π’Π΄ΠΎΠ±Π°Π²ΠΎΠΊ, Ρƒ Ρ„ΠΈΠ³ΡƒΡ€Ρ‹ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Ρ†Π²Π΅Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ графичСский ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΌΠΎΠ³ Π΅Ρ‘ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ. Π’ тСтрисС ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ„ΠΈΠ³ΡƒΡ€Π΅ соотвСтствуСт свой Ρ†Π²Π΅Ρ‚, поэтому Ρ†Π²Π΅Ρ‚ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ Ρƒ Ρ„ΠΎΡ€ΠΌΡ‹:

Π€ΠΎΡ€ΠΌΠ° Ρ„ΠΈΠ³ΡƒΡ€Ρ‹ ΠΈ маски ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚

Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ лишнСС мСсто, здСсь я ΠΏΡ€ΠΈΠ²Π΅Π΄Ρƒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Π΄Π²ΡƒΡ… Ρ„ΠΎΡ€ΠΌ: I-ΠΎΠ±Ρ€Π°Π·Π½ΠΎΠΉ ΠΈ J-ΠΎΠ±Ρ€Π°Π·Π½ΠΎΠΉ. Код для ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… Ρ„ΠΈΠ³ΡƒΡ€ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½ΠΎ Π½Π΅ отличаСтся ΠΈ Π²Ρ‹Π»ΠΎΠΆΠ΅Π½ Π½Π° GitHub.

Π₯Ρ€Π°Π½ΠΈΠΌ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ„ΠΈΠ³ΡƒΡ€Ρ‹ маску ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ (которая опрСдСляСт, насколько ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ Π±Π»ΠΎΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡ‚ΡΡ‚ΠΎΡΡ‚ΡŒ ΠΎΡ‚ Β«ΠΌΠ½ΠΈΠΌΠΎΠΉΒ» ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Ρ„ΠΈΠ³ΡƒΡ€Ρ‹) ΠΈ Ρ†Π²Π΅Ρ‚:

Π Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ использовали Π²Ρ‹ΡˆΠ΅:

Ну Π° сами маски ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ я ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽ просто Π·Π°Ρ…Π°Ρ€Π΄ΠΊΠΎΠ΄ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π’.Π΅. для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° enumβ€˜Π° ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‘ΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΈΠΌΠΏΡ€ΠΎΠ²ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… (Π΄Ρ€ΡƒΠ³ΠΈΡ… Π² Java Π½Π΅Ρ‚) Π΄Π΅Π»Π΅Π³Π°Ρ‚ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π² зависимости ΠΎΡ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠ³ΠΎ состояния ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ Ρ€Π°Π·Π½Ρ‹Π΅ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Π±Π»ΠΎΠΊΠΎΠ². Π’ ΠΎΠ±Ρ‰Π΅ΠΌ-Ρ‚ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ ΠΈ Π±Π΅Π· Π΄Π΅Π»Π΅Π³Π°Ρ‚ΠΎΠ², Ссли Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ элСмСнтС отсупы для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Ρ€Π΅ΠΆΠΈΠΌΠΎΠ² ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚Π°.

НаслаТдаСмся Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ

тСтрис Π½Π° Π΄ΠΆΠ°Π²Π° скрипт. Screenshot from 2016 07 12 23 31 59. тСтрис Π½Π° Π΄ΠΆΠ°Π²Π° скрипт Ρ„ΠΎΡ‚ΠΎ. тСтрис Π½Π° Π΄ΠΆΠ°Π²Π° скрипт-Screenshot from 2016 07 12 23 31 59. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° тСтрис Π½Π° Π΄ΠΆΠ°Π²Π° скрипт. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Screenshot from 2016 07 12 23 31 59. БоврСмСнная вСрсия Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ HTML5 Π² связкС c CSS ΠΈ Javascript прСвращаСтся Π½Π΅ просто Π² массовый инструмСнт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρ‹ ΠΈΠ·. нуля строк ΠΊΠΎΠ΄Π°, Π½ΠΎ, Ρ‚ΠΎΠ³ΠΎ ΠΈ гляди, "HTML-программисты" потСснят классичСских :) По ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ дСтских курсов ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ построСны ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Π° этой связкС.

P.S. Π•Ρ‰Ρ‘ Ρ€Π°Π· напомню, Ρ‡Ρ‚ΠΎ исходники Π³ΠΎΡ‚ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° доступны Π½Π° GitHub.

Π₯ΠΈΠ½Ρ‚ для программистов: Ссли Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ΡΡŒ Π½Π° сорСвнования Huawei Cup, Ρ‚ΠΎ бСсплатно ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ доступ ΠΊ ΠΎΠ½Π»Π°ΠΉΠ½-школС для участников. МоТно ΠΏΡ€ΠΎΠΊΠ°Ρ‡Π°Ρ‚ΡŒΡΡ ΠΏΠΎ Ρ€Π°Π·Π½Ρ‹ΠΌ Π½Π°Π²Ρ‹ΠΊΠ°ΠΌ ΠΈ Π²Ρ‹ΠΈΠ³Ρ€Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ·Ρ‹ Π² самом сорСвновании.

ΠŸΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ рСгистрации

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π‘Π²ΠΎΠΉ тСтрис Π½Π° JavaScript: ΠΏΡ€ΠΎΠΊΠ°Ρ‡ΠΈΠ²Π°Π΅ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚

Π”ΠΎΡ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»Π°ΡΡŒ настоящая ΠΈΠ³Ρ€Π°.

Как-Ρ‚ΠΎ Ρ€Π°Π· ΠΌΡ‹ писали собствСнный тСтрис Π½Π° JavaScript. ΠœΡ‹ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ»ΠΈ Π½Π° Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρƒ нас Π΅ΡΡ‚ΡŒ простоС ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅, Ρ„ΠΈΠ³ΡƒΡ€Ρ‹ ΠΈ базовая Π»ΠΎΠ³ΠΈΠΊΠ° ΠΈΠ³Ρ€Ρ‹. Π•Ρ‰Ρ‘ ΠΈΠ³Ρ€Π° ΡƒΠΌΠ΅Π΅Ρ‚ ΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒΡΡ, ΠΊΠΎΠ³Π΄Π° для Ρ„ΠΈΠ³ΡƒΡ€ большС Π½Π΅Ρ‚ мСста. Но этого нСдостаточно, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒΡΡ ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΠΎΠΉ ΠΈΠ³Ρ€ΠΎΠΉ.

Π§Ρ‚ΠΎΠ±Ρ‹ это ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ, Π²ΠΎΡ‚ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ сСгодня Π² ΠΈΠ³Ρ€Ρƒ:

Всё это нСслоТно, Π½ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ внимания. Π§Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΡ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρƒ, Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ ΠΈΠ· ΠΏΠ΅Ρ€Π²ΠΎΠΉ части ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°:

ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΈ Π½Π°Π±Ρ€Π°Π½Π½Ρ‹Π΅ ΠΎΡ‡ΠΊΠΈ

Если ΠΌΡ‹ сдСлаСм Π²Ρ‹Π²ΠΎΠ΄ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎΠ± уровнях ΠΈ статистикС Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ стакана, это Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ΡƒΠ΄ΠΎΠ±Π½ΠΎ: тСкст Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΏΠΎΠ»Π·Π°Ρ‚ΡŒ Π½Π° Ρ„ΠΈΠ³ΡƒΡ€Ρ‹ ΠΈ ΠΌΠ΅ΡˆΠ°Ρ‚ΡŒ ΠΈΠ³Ρ€Π΅. Π—Π½Π°Ρ‡ΠΈΡ‚, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π±Π»ΠΎΠΊ, Π³Π΄Π΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ всС ΠΈΠ³Ρ€ΠΎΠ²Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅. Π‘Π΄Π΅Π»Π°Π΅ΠΌ Π΅Π³ΠΎ сразу послС объявлСния поля для ΠΈΠ³Ρ€Ρ‹ ΠΈ Π΄Π°Ρ‘ΠΌ Π±Π»ΠΎΠΊΡƒ имя score:

Π’Π°ΠΊ ΠΊΠ°ΠΊ Ρƒ нас Π² Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… стилях прописана Ρ€Π°ΠΌΠΊΠ° для холста, Π° для отобраТСния статистики Ρ€Π°ΠΌΠΊΠ° Π½Π΅ Π½ΡƒΠΆΠ½Π°, поставим Π΅ΠΉ Π½ΡƒΠ»Π΅Π²ΡƒΡŽ Ρ‚ΠΎΠ»Ρ‰ΠΈΠ½Ρƒ.

Π—Π°ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅: Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ нас Π½Π° страницС Π΅ΡΡ‚ΡŒ Π΄Π²Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Ρ‚ΠΈΠΏΠ° canvas β€” Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π΄Π²Π° холста. Π’ ΠΎΠ΄Π½ΠΎΠΌ рисуСтся ΠΈΠ³Ρ€Π°, Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ выводятся ΠΎΡ‡ΠΊΠΈ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ смоТСм ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ этим холстам ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΈ Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ, нСзависимо Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π°.

Π’ΠΎΡ‚ ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Π½ΠΎΠ²ΠΎΠΌΡƒ холсту:

// ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ доступ ΠΊ холсту с ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ статистикой

const canvasScore = document.getElementById(‘score’);

const contextScore = canvasScore.getContext(‘2d’);

Π”ΠΎΠ±Π°Π²ΠΈΠΌ Π² скрипт Π½ΠΎΠ²Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ β€” ΠΎΠ½ΠΈ Π½Π°ΠΌ сразу пригодятся Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ этапС:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹Π²Π΅Π΄Π΅ΠΌ Π½Π° экран всю ΠΈΠ³Ρ€ΠΎΠ²ΡƒΡŽ статистику. Для этого ΠΏΠ΅Ρ€Π΅Π΄ Π³Π»Π°Π²Π½Ρ‹ΠΌ Ρ†ΠΈΠΊΠ»ΠΎΠΌ ΠΈΠ³Ρ€Ρ‹ сдСлаСм Π½ΠΎΠ²ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ showScore():

Π¦ΠΈΡ„Ρ€Ρ‹ Π²Ρ€ΠΎΠ΄Π΅ 15, 20, 50, 160 β€” это ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ ΠΏΠΎ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΠΈ ΠΈ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΠΈ, Π³Π΄Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ наши тСкстовыС Π±Π»ΠΎΠΊΠΈ. Π‘Π΅Π· этих ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ ΠΎΠ½ΠΈ всС Π½Π°Π»Π΅Π·ΡƒΡ‚ Π΄Ρ€ΡƒΠ³ Π½Π° Π΄Ρ€ΡƒΠ³Π°.

ПослСднСС, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ ΠΎΡΡ‚Π°Π»ΠΎΡΡŒ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ β€” Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π²Π½ΡƒΡ‚Ρ€ΠΈ основной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ loop() ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ showScore().

тСтрис Π½Π° Π΄ΠΆΠ°Π²Π° скрипт. unnamed 1 1. тСтрис Π½Π° Π΄ΠΆΠ°Π²Π° скрипт Ρ„ΠΎΡ‚ΠΎ. тСтрис Π½Π° Π΄ΠΆΠ°Π²Π° скрипт-unnamed 1 1. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° тСтрис Π½Π° Π΄ΠΆΠ°Π²Π° скрипт. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° unnamed 1 1. БоврСмСнная вСрсия Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ HTML5 Π² связкС c CSS ΠΈ Javascript прСвращаСтся Π½Π΅ просто Π² массовый инструмСнт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρ‹ ΠΈΠ·. нуля строк ΠΊΠΎΠ΄Π°, Π½ΠΎ, Ρ‚ΠΎΠ³ΠΎ ΠΈ гляди, "HTML-программисты" потСснят классичСских :) По ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ дСтских курсов ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ построСны ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Π° этой связкС.Π£ нас Π²Ρ‹Π²Π΅Π»Π°ΡΡŒ статистика, Π½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΠΎΠΊΠ° Π½ΠΈΠΊΠ°ΠΊ Π΅Ρ‘ Π½Π΅ считаСт. Π˜ΡΠΏΡ€Π°Π²ΠΈΠΌ это.

Π‘ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅ΠΌ имя ΠΈΠ³Ρ€ΠΎΠΊΠ°

Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π½Π°Ρ‚ΡŒ, ΠΊΠΎΠΌΡƒ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ Ρ€Π΅ΠΊΠΎΡ€Π΄ ΠΈΠ³Ρ€Ρ‹, Π±ΡƒΠ΄Π΅ΠΌ ΡΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ имя ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ запускС ΠΈΠ³Ρ€Ρ‹:

name = prompt(«Π’Π°ΡˆΠ΅ имя», «»);

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ ΠΌΡ‹ напишСм сразу послС объявлСния всСх ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ выполнился Π½Π° стартС ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·. Π‘ΠΌΠ΅Π½ΠΈΡ‚ΡŒ имя Π² процСссС ΠΈΠ³Ρ€Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚ нСльзя, Π½ΠΎ это ΠΈ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ.

Π‘Ρ‡ΠΈΡ‚Π°Π΅ΠΌ ΠΎΡ‡ΠΊΠΈ

Π‘Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π±ΡƒΠ΄Π΅ΠΌ Ρ‚Π°ΠΊ: Π·Π° ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΡΠΎΠ±Ρ€Π°Π½Π½ΡƒΡŽ линию начисляСм 10 ΠΎΡ‡ΠΊΠΎΠ², ΠΏΠΎ количСству ΠΊΡƒΠ±ΠΈΠΊΠΎΠ² Π² Π½Π΅ΠΉ. Π’ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠΌ тСтрисС считаСтся Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ½Π°Ρ‡Π΅, Π½ΠΎ для простоты сдСлаСм Ρ‚Π°ΠΊ.

Для подсчёта ΠΎΡ‡ΠΊΠΎΠ² Π½Π°Ρ…ΠΎΠ΄ΠΈΠΌ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ placeTetromino() ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ, Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ Π»ΠΈ ряд Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ, ΠΈ сразу ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ дСйствиСм Π² этой ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ пишСм:

Π—Π°ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅: Π½Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π³ΠΎΡ€ΠΎΠ΄ΠΈΡ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΏΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡŽ заполняСмости строк β€” ΠΌΡ‹ Π΅Π΅ ΡƒΠΆΠ΅ написали, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π»ΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ ΠΈΠ³Ρ€Ρ‹. НуТно просто Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‡ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΎΠ΄Π½ΠΈΠΌ Π½ΠΎΠ²Ρ‹ΠΌ дСйствиСм β€” начислСниСм ΠΎΡ‡ΠΊΠΎΠ². Если Π±Ρ‹ ΠΌΡ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π·Π²ΡƒΠΊΠΎΠ² ΠΈΠ»ΠΈ спСцэффСктов, ΠΌΡ‹ Π±Ρ‹ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π² эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π½ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Ρ€Π΅ΠΊΠΎΡ€Π΄Π° β€” ΠΏΠΎΠ±ΠΈΠ»ΠΈ ΠΌΡ‹ Π΅Π³ΠΎ ΡƒΠΆΠ΅ ΠΈΠ»ΠΈ Π½Π΅Ρ‚. Для этого Π±ΡƒΠ΄Π΅ΠΌ постоянно ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠ΅ ΠΎΡ‡ΠΊΠΈ с Ρ€Π΅ΠΊΠΎΡ€Π΄ΠΎΠΌ, ΠΈ Ссли Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠ΅ большС β€” установим Π½ΠΎΠ²Ρ‹ΠΉ Ρ€Π΅ΠΊΠΎΡ€Π΄ ΠΈ запишСм имя побСдитСля:

Π—Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅ΠΌ Ρ€Π΅ΠΊΠΎΡ€Π΄Ρ‹

БСйчас Ρƒ ΠΈΠ³Ρ€Ρ‹ Π΅ΡΡ‚ΡŒ сущСствСнный нСдостаток β€” Ссли ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ страницу Π·Π°Π½ΠΎΠ²ΠΎ Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅, ΠΎΠ½Π° Π½Π΅ вспомнит имя Ρ‡Π΅ΠΌΠΏΠΈΠΎΠ½Π°. Когда ΠΌΡ‹ Π΄Π΅Π»Π°Π»ΠΈ свой Ρ‚ΡƒΠ΄Ρƒ-лист Π½Π° JavaScript, Ρ‚ΠΎ использовали для этого локальноС Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° β€” localstorage. ΠŸΡ€ΠΈ Π½ΠΎΠ²ΠΎΠΌ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ страницы ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²Π·ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ Ρ€Π΅ΠΊΠΎΡ€Π΄Π΅ ΠΎΡ‚Ρ‚ΡƒΠ΄Π°.

Π’ΠΎΠ·ΡŒΠΌΡ‘ΠΌ ΠΈΠ· Ρ‚ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ наш ΠΊΠΎΠ΄ для локального Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° ΠΈ ΠΏΠΎΠΏΡ€Π°Π²ΠΈΠΌ Π΅Π³ΠΎ ΠΏΠΎΠ΄ Π½Ρ‹Π½Π΅ΡˆΠ½ΡŽΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ β€” Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ имя ΠΈΠ³Ρ€ΠΎΠΊΠ° ΠΈ Π΅Π³ΠΎ Ρ€Π΅ΠΊΠΎΡ€Π΄. ΠŸΠΎΡΡ‚Π°Π²ΠΈΠΌ этот ΠΊΠΎΠ΄ сразу послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ спросим имя ΠΈΠ³Ρ€ΠΎΠΊΠ° Π½Π° стартС:

Но Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ появится автоматичСски β€” ΠΌΡ‹ сами Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ Ρ‚ΡƒΠ΄Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ€Π΅ΠΊΠΎΡ€Π΄Π° ΠΈ имя Ρ‡Π΅ΠΌΠΏΠΈΠΎΠ½Π°. Π‘Π΄Π΅Π»Π°Π΅ΠΌ это Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ Ρ€Π°Π·Π΄Π΅Π»Π΅, Π³Π΄Π΅ ΠΌΡ‹ начисляСм ΠΎΡ‡ΠΊΠΈ Π·Π° Π»ΠΈΠ½ΠΈΠΈ. ΠŸΠΎΠΏΡ€Π°Π²ΠΈΠΌ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠΎΠ΄ выглядСл Ρ‚Π°ΠΊ:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ Ρ€Π΅ΠΊΠΎΡ€Π΄Π° Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ сразу Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒΡΡ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ информация. Π”Π°ΠΆΠ΅ Ссли ΠΌΡ‹ ΠΎΠ±Π½ΠΎΠ²ΠΈΠΌ страницу, записи останутся:

тСтрис Π½Π° Π΄ΠΆΠ°Π²Π° скрипт. unnamed 2 1. тСтрис Π½Π° Π΄ΠΆΠ°Π²Π° скрипт Ρ„ΠΎΡ‚ΠΎ. тСтрис Π½Π° Π΄ΠΆΠ°Π²Π° скрипт-unnamed 2 1. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° тСтрис Π½Π° Π΄ΠΆΠ°Π²Π° скрипт. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° unnamed 2 1. БоврСмСнная вСрсия Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ HTML5 Π² связкС c CSS ΠΈ Javascript прСвращаСтся Π½Π΅ просто Π² массовый инструмСнт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρ‹ ΠΈΠ·. нуля строк ΠΊΠΎΠ΄Π°, Π½ΠΎ, Ρ‚ΠΎΠ³ΠΎ ΠΈ гляди, "HTML-программисты" потСснят классичСских :) По ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ дСтских курсов ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ построСны ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Π° этой связкС.

ДобавляСм ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈ ΡƒΡ€ΠΎΠ²Π½ΠΈ

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ³Ρ€Π°Ρ‚ΡŒ Π±Ρ‹Π»ΠΎ интСрСснСС, сдСлаСм Ρ‚Π°ΠΊ: с ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ Π½ΠΎΠ²Ρ‹ΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ΠΌ Ρ„ΠΈΠ³ΡƒΡ€Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠ°Π΄Π°Ρ‚ΡŒ всё быстрСС. Для этого Π½Π°Ρ…ΠΎΠ΄ΠΈΠΌ Π² ΠΊΠΎΠ΄Π΅ строчку, которая ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ двиТСния Ρ„ΠΈΠ³ΡƒΡ€ Π²Π½ΠΈΠ· ΠΈ ΠΏΡ€Π°Π²ΠΈΠΌ Π΅Ρ‘ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

// Ρ„ΠΈΠ³ΡƒΡ€Π° сдвигаСтся Π²Π½ΠΈΠ· ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ 36 ΠΊΠ°Π΄Ρ€ΠΎΠ² минус Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ уровня. Π§Π΅ΠΌ большС ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ, Ρ‚Π΅ΠΌ быстрСС ΠΏΠ°Π΄Π°Π΅Ρ‚.

Π›ΠΎΠ³ΠΈΠΊΠ° Ρ‚ΡƒΡ‚ такая: Ρ‡Π΅ΠΌ Π²Ρ‹ΡˆΠ΅ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ, Ρ‚Π΅ΠΌ мСньшС ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» обновлСния ΠΌΠ΅ΠΆΠ΄Ρƒ сдвигами, Ρ‡Ρ‚ΠΎ Π΄Π°Ρ‘Ρ‚ Π½Π°ΠΌ ΠΎΡ‰ΡƒΡ‰Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½Π½ΠΎΠΉ скорости. Π₯отя Π½Π° самом Π΄Π΅Π»Π΅ Ρ„ΠΈΠ³ΡƒΡ€Ρ‹ Π½Π΅ ΠΏΠ°Π΄Π°ΡŽΡ‚ быстрСС, просто ΠΎΠ½ΠΈ мСньшС тупят.

НапримСр, Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ Ρ„ΠΈΠ³ΡƒΡ€Π° сдвигаСтся Π½Π° ΠΎΠ΄Π½Ρƒ ΠΊΠ»Π΅Ρ‚ΠΊΡƒ Π²Π½ΠΈΠ· ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ 35 ΠΊΠ°Π΄Ρ€ΠΎΠ², Π° Π½Π° 10 ΡƒΡ€ΠΎΠ²Π½Π΅ β€” ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ 25 ΠΊΠ°Π΄Ρ€ΠΎΠ², Π½Π° Ρ‚Ρ€Π΅Ρ‚ΡŒ быстрСС.

Π‘Π°ΠΌΠΈ ΡƒΡ€ΠΎΠ²Π½ΠΈ Π±ΡƒΠ΄Π΅ΠΌ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Ρ‚Π°ΠΌ ΠΆΠ΅, Π³Π΄Π΅ ΠΈ ΠΎΡ‡ΠΊΠΈ. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π½Π° Π½ΠΎΠ²Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ, Π½ΡƒΠΆΠ½ΠΎ Π½Π°Π±Ρ€Π°Ρ‚ΡŒ 100 ΠΎΡ‡ΠΊΠΎΠ². Зная это, Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ уровня β€” достаточно Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π°Ρ†Π΅Π»ΠΎ количСство ΠΎΡ‡ΠΊΠΎΠ² Π½Π° 100 ΠΈ ΠΏΡ€ΠΈΠ±Π°Π²ΠΈΡ‚ΡŒ 1. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΈ даст Π½Π°ΠΌ Π½ΡƒΠΆΠ½Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ.

Π—Π°ΠΏΠΈΡˆΠ΅ΠΌ это Ρ‚Π°ΠΌ ΠΆΠ΅, Π³Π΄Π΅ ΠΈ ΠΈΠ΄Ρ‘Ρ‚ подсчёт ΠΎΡ‡ΠΊΠΎΠ²:

level = Math.floor(score/100) + 1;

Π’Π΅ΠΏΠ΅Ρ€ΡŒ всё Π² порядкС. ΠœΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ сСбС ΠΈΠ»ΠΈ ΠΏΠΎΠΈΠ³Ρ€Π°Ρ‚ΡŒ Π½Π° страницС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Tetris Π½Π° javascript (Π² 30+ строк)

1. ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Ρ„ΠΈΠ³ΡƒΡ€ΠΊΠΈ
ВсС Ρ„ΠΈΠ³ΡƒΡ€ΠΊΠΈ хранятся Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ fs=Β«1111:01|01|01|01*011|110:010|011|001*. Β» Π² Π²ΠΈΠ΄Π΅ строки. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ массив Ρ„ΠΈΠ³ΡƒΡ€ β€” Π΄Π΅Π»Π°Π΅ΠΌ split(‘*’), Π΄Π°Π»Π΅Π΅ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ„ΠΈΠ³ΡƒΡ€Π΅ Π΅ΡΡ‚ΡŒ ΠΎΡ‚ 1-Π³ΠΎ (для Β«ΠΏΠ°Π»ΠΊΠΈΒ») Π΄ΠΎ 4-Ρ… (для L, Π“ ΠΈ Β«ΠΏΠΈΡ€Π°ΠΌΠΈΠ΄ΠΊΠΈΒ») состояния (Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΏΠ΅Ρ€Π΅Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ) β€” ΠΎΠ½ΠΈ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Ρ‹ «:» β€” соотвСтствСнно Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΠ΄Π½ΠΎ состояниС β€” split(‘:’). Допустим ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ Β«ΠΏΠΈΡ€Π°ΠΌΠΈΠ΄ΠΊΡƒΒ» β€” Β«010|111Β», здСсь Π΄Π΅Π»Π°Π΅ΠΌ split(‘|’) β€” ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΡƒΠΆΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив для ΠΎΠ΄Π½ΠΎΠ³ΠΎ состояния ΠΎΠ΄Π½ΠΎΠΉ Ρ„ΠΈΠ³ΡƒΡ€Ρ‹. Β«0Β»- пустоС пространство (Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚Ρ€ΠΈΡΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ), Β«1Β» β€” Π½ΡƒΠΆΠ½ΠΎ Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ.

2. Всё ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ Ρ„ΠΈΠ³ΡƒΡ€ дСлаСтся двумя функциями β€” Β«ΡΡ‚Π΅Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΈΠ³ΡƒΡ€ΡƒΒ» ΠΈ Β«ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒΒ».
ΠŸΡ€ΠΈ Π»ΡŽΠ±Ρ‹Ρ… пСрСмСщСниях Π²ΠΏΡ€Π°Π²ΠΎ-Π²Π»Π΅Π²ΠΎ ΠΈΠ»ΠΈ Π²Π½ΠΈΠ·, ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΠΏΠ΅Ρ€Π΅Π²ΠΎΡ€ΠΎΡ‚ Ρ„ΠΈΠ³ΡƒΡ€Ρ‹ β€” сначала стираСм Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΡƒΡŽ Ρ„ΠΈΠ³ΡƒΡ€Ρƒ, ΠΏΠΎΡ‚ΠΎΠΌ пытаСмся ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ„ΠΈΠ³ΡƒΡ€Ρƒ Π½Π° Π½ΠΎΠ²ΠΎΠΌ мСстС β€” Ссли ΠΏΡ€ΠΈ постройкС ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΈΠ· ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΈΠΊΠΎΠ² Π²Ρ‹Π»Π°Π·ΠΈΡ‚ Π·Π° ΠΊΡ€Π°ΠΉ «стакана», ΠΈΠ»ΠΈ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ Π½Π° мСсто, Π³Π΄Π΅ ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹ΠΉ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΈΠΊ ΠΎΡ‚ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… Ρ„ΠΈΠ³ΡƒΡ€ β€” стираСм Β«Π°ΠΊΡ‚ΠΈΠ²Π½ΡƒΡŽ Ρ„ΠΈΠ³ΡƒΡ€ΡƒΒ», ΠΈ стоим Π΅Π΅ Π½Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ мСстС.

3. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΡ Π΄Π΅Π»Π°ΡŽΡ‚ΡΡ с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹. По Ρ‚Π°ΠΉΠΌΠ΅Ρ€Ρƒ просто вызываСтся функция, которая ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ наТатия с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ с ΠΊΠΎΠ΄ΠΎΠΌ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π’ΠΠ˜Π—. ΠŸΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π²Ρ‹Π·ΠΎΠ²Π΅ Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚Π° β€” врСмя Π΄ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ΡΡ.

4. Если Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Ρ„ΠΈΠ³ΡƒΡ€Ρƒ Π²Π½ΠΈΠ· β€” Π·Π½Π°Ρ‡ΠΈΡ‚ ΠΎΠ½Π° ΡƒΠΏΠ΅Ρ€Π»Π°ΡΡŒ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ Ρ„ΠΈΠ³ΡƒΡ€Ρ‹ ΠΈΠ»ΠΈ Π΄Π½ΠΎ. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС провСряСм Π½Π΅Ρ‚ Π»ΠΈ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹Ρ… строк, ΠΈ рисуСм Π½ΠΎΠ²ΡƒΡŽ Ρ„ΠΈΠ³ΡƒΡ€Ρƒ Π²Π²Π΅Ρ€Ρ…Ρƒ стакана. Если Π²Π²Π΅Ρ€Ρ…Ρƒ стакана Π½Π°Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΠΈΠ³ΡƒΡ€Ρƒ Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ β€” ΠΈΠ³Ρ€Π° Π·Π°ΠΊΠΎΠ½Ρ‡Π΅Π½Π°!

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ВСтрис Π½Π° JavaScript

Π‘Ρ‚ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ ΠΈ Ρ†Π²Π΅Ρ‚Π½ΠΎΠΉ.

ΠžΡ‚ΠΌΠ΅Π½ΡΠΉΡ‚Π΅ всС Π΄Π΅Π»Π°, пСрСноситС встрСчи. БСгодня ΠΌΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ тСтрис, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ³Ρ€Π°Ρ‚ΡŒ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ ΠΈ Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ вСсь дСнь.

Π’ Ρ‡Ρ‘ΠΌ идСя

ΠŸΡ€Π°Π²ΠΈΠ»Π° ΠΈΠ³Ρ€Ρ‹ всС Π·Π½Π°ΡŽΡ‚: свСрху Π² Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ стакан ΠΏΠ°Π΄Π°ΡŽΡ‚ Ρ„ΠΈΠ³ΡƒΡ€Ρ‹ Ρ€Π°Π·Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹, составлСнныС ΠΈΠ· ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ². Π’Π½ΠΈΠ·Ρƒ Π±Π»ΠΎΠΊΠΈ ΡΠΎΠ΅Π΄ΠΈΠ½ΡΡŽΡ‚ΡΡ. Если ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ Ρ†Π΅Π»ΡƒΡŽ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΡƒΡŽ линию ΠΈΠ· Π±Π»ΠΎΠΊΠΎΠ², ΠΎΠ½Π° исчСзаСт, всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈ ΡΠ΄Π²ΠΈΠ³Π°ΡŽΡ‚ΡΡ Π½Π° ряд Π½ΠΈΠΆΠ΅.

Наша Π·Π°Π΄Π°Ρ‡Π° β€” ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ дольшС ΠΏΡ€ΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ экран Π½Π΅ заполнился ΠΈ Π±Ρ‹Π»ΠΎ мСсто, ΠΊΡƒΠ΄Π° ΠΏΠ°Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΌ Ρ„ΠΈΠ³ΡƒΡ€Π°ΠΌ.

Если Π²Π΄Ρ€ΡƒΠ³ Π½Π΅ Π·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, Π²ΠΎΡ‚ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ с Ρ‡Π΅ΠΌΠΏΠΈΠΎΠ½Π°Ρ‚Π° ΠΌΠΈΡ€Π° ΠΏΠΎ тСтрису:

Код нС мой

Код, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ Ρ€Π°Π·Π±ΠΈΡ€Π°Π΅ΠΌ Π² этом ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅, написал амСриканский Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π‘Ρ‚ΠΈΠ²Π΅Π½ Π›Π°ΠΌΠ±Π΅Ρ€Ρ‚:

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ объясним, ΠΊΠ°ΠΊ этот ΠΊΠΎΠ΄ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.

НСоТиданная ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ

Π‘Π°ΠΌΠΎΠ΅ Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Ρ‚Π°ΠΊΠΎΠΉ ΠΈΠ³Ρ€Ρ‹ β€” это ΠΊΠ°ΠΊ-Ρ‚ΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ содСрТимоС ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ экрана ΠΈ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ Ρ„ΠΈΠ³ΡƒΡ€.

Если Π±Ρ‹ ΠΌΡ‹ писали эту ΠΈΠ³Ρ€Ρƒ Π½Π° Unreal Engine ΠΈΠ»ΠΈ Unity, ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½Ρ‹ΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ для Π±Π»ΠΎΠΊΠΎΠ² ΠΊΠ°ΠΊΡƒΡŽ-Ρ‚ΠΎ ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ Ρ‚ΠΈΠΏΠ° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π£ Π½Π΅Π³ΠΎ Π±Ρ‹Π»ΠΈ Π±Ρ‹ свойства β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, конфигурация. ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, ΠΌΡ‹ Π±Ρ‹ Π·Π°Ρ…ΠΎΡ‚Π΅Π»ΠΈ ΠΏΠΎΡ‚ΠΎΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π²Π·Ρ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈΠ»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ с Π·Π°ΠΌΠΎΡ€ΠΎΠ·ΠΊΠΎΠΉ, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ с ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½Π½ΠΎΠΉ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ, ΠΎΡ‚Ρ€Π°Π²Π»Π΅Π½Π½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈΠ»ΠΈ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π΅Ρ‰Ρ‘ Π² Ρ‚Π°ΠΊΠΎΠΌ Π΄ΡƒΡ…Π΅.

Но Π΅ΡΡ‚ΡŒ нюанс: смысл ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π½Π΅Π΄Π΅Π»ΠΈΠΌΡ‹ΠΉ. А Π² «ВСтрисС» всС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ запросто дСлятся, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Β«Π·Π°ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ линию». Π£ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π’-ΠΎΠ±Ρ€Π°Π·Π½ΠΎΠΉ Ρ„ΠΈΠ³ΡƒΡ€Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚ запросто ΠΏΡ€ΠΎΠΏΠ°ΡΡ‚ΡŒ хвостик, Π° Ρƒ Z-ΠΎΠ±Ρ€Π°Π·Π½ΠΎΠΉ Ρ„ΠΈΠ³ΡƒΡ€Ρ‹ β€” ниТняя ΠΏΠ΅Ρ€Π΅ΠΊΠ»Π°Π΄ΠΈΠ½Π°.

ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ Ρ„ΠΈΠ³ΡƒΡ€Π° Π² тСтрисС выглядит ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΈΠ½ΠΎΠ³Π΄Π° Π²Π΅Π΄Ρ‘Ρ‚ сСбя ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Π½ΠΎ Π½Π΅ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ свойствами ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π½Π°ΠΌ здСсь Π½Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚.

РСшСниС β€” ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅ Π² Π²ΠΈΠ΄Π΅ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива Π½ΡƒΠ»Π΅ΠΉ ΠΈ Π΅Π΄ΠΈΠ½ΠΈΡ†. Ноль ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΊΠ»Π΅Ρ‚ΠΊΠ° свободна, Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Π° β€” Ρ‡Ρ‚ΠΎ занята ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ Ρ‡Π°ΡΡ‚ΡŒΡŽ Ρ„ΠΈΠ³ΡƒΡ€Ρ‹. Π₯Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив довольно просто, поэтому Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ каТСтся Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΌ.

Π‘Π°ΠΌΠΈ Ρ„ΠΈΠ³ΡƒΡ€Ρ‹ Ρ‚ΠΎΠΆΠ΅ прСдставим Π² Π²ΠΈΠ΄Π΅ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива ΠΈΠ· Π½ΠΎΠ»Π΅ΠΉ ΠΈ Π΅Π΄ΠΈΠ½ΠΈΡ†, Π½ΠΎ особым ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ β€” Π² Π²ΠΈΠ΄Π΅ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π°, Π³Π΄Π΅ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‚ Π·Π° части Ρ„ΠΈΠ³ΡƒΡ€Ρ‹, Π° Π½ΠΎΠ»ΠΈ β€” Π·Π° пустоС мСсто:

тСтрис Π½Π° Π΄ΠΆΠ°Π²Π° скрипт. 1. тСтрис Π½Π° Π΄ΠΆΠ°Π²Π° скрипт Ρ„ΠΎΡ‚ΠΎ. тСтрис Π½Π° Π΄ΠΆΠ°Π²Π° скрипт-1. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° тСтрис Π½Π° Π΄ΠΆΠ°Π²Π° скрипт. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 1. БоврСмСнная вСрсия Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ HTML5 Π² связкС c CSS ΠΈ Javascript прСвращаСтся Π½Π΅ просто Π² массовый инструмСнт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρ‹ ΠΈΠ·. нуля строк ΠΊΠΎΠ΄Π°, Π½ΠΎ, Ρ‚ΠΎΠ³ΠΎ ΠΈ гляди, "HTML-программисты" потСснят классичСских :) По ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ дСтских курсов ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ построСны ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Π° этой связкС.

Если вмСсто ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π° просто Π²Π·ΡΡ‚ΡŒ фактичСскиС Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ Ρ„ΠΈΠ³ΡƒΡ€Ρ‹ ΠΈ Π·Π°Π³Π½Π°Ρ‚ΡŒ ΠΈΡ… Π² массив, Ρ‚ΠΎ ΠΏΡ€ΠΈ Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΎΠ½ΠΈ Π½Π΅ Π²Π»Π΅Π·ΡƒΡ‚ Π² исходный массив. А Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π° ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΡƒΠ³ΠΎΠ΄Π½ΠΎ β€” Ρ€Π°Π·ΠΌΠ΅Ρ€ массива ΠΎΡ‚ этого Π½Π΅ измСнится:

тСтрис Π½Π° Π΄ΠΆΠ°Π²Π° скрипт. 2. тСтрис Π½Π° Π΄ΠΆΠ°Π²Π° скрипт Ρ„ΠΎΡ‚ΠΎ. тСтрис Π½Π° Π΄ΠΆΠ°Π²Π° скрипт-2. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° тСтрис Π½Π° Π΄ΠΆΠ°Π²Π° скрипт. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 2. БоврСмСнная вСрсия Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ HTML5 Π² связкС c CSS ΠΈ Javascript прСвращаСтся Π½Π΅ просто Π² массовый инструмСнт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρ‹ ΠΈΠ·. нуля строк ΠΊΠΎΠ΄Π°, Π½ΠΎ, Ρ‚ΠΎΠ³ΠΎ ΠΈ гляди, "HTML-программисты" потСснят классичСских :) По ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ дСтских курсов ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ построСны ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Π° этой связкС.

ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ Ссли ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π² ΠΎΠ±Ρ‰ΠΈΠΉ массив с ΠΈΠ³Ρ€ΠΎΠ²Ρ‹ΠΌ Ρ†Π²Π΅Ρ‚ΠΎΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° Ρ†Π²Π΅Ρ‚, Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Ρ„ΠΈΠ³ΡƒΡ€Ρƒ своим Ρ†Π²Π΅Ρ‚ΠΎΠΌ. Π’Π°ΠΊ ΠΈ сдСлаСм.

ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° страницы

Π˜Π³Ρ€Π° Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° HTML-страницС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ элСмСнта Canvas β€” это холст, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ Ρ„ΠΈΠ³ΡƒΡ€Ρ‹ Ρ‡Π΅Ρ€Π΅Π· JavaScript.

Π’ΠΎΠ·ΡŒΠΌΡ‘ΠΌ ΠΏΡƒΡΡ‚ΡƒΡŽ страницу ΠΈ сразу нарисуСм Π½Π° Π½Π΅ΠΉ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅. Π‘Ρ€Π°Π·Ρƒ сдСлаСм Ρ‡Ρ‘Ρ€Π½Ρ‹ΠΉ Ρ„ΠΎΠ½, ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅ поставим ΠΏΠΎ Ρ†Π΅Π½Ρ‚Ρ€Ρƒ, Π° Π΅Π³ΠΎ Ρ€Π°ΠΌΠΊΠΈ сдСлаСм Π±Π΅Π»Ρ‹ΠΌΠΈ:

Всё ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅ сдСлаСм скриптом. Π”ΠΎΠ±Π°Π²ΠΈΠΌ тэг сразу послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ нарисовали холст, ΠΈ Π½Π°Ρ‡Π½Ρ‘ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ содСрТимоС скрипта.

Π—Π°Π²ΠΎΠ΄ΠΈΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ константы

Пока Ρ‡Ρ‚ΠΎ всё просто:

Π“Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌ Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠ΅ Ρ„ΠΈΠ³ΡƒΡ€Ρ‹

ΠŸΠ΅Ρ€Π²ΠΎΠ΅, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ понадобится для этого, β€” функция, которая Π²Ρ‹Π΄Π°Ρ‘Ρ‚ случайноС число Π² Π·Π°Π΄Π°Π½Π½ΠΎΠΌ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅. По этому числу ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ Ρ„ΠΈΠ³ΡƒΡ€Ρ‹.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ· Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΡ… Ρ„ΠΈΠ³ΡƒΡ€. Π›ΠΎΠ³ΠΈΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ такая:

ПослСдний этап Π² этом Π±Π»ΠΎΠΊΠ΅ β€” ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ· ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ сдСлали, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ Ρ„ΠΈΠ³ΡƒΡ€Ρƒ, которая Ρƒ нас появится. ΠœΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ это Π·Π° Ρ„ΠΈΠ³ΡƒΡ€Π°; ΠΊΠ°ΠΊ ΠΎΠ½Π° рисуСтся; ΠΎΡ‚ΠΊΡƒΠ΄Π° ΠΎΠ½Π° Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив с Ρ„ΠΈΠ³ΡƒΡ€ΠΎΠΉ, Π° Π΅Ρ‰Ρ‘ ΠΈ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΈ Π΅Ρ‘ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹. НазваниС Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠΌ Ρ†Π²Π΅Ρ‚ΠΎΠΌ Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΠΈΠ³ΡƒΡ€Ρƒ.

Π”Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅, Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΈ установка Ρ„ΠΈΠ³ΡƒΡ€Ρ‹ Π½Π° мСсто

Π’ тСтрисС ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Ρ„ΠΈΠ³ΡƒΡ€Ρƒ Π½Π° 90 градусов ΠΏΠΎ часовой стрСлкС сколько ΡƒΠ³ΠΎΠ΄Π½ΠΎ Ρ€Π°Π·. А Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρƒ нас Ρ„ΠΈΠ³ΡƒΡ€Π° β€” это Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив ΠΈΠ· чисСл, Ρ‚ΠΎ быстро Π½Π°ΠΉΠ΄Ρ‘ΠΌ Π² ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠ΄ для ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚Π° числовой ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹:

ПослС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚Π° ΠΈ ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ смСнС ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π»ΠΈ Π² ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅ Ρ„ΠΈΠ³ΡƒΡ€Π° Ρ‚Π°ΠΊ Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒΡΡ? Если двиТСнию ΠΈΠ»ΠΈ Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΡŽ ΠΌΠ΅ΡˆΠ°ΡŽΡ‚ стСнки поля ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ„ΠΈΠ³ΡƒΡ€Ρ‹, Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π΄Π΅Π»Π°Ρ‚ΡŒ нСльзя. Π”Π°Π»ΡŒΡˆΠ΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π΄Π΅Π»Π°Ρ‚ΡŒ эту ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΎΡ‚Ρ€ΠΈΡΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° экранС.

Если ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π΅ ΠΏΡ€ΠΎΡˆΠ»Π°, Ρ‚ΠΎ ΠΌΡ‹ Π½Π΅ Π΄Π΅Π»Π°Π΅ΠΌ послСднСС Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅, ΠΈ Ρ„ΠΈΠ³ΡƒΡ€Π° просто ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ ΠΏΠ°Π΄Π°Ρ‚ΡŒ Π²Π½ΠΈΠ·. Если Π΅ΠΉ Π½Π΅ΠΊΡƒΠ΄Π° ΠΏΠ°Π΄Π°Ρ‚ΡŒ ΠΈ ΠΎΠ½Π° ΡƒΠΏΡ‘Ρ€Π»Π°ΡΡŒ Π² Π΄Ρ€ΡƒΠ³ΠΈΠ΅, Ρ‚ΠΎ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π·Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ это Π² ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΌ ΠΏΠΎΠ»Π΅. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ записываСм Π² массив, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° ΠΏΠΎΠ»Π΅, Π½Π°ΡˆΡƒ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ Ρ„ΠΈΠ³ΡƒΡ€Ρ‹, пропуская Π½ΠΎΠ»ΠΈ ΠΈ записывая Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹.

Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ„ΠΈΠ³ΡƒΡ€Π° встала, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, получился Ρ†Π΅Π»Ρ‹ΠΉ ряд ΠΈΠ»ΠΈ Π½Π΅Ρ‚. Если получился β€” сдвигаСм Π½Π° ΠΎΠ΄ΠΈΠ½ ряд Π²Π½ΠΈΠ· всё, Ρ‡Ρ‚ΠΎ свСрху. Π’Π°ΠΊΡƒΡŽ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Π΄Π΅Π»Π°Π΅ΠΌ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΏΡ€ΠΈ установкС Ρ„ΠΈΠ³ΡƒΡ€Ρ‹ ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°Π΅ΠΌ с Π½ΠΈΠΆΠ½Π΅Π³ΠΎ ряда, поднимаясь Π½Π°Π²Π΅Ρ€Ρ….

тСтрис Π½Π° Π΄ΠΆΠ°Π²Π° скрипт. unnamed 2 2. тСтрис Π½Π° Π΄ΠΆΠ°Π²Π° скрипт Ρ„ΠΎΡ‚ΠΎ. тСтрис Π½Π° Π΄ΠΆΠ°Π²Π° скрипт-unnamed 2 2. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° тСтрис Π½Π° Π΄ΠΆΠ°Π²Π° скрипт. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° unnamed 2 2. БоврСмСнная вСрсия Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ HTML5 Π² связкС c CSS ΠΈ Javascript прСвращаСтся Π½Π΅ просто Π² массовый инструмСнт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρ‹ ΠΈΠ·. нуля строк ΠΊΠΎΠ΄Π°, Π½ΠΎ, Ρ‚ΠΎΠ³ΠΎ ΠΈ гляди, "HTML-программисты" потСснят классичСских :) По ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ дСтских курсов ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ построСны ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Π° этой связкС.

Π§Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ ΠΏΡ€ΠΎΠΈΠ³Ρ€Π°Π΅ΠΌ

Когда Ρ„ΠΈΠ³ΡƒΡ€Π° ΠΏΡ€ΠΈ ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ установкС Π²Ρ‹Π»Π΅Π·Π°Π΅Ρ‚ Π·Π° Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ поля, это Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΏΡ€ΠΎΠΈΠ³Ρ€Π°Π»ΠΈ. Π—Π° это Ρƒ нас ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Ρ„Π»Π°Π³ gameOver, ΠΈ Π΅Π³ΠΎ Π·Π°Π΄Π°Ρ‡Π° β€” ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΡŽ ΠΈΠ³Ρ€Ρ‹.

Π§Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Π»ΠΎ понятно, Ρ‡Ρ‚ΠΎ ΠΈΠ³Ρ€Π° Π·Π°ΠΊΠΎΠ½Ρ‡Π΅Π½Π°, Π²Ρ‹Π²Π΅Π΄Π΅ΠΌ надпись GAME OVER! прямо ΠΏΠΎΠ²Π΅Ρ€Ρ… ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ поля:

тСтрис Π½Π° Π΄ΠΆΠ°Π²Π° скрипт. unnamed 3 2. тСтрис Π½Π° Π΄ΠΆΠ°Π²Π° скрипт Ρ„ΠΎΡ‚ΠΎ. тСтрис Π½Π° Π΄ΠΆΠ°Π²Π° скрипт-unnamed 3 2. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° тСтрис Π½Π° Π΄ΠΆΠ°Π²Π° скрипт. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° unnamed 3 2. БоврСмСнная вСрсия Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ HTML5 Π² связкС c CSS ΠΈ Javascript прСвращаСтся Π½Π΅ просто Π² массовый инструмСнт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρ‹ ΠΈΠ·. нуля строк ΠΊΠΎΠ΄Π°, Π½ΠΎ, Ρ‚ΠΎΠ³ΠΎ ΠΈ гляди, "HTML-программисты" потСснят классичСских :) По ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ дСтских курсов ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ построСны ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Π° этой связкС.

ΠžΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌ наТатия Π½Π° клавиши

Всё ΠΊΠ°ΠΊ Π² ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΌ тСтрисС: стрСлки Π²Π»Π΅Π²ΠΎ ΠΈ Π²ΠΏΡ€Π°Π²ΠΎ Π΄Π²ΠΈΠ³Π°ΡŽΡ‚ Ρ„ΠΈΠ³ΡƒΡ€Ρƒ, стрСлка Π²Π²Π΅Ρ€Ρ… ΠΏΠΎΠ²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π΅Ρ‚ Π΅Ρ‘ Π½Π° 90 градусов, Π° стрСлка Π²Π½ΠΈΠ· ускоряСт ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅.

ЕдинствСнноС, ΠΎ Ρ‡Ρ‘ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π½Π΅ Π·Π°Π±Ρ‹Ρ‚ΡŒ β€” послС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ наТатия Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ, ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Ρ‚Π°ΠΊ Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒ Ρ„ΠΈΠ³ΡƒΡ€Ρƒ ΠΈΠ»ΠΈ Π½Π΅Ρ‚.

ЗапускаСм двиТСния ΠΈ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΡŽ

Бмысл Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° ΠΈΠ³Ρ€Ρ‹ Ρ‚Π°ΠΊΠΎΠΉ:

Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΊΠ°Π΄Ρ€Ρ‹ ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ быстро, ΠΌΡ‹ Π½Π΅ Π·Π°ΠΌΠ΅Ρ‚ΠΈΠΌ постоянного очищСния ΠΈ отрисовки. Нам Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Ρ„ΠΈΠ³ΡƒΡ€Π° просто двиТСтся Π²Π½ΠΈΠ· ΠΈ Ρ€Π΅Π°Π³ΠΈΡ€ΡƒΠ΅Ρ‚ Π½Π° наши дСйствия.

ПослСднСС, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ ΠΎΡΡ‚Π°Π»ΠΎΡΡŒ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, β€” Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΈΠ³Ρ€Ρƒ:

Π“ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° страницС с ΠΈΠ³Ρ€ΠΎΠΉ.

Π§Ρ‚ΠΎ дальшС

Π£ нас Π΅ΡΡ‚ΡŒ ΠΈΠ³Ρ€Π°, Π½ΠΎ Π½Π΅Ρ‚ Π²Π°ΠΆΠ½Ρ‹Ρ… элСмСнтов:

Π‘Π΄Π΅Π»Π°Π΅ΠΌ это Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ вСрсии ΠΈΠ³Ρ€Ρ‹, Π° ΠΏΠΎΠΊΠ° отмСняйтС ΠΏΠ»Π°Π½Ρ‹, сСгодня ΠΌΡ‹ ΠΈΠ³Ρ€Π°Π΅ΠΌ Π² бСсконСчный тСтрис.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *