ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi

Код Π½Π° тСтрис Π½Π° inoi

ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi

ΠšΡ‚ΠΎ ΠΈΠ· нас Π½Π΅ баловался, Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΊΡ‚ΠΎ-Ρ‚ΠΎ Π΄ΠΎ сих ΠΏΠΎΡ€ ΠΏΠΎΠ»ΡŽΠ±Π»ΡΠ΅Ρ‚ ΠΏΠΎΡ†Π°Ρ†ΠΊΠ°Ρ‚ΡŒΡΡ Π² ВСтрис, Π½ΠΎ Π²ΠΎΡ‚ Π±Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π½Π΅ моТСшь ΠΏΡ€ΠΎΠΉΡ‚ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ, Ρ…ΠΎΡ‚ΡŒ Ρ‚Ρ‹ трСсни ΠΈ Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ? Наш Π½Π°Ρ€ΠΎΠ΄ Π½Π° Π²Ρ‹Π΄ΡƒΠΌΠΊΡƒ Π±ΠΎΠ³Π°Ρ‚ ΠΈ Ρ‚ΡƒΡ‚ нашС Π²Ρ‹Ρ…ΠΎΠ΄..Как ΠΊΠΎ всякой ΠΊΠΎΠΌΠΏ. ΠΈΠ³Ρ€Π΅ ΠΊ тСтрису Π΅ΡΡ‚ΡŒ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ Ρ‡ΠΈΡ‚-ΠΊΠΎΠ΄Ρ‹ для прохоТдСния ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ.

Π’Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²Π»Π΅Π²ΠΎ, Π²Π»Π΅Π²ΠΎ, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²Π»Π΅Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²Π»Π΅Π²ΠΎ, Π²Π»Π΅Π²ΠΎ, Π²Π²Π΅Ρ€Ρ…, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ.

ΠŸΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ Π½Π° Π·Π΄ΠΎΡ€ΠΎΠ²ΡŒΠ΅, ΠΊΠΎΠΌΡƒ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚, Π½Π΅ Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ спасибо:)

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

Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Π‘Π΅ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹ ΠΊ тСтрису

Π“Π΅ΠΉΠΌΠ΅Ρ€Π°ΠΌ Π½Π° Π·Π°ΠΌΠ΅Ρ‚ΠΊΡƒ! Π’Ρ‹ Π΄ΠΎΠ³Π°Π΄Ρ‹Π²Π°Π»ΠΈΡΡŒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π΅ΡΡ‚ΡŒ, Π½ΠΎ Π½Π΅ ΠΏΠΎΠ΄ΠΎΠ·Ρ€Π΅Π²Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ всС Ρ‚Π°ΠΊ слоТно! Π‘ΠΌΠΎΡ‚Ρ€ΠΈΠΌ!

Π’Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²Π»Π΅Π²ΠΎ, Π²Π»Π΅Π²ΠΎ, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²Π»Π΅Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²Π»Π΅Π²ΠΎ, Π²Π»Π΅Π²ΠΎ, Π²Π²Π΅Ρ€Ρ…, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ.

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

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-ΠΎΠ±Ρ€Π°Π·Π½ΠΎΠΉ Ρ„ΠΈΠ³ΡƒΡ€Ρ‹ β€” ниТняя ΠΏΠ΅Ρ€Π΅ΠΊΠ»Π°Π΄ΠΈΠ½Π°.

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

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

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

ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi

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

ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi

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

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

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

ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi

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

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

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

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

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

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

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

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

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

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

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

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

🎮ВСтрис Π½Π° JavaScript: Ρ€Π°Π·Π±ΠΈΡ€Π°Π΅ΠΌ возмоТности языка Ρ‡Π΅Ρ€Π΅Π· Π³Π΅ΠΉΠΌΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ

ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi

ВСтрис Π½Π° JavaScript + ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ соврСмСнных возмоТностСй языка

Π›ΡƒΡ‡ΡˆΠΈΠΉ способ ΡƒΠ·Π½Π°Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²ΠΎΠ΅ ΠΈ Π·Π°ΠΊΡ€Π΅ΠΏΠ»ΡΡ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ знания – ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°. Π›ΡƒΡ‡ΡˆΠ°Ρ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ – созданиС ΠΈΠ³Ρ€. Π›ΡƒΡ‡ΡˆΠ°Ρ ΠΈΠ³Ρ€Π° Π² ΠΌΠΈΡ€Π΅ – ВСтрис. БСгодня ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΡƒΠ·Π½Π°Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²ΠΎΠ΅ Π² процСссС написания тСтриса Π½Π° javaScript.

ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi

Π’ ΠΊΠΎΠ½Ρ†Π΅ руководства Ρƒ нас Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΡƒΡŽΡ‰Π°Ρ ΠΈΠ³Ρ€Π° с уровнями слоТности ΠΈ систСмой ΠΎΡ‡ΠΊΠΎΠ². По Ρ…ΠΎΠ΄Ρƒ Π΄Π΅Π»Π° разбСрСмся с Π²Π°ΠΆΠ½Ρ‹ΠΌΠΈ ΠΈΠ³Ρ€ΠΎΠ²Ρ‹ΠΌΠΈ концСпциями, Π²Ρ€ΠΎΠ΄Π΅ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ ΠΈ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π°, Π° Ρ‚Π°ΠΊΠΆΠ΅ научимся ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΈ Π±Π»ΠΎΠΊΠΎΠ² ΠΈ ΠΈΠ·ΡƒΡ‡ΠΈΠΌ возмоТности соврСмСнного JavaScript (ES6):

Π’Π΅ΡΡŒ ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ Π² github-Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ.

ВСтрис

Π­Ρ‚Π° всСмирно извСстная ΠΈΠ³Ρ€Π° появилась Π² Π΄Π°Π»Π΅ΠΊΠΎΠΌ 1984 Π³ΠΎΠ΄Ρƒ. ΠŸΡ€ΠΈΠ΄ΡƒΠΌΠ°Π» Π΅Π΅ русский программист АлСксСй ΠŸΠ°ΠΆΠΈΡ‚Π½ΠΎΠ². ΠŸΡ€Π°Π²ΠΈΠ»Π° ΠΎΡ‡Π΅Π½ΡŒ просты ΠΈ извСстны ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ. Π‘Π²Π΅Ρ€Ρ…Ρƒ Π²Π½ΠΈΠ· ΠΏΠ°Π΄Π°ΡŽΡ‚ Ρ„ΠΈΠ³ΡƒΡ€ΠΊΠΈ Ρ€Π°Π·Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ. Π˜Π³Ρ€ΠΎΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΡ… Π²Π½ΠΈΠ·Ρƒ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ поля. Если получаСтся Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ†Π΅Π»Ρ‹ΠΉ ряд, ΠΎΠ½ ΠΏΡ€ΠΎΠΏΠ°Π΄Π°Π΅Ρ‚. Π˜Π³Ρ€Π° заканчиваСтся, ΠΊΠΎΠ³Π΄Π° башня ΠΈΠ· Ρ„ΠΈΠ³ΡƒΡ€ΠΎΠΊ достигаСт Π²Π΅Ρ€Ρ…Π° ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ поля.

ВСтрис – Π²Π΅Π»ΠΈΠΊΠΎΠ»Π΅ΠΏΠ½Ρ‹ΠΉ Π²Ρ‹Π±ΠΎΡ€ для ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ знакомства с Π³Π΅ΠΉΠΌ-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ. Он достаточно прост для программирования, Π½ΠΎ Π² Ρ‚ΠΎ ΠΆΠ΅ врСмя содСрТит всС ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΈΠ³Ρ€ΠΎΠ²Ρ‹Π΅ элСмСнты. К Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ Π² Π½Π΅ΠΌ максимально простая Π³Ρ€Π°Ρ„ΠΈΠΊΠ°.

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

Для удобства Ρ€Π°Π·ΠΎΠ±ΡŒΠ΅ΠΌ вСсь ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹:

Π‘Ρ€Π°Π·Ρƒ ΠΆΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠΌ всС Π½ΡƒΠΆΠ½ΠΎΠ΅ Π² index.html:

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ каркаса

Для отрисовки Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ холст – элСмСнт HTML5 canvas. Π”ΠΎΠ±Π°Π²ΠΈΠΌ Π΅Π³ΠΎ Π² html-Ρ„Π°ΠΉΠ» с инфраструктурой Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΉ ΠΈΠ³Ρ€Ρ‹:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π² Π³Π»Π°Π²Π½ΠΎΠΌ скриптС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° main.js Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ элСмСнт холста ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ контСкст 2D для рисования:

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ установлСнныС Ρ€Π°Π½Π΅Π΅ константныС значСния.

ΠœΠ΅Ρ‚ΠΎΠ΄ scale ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ постоянного умноТСния всСх Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π½Π° BLOCK_SIZE ΠΈ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄.

ΠžΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ΠΈΠ΅

Для оформлСния Ρ‚Π°ΠΊΠΎΠΉ Ρ€Π΅Ρ‚Ρ€ΠΎ-ΠΈΠ³Ρ€Ρ‹ идСально ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΏΠΈΠΊΡΠ΅Π»ΡŒΠ½Ρ‹ΠΉ ΡΡ‚ΠΈΠ»ΡŒ, поэтому ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡˆΡ€ΠΈΡ„Ρ‚ Press Start 2P. ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ Π΅Π³ΠΎ Π² сСкции head :

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ основныС стили Π² style.css :

Для Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ систСмы CSS Grid ΠΈ Flexbox.

Π’ΠΎΡ‚, Ρ‡Ρ‚ΠΎ Ρƒ нас ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ:

ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoiΠŸΡƒΡΡ‚ΠΎΠ΅ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅

Π˜Π³Ρ€ΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅

ПолС состоит ΠΈΠ· ΠΊΠ»Π΅Ρ‚ΠΎΡ‡Π΅ΠΊ, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΅ΡΡ‚ΡŒ Π΄Π²Π° состояния: занята ΠΈ свободна. МоТно Π±Ρ‹Π»ΠΎ Π±Ρ‹ просто ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ»Π΅Ρ‚ΠΊΡƒ Π±ΡƒΠ»Π΅Π²Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ, Π½ΠΎ ΠΌΡ‹ собираСмся Ρ€Π°ΡΠΊΡ€Π°ΡΠΈΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Ρ„ΠΈΠ³ΡƒΡ€ΠΊΡƒ Π² свой Ρ†Π²Π΅Ρ‚. Π›ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ числа: пустая ΠΊΠ»Π΅Ρ‚ΠΊΠ° – 0, Π° занятая – ΠΎΡ‚ 1 Π΄ΠΎ 7, Π² зависимости ΠΎΡ‚ Ρ†Π²Π΅Ρ‚Π°.

Π‘Π°ΠΌΠΎ ΠΏΠΎΠ»Π΅ Π±ΡƒΠ΄Π΅Ρ‚ прСдставлСно Π² Π²ΠΈΠ΄Π΅ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива (ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹). ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ряд – массив ΠΊΠ»Π΅Ρ‚ΠΎΠΊ, Π° массив рядов – это, собствСнно, ΠΏΠΎΠ»Π΅.

Для создания пустой ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ поля ΠΈ заполнСния Π΅Π΅ нулями ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ массивов: Array.from() ΠΈ Array.fill().

Π’Π΅ΠΏΠ΅Ρ€ΡŒ создадим экзСмпляр класса Board Π² основном Ρ„Π°ΠΉΠ»Π΅ ΠΈΠ³Ρ€Ρ‹.

Ѐункция play Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Π²Π°Π½Π° ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ Play. Она очистит ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° reset :

Для наглядного прСдставлСния ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ console.table:

ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi

Π’Π΅Ρ‚Ρ€Π°ΠΌΠΈΠ½ΠΎ

КаТдая Ρ„ΠΈΠ³ΡƒΡ€ΠΊΠ° Π² тСтрисС состоит ΠΈΠ· Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… Π±Π»ΠΎΠΊΠΎΠ² ΠΈ называСтся Ρ‚Π΅Ρ‚Ρ€Π°ΠΌΠΈΠ½ΠΎ. ВсСго ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΉ сСмь – Π΄Π°Π΄ΠΈΠΌ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· Π½ΠΈΡ… имя (I, J, L, O, S, T, Z) ΠΈ свой Ρ†Π²Π΅Ρ‚:

ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi

Для удобства вращСния ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ Ρ‚Π΅Ρ‚Ρ€Π°ΠΌΠΈΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ прСдставлСно Π² Π²ΠΈΠ΄Π΅ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½ΠΎΠΉ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ 3Ρ…3. НапримСр, J-Ρ‚Π΅Ρ‚Ρ€Π°ΠΌΠΈΠ½ΠΎ выглядит Ρ‚Π°ΠΊ:

Для прСдставлСния I-Ρ‚Π΅Ρ‚Ρ€Π°ΠΌΠΈΠ½ΠΎ потрСбуСтся ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° 4×4.

Π—Π°Π²Π΅Π΄Π΅ΠΌ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ класс Piece для Ρ„ΠΈΠ³ΡƒΡ€ΠΎΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΈΡ… ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° доскС, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ†Π²Π΅Ρ‚ ΠΈ Ρ„ΠΎΡ€ΠΌΡƒ. Π§Ρ‚ΠΎΠ±Ρ‹ Ρ„ΠΈΠ³ΡƒΡ€ΠΊΠΈ ΠΌΠΎΠ³Π»ΠΈ ΠΎΡ‚Ρ€ΠΈΡΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ сСбя Π½Π° ΠΏΠΎΠ»Π΅, Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΈΠΌ контСкст рисования:

Π˜Ρ‚Π°ΠΊ, нарисуСм ΠΏΠ΅Ρ€Π²ΠΎΠ΅ Ρ‚Π΅Ρ‚Ρ€Π°ΠΌΠΈΠ½ΠΎ Π½Π° ΠΏΠΎΠ»Π΅:

Активная Ρ„ΠΈΠ³ΡƒΡ€ΠΊΠ° сохраняСтся Π² свойствС board.piece для ΡƒΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ доступа.

ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoiΠŸΠ΅Ρ€Π²ΠΎΠ΅ Ρ‚Π΅Ρ‚Ρ€Π°ΠΌΠΈΠ½ΠΎ Π½Π° ΠΏΠΎΠ»Π΅

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹

ΠŸΠ΅Ρ€Π΅Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒ Ρ„ΠΈΠ³ΡƒΡ€ΠΊΠΈ ΠΏΠΎ полю (Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡ€Π°Π²ΠΎ ΠΈ Π²Π½ΠΈΠ·) ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ клавиш-стрСлок.

ΠŸΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½ΠΈΡ

ВычисляСмыС ΠΈΠΌΠ΅Π½Π° свойств

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄Ρ‹ клавиш ΠΈ дСйствия, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ слСдуСт Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈ ΠΈΡ… Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ.

ES6 позволяСт Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ свойства с вычисляСмыми ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, Π² ΠΈΠΌΠ΅Π½ΠΈ свойства ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ Π΄Π°ΠΆΠ΅ выраТСния.

Для установки Ρ‚Π°ΠΊΠΎΠ³ΠΎ свойства Π½ΡƒΠΆΠ½Ρ‹ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ скобки:

Для пСрСмСщСния Ρ‚Π΅Ρ‚Ρ€Π°ΠΌΠΈΠ½ΠΎ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΡΡ‚ΠΈΡ€Π°Ρ‚ΡŒ староС ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² Π½ΠΎΠ²Ρ‹Ρ… ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°Ρ…. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ эти Π½ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹, сначала скопируСм Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠ΅, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ Π½ΡƒΠΆΠ½ΡƒΡŽ ( x ΠΈΠ»ΠΈ y ) Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ.

Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ значСниями, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ spread-ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, Ρ‡Ρ‚ΠΎΠ±Ρ‹ пСрСнСсти ΠΈΡ… Π² Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. Π’ ES6 сущСствуСт Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ копирования: Object.assign().

Π’ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ moves Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ хранятся Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ вычислСния Π½ΠΎΠ²Ρ‹Ρ… ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ клавиши. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊ:

ΠžΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ этом Π½Π΅ ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠ΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ самого Ρ‚Π΅Ρ‚Ρ€Π°ΠΌΠΈΠ½ΠΎ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ клавиши Π½Π΅ всСгда Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌΡƒ измСнСнию полоТСния.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ для события keydown:

ΠœΠ΅Ρ‚ΠΎΠ΄ board.valid() Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅. Π•Π³ΠΎ Π·Π°Π΄Π°Ρ‡Π° – ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ Π΄ΠΎΠΏΡƒΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Ρ… ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ Π½Π° ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΌ ΠΏΠΎΠ»Π΅.

board.js ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoiΠ£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹

ΠžΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ столкновСний

Если Π±Ρ‹ Ρ„ΠΈΠ³ΡƒΡ€ΠΊΠΈ тСтриса ΠΌΠΎΠ³Π»ΠΈ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ сквозь Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Π°, Π° Ρ‚Π°ΠΊΠΆΠ΅ сквозь ΠΏΠΎΠ» ΠΈ стСны ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ поля, ΠΈΠ³Ρ€Π° Π½Π΅ ΠΈΠΌΠ΅Π»Π° Π±Ρ‹ смысла. Π’Π°ΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ столкновСния элСмСнтов ΠΏΠ΅Ρ€Π΅Π΄ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΈΡ… полоТСния.

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ столкновСния ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚Π΅Ρ‚Ρ€Π°ΠΌΠΈΠ½ΠΎ:

Π€ΠΈΠ³ΡƒΡ€ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ, поэтому ΠΏΡ€ΠΈ Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ Ρ‚ΠΎΠΆΠ΅ Π½ΡƒΠΆΠ½ΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ столкновСния.

ΠœΡ‹ ΡƒΠΆΠ΅ ΡƒΠΌΠ΅Π΅ΠΌ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ Ρ„ΠΈΠ³ΡƒΡ€ΠΊΠΈ Π½Π° ΠΏΠΎΠ»Π΅ ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ клавиш-стрСлок. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Π½Π° Π΅Π΅ Π΄ΠΎΠΏΡƒΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ. Для этого ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ всС ΠΊΠ»Π΅Ρ‚ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ‚Π΅Ρ‚Ρ€Π°ΠΌΠΈΠ½ΠΎ Π² Π½ΠΎΠ²ΠΎΠΌ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.

Для Ρ‚Π°ΠΊΠΎΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ массива every(). Для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ Π² ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅ Ρ‚Π΅Ρ‚Ρ€Π°ΠΌΠΈΠ½ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹Π΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Π½Π° ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΌ ΠΏΠΎΠ»Π΅, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, свободно Π»ΠΈ это мСсто ΠΈ Π½Π΅ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π»ΠΈ ΠΎΠ½ΠΎ Π·Π° Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ поля.

ΠŸΡƒΡΡ‚Ρ‹Π΅ ΠΊΠ»Π΅Ρ‚ΠΊΠΈ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ Ρ‚Π΅Ρ‚Ρ€Π°ΠΌΠΈΠ½ΠΎ ΠΏΡ€ΠΈ этом Π½Π΅ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ.

Если ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΏΡ€ΠΎΡˆΠ»Π° ΡƒΠ΄Π°Ρ‡Π½ΠΎ, ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠ³Π°Π΅ΠΌ Ρ„ΠΈΠ³ΡƒΡ€ΠΊΡƒ Π² Π½ΠΎΠ²ΠΎΠ΅ мСсто.

ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoiΠžΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ столкновСний

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ускорСнного падСния (hard drop) Ρ„ΠΈΠ³ΡƒΡ€ΠΎΠΊ ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Π½Π° ΠΏΡ€ΠΎΠ±Π΅Π». Π’Π΅Ρ‚Ρ€Π°ΠΌΠΈΠ½ΠΎ ΠΏΡ€ΠΈ этом Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ°Π΄Π°Ρ‚ΡŒ ΠΏΠΎΠΊΠ° Π½Π΅ столкнСтся с Ρ‡Π΅ΠΌ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ.

Π’Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅

Π€ΠΈΠ³ΡƒΡ€ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΡ… Β«Ρ†Π΅Π½Ρ‚Ρ€Π° масс»:

ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoiΠ’Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ Ρ‚Π΅Ρ‚Ρ€Π°ΠΌΠΈΠ½ΠΎ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ†Π΅Π½Ρ‚Ρ€Π°

Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ, Π½Π°ΠΌ понадобятся Π±Π°Π·ΠΎΠ²Ρ‹Π΅ знания Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ Π°Π»Π³Π΅Π±Ρ€Ρ‹. ΠœΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ‚Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ, Π° Π·Π°Ρ‚Π΅ΠΌ ΡƒΠΌΠ½ΠΎΠΆΠΈΡ‚ΡŒ Π΅Π΅ Π½Π° ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ прСобразования, которая ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ порядок столбцов.

ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoiΠ’Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ Ρ‚Π΅Ρ‚Ρ€Π°ΠΌΠΈΠ½ΠΎ Π² Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠΌ пространствС

На JavaScript это выглядит Ρ‚Π°ΠΊ:

Π­Ρ‚Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для вращСния Ρ„ΠΈΠ³ΡƒΡ€ΠΎΠΊ, Π½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄ Π½Π°Ρ‡Π°Π»ΠΎΠΌ манипуляций с ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅ΠΉ, Π΅Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π΄ΠΎΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΌΡƒΡ‚Π°Ρ†ΠΈΠΉ. ВмСсто spread-ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ лишь Π½Π° ΠΎΠ΄ΠΈΠ½ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π² Π³Π»ΡƒΠ±ΠΈΠ½Ρƒ, ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ‚Ρ€ΡŽΠΊ с сСриализациСй – ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΠΌ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ Π² JSON-строку, Π° Π·Π°Ρ‚Π΅ΠΌ распарсим Π΅Π΅.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Π½Π° ΠΊΠ»Π°Π²ΠΈΡˆΡƒ Π’Π²Π΅Ρ€Ρ…, активная Ρ„ΠΈΠ³ΡƒΡ€ΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ:

constants.js main.js ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoiΠ’Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ Ρ„ΠΈΠ³ΡƒΡ€ΠΊΠΈ ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Π½Π° ΠΊΠ»Π°Π²ΠΈΡˆΡƒ Π’Π²Π΅Ρ€Ρ…

Π‘Π»ΡƒΡ‡Π°ΠΉΠ½Ρ‹ΠΉ Π²Ρ‹Π±ΠΎΡ€ Ρ„ΠΈΠ³ΡƒΡ€ΠΎΠΊ

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· появлялись Ρ€Π°Π·Π½Ρ‹Π΅ Ρ„ΠΈΠ³ΡƒΡ€ΠΊΠΈ, придСтся Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π½Π΄ΠΎΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ, слСдуя стандарту SRS (Super Rotation System).

Π”ΠΎΠ±Π°Π²ΠΈΠΌ Ρ†Π²Π΅Ρ‚Π° ΠΈ Ρ„ΠΎΡ€ΠΌΡ‹ Ρ„ΠΈΠ³ΡƒΡ€ΠΎΠΊ Π² Ρ„Π°ΠΉΠ» constants.js:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½ΡƒΠΆΠ½ΠΎ случайным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ порядковый Π½ΠΎΠΌΠ΅Ρ€ Ρ‚Π΅Ρ‚Ρ€Π°ΠΌΠΈΠ½ΠΎ:

На этом этапС ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ Ρ„ΠΈΠ³ΡƒΡ€ΠΊΠΈ случайным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΏΡ€ΠΈ создании.

Π”ΠΎΠ±Π°Π²ΠΈΠΌ Π² класс Piece ΠΌΠ΅Ρ‚ΠΎΠ΄ spawn :

piece.js ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi

Π˜Π³Ρ€ΠΎΠ²ΠΎΠΉ Ρ†ΠΈΠΊΠ»

ΠŸΠΎΡ‡Ρ‚ΠΈ Π²ΠΎ всСх ΠΈΠ³Ρ€Π°Ρ… Π΅ΡΡ‚ΡŒ ΠΎΠ΄Π½Π° главная функция, которая постоянно Π΄Π΅Π»Π°Π΅Ρ‚ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ, Π΄Π°ΠΆΠ΅ Ссли ΠΈΠ³Ρ€ΠΎΠΊ пассивСн – это ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Ρ†ΠΈΠΊΠ». Нам ΠΎΠ½ Ρ‚ΠΎΠΆΠ΅ понадобится, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ„ΠΈΠ³ΡƒΡ€ΠΊΠΈ постоянно Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π»ΠΈΡΡŒ ΠΈ ΠΏΠ°Π΄Π°Π»ΠΈ свСрху Π²Π½ΠΈΠ· Π½Π° ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΌ ΠΏΠΎΠ»Π΅.

RequestAnimationFrame

Для ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ цикличСских дСйствий ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ requestAnimationFrame. Он сообщаСт Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρƒ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, Π° Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ выполняСт это Π²ΠΎ врСмя ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ пСрСрисовки экрана.

Π’Π°ΠΉΠΌΠ΅Ρ€

Нам Ρ‚Π°ΠΊΠΆΠ΅ потрСбуСтся Ρ‚Π°ΠΉΠΌΠ΅Ρ€, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Ρ„Ρ€Π΅ΠΉΠΌΠ΅ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ «Ρ€ΠΎΠ½ΡΡ‚ΡŒ» Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ Ρ‚Π΅Ρ‚Ρ€Π°ΠΌΠΈΠ½ΠΎ Π²Π½ΠΈΠ·. Π’ΠΎΠ·ΡŒΠΌΠ΅ΠΌ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с MDN ΠΈ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅ΠΌ Π΅Π³ΠΎ.

Для Π½Π°Ρ‡Π°Π»Π° создадим ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ для хранСния Π½ΡƒΠΆΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ:

Π’ Ρ†ΠΈΠΊΠ»Π΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ это состояниС ΠΈ ΠΎΡ‚Ρ€ΠΈΡΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅:

main.js board.js ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi

Π—Π°ΠΌΠΎΡ€ΠΎΠ·ΠΊΠ° состояния

ΠŸΡ€ΠΈ достиТСнии Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ Ρ„ΠΈΠ³ΡƒΡ€ΠΊΠΎΠΉ Π½ΠΈΠ·Π° ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ поля, Π΅Π΅ Π½ΡƒΠΆΠ½ΠΎ Β«Π·Π°ΠΌΠΎΡ€ΠΎΠ·ΠΈΡ‚ΡŒΒ» Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΈ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²ΠΎΠ΅ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ Ρ‚Π΅Ρ‚Ρ€Π°ΠΌΠΈΠ½ΠΎ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€ΠΈ достиТСнии Ρ„ΠΈΠ³ΡƒΡ€ΠΊΠΎΠΉ Π½ΠΈΠ·Π° поля, ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ Π² консоли, Ρ‡Ρ‚ΠΎ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° самого поля измСнилась:

ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi

Π”ΠΎΠ±Π°Π²ΠΈΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ для отрисовки Ρ†Π΅Π»ΠΎΠ³ΠΎ поля (с ΡƒΠΆΠ΅ Β«Π·Π°ΠΌΠΎΡ€ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈΒ» Ρ‚Π΅Ρ‚Ρ€Π°ΠΌΠΈΠ½ΠΎ):

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ поля Ρ‚ΠΎΠΆΠ΅ Π½ΡƒΠΆΠ΅Π½ контСкст рисования, Π½Π΅ Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π΅Π³ΠΎ:

main.js ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoiΠžΡ‚Ρ€ΠΈΡΠΎΠ²ΠΊΠ° ΡƒΠΆΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Π½Ρ‹Ρ… Ρ‚Π΅Ρ‚Ρ€Π°ΠΌΠΈΠ½ΠΎ

ΠžΡ‡ΠΈΡΡ‚ΠΊΠ° Π»ΠΈΠ½ΠΈΠΉ

Главная Π·Π°Π΄Π°Ρ‡Π° ΠΈΠ³Ρ€Ρ‹ – ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ ΠΈΠ· Π±Π»ΠΎΠΊΠΎΠ² Ρ†Π΅Π»Ρ‹Π΅ ряды, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΎΠΏΠ°Π΄Π°Ρ‚ΡŒ с поля, освобоТдая мСсто для Π½ΠΎΠ²Ρ‹Ρ… Ρ„ΠΈΠ³ΡƒΡ€ΠΎΠΊ.

ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi

Π”ΠΎΠ±Π°Π²ΠΈΠΌ Π² класс Board ΠΌΠ΅Ρ‚ΠΎΠ΄ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ, Π½Π΅ собрана Π»ΠΈ цСлая линия, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ, ΠΈ удалСния всСх Ρ‚Π°ΠΊΠΈΡ… Π»ΠΈΠ½ΠΈΠΉ:

Π•Π³ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· послС Β«Π·Π°ΠΌΠΎΡ€ΠΎΠ·ΠΊΠΈΒ» Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ Ρ‚Π΅Ρ‚Ρ€Π°ΠΌΠΈΠ½ΠΎ ΠΏΡ€ΠΈ достиТСнии Π½ΠΈΠ·Π° ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ поля:

board.js ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoiΠ£Π΄Π°Π»Π΅Π½ΠΈΠ΅ собранных рядов

БистСма Π±Π°Π»Π»ΠΎΠ²

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρƒ Π΅Ρ‰Π΅ интСрСснСС, Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π±Π°Π»Π»Ρ‹ Π·Π° сбор Ρ†Π΅Π»Ρ‹Ρ… рядов.

Π§Π΅ΠΌ большС рядов собрано Π·Π° ΠΎΠ΄ΠΈΠ½ Ρ†ΠΈΠΊΠ», Ρ‚Π΅ΠΌ большС Π±ΡƒΠ΄Π΅Ρ‚ начислСно ΠΎΡ‡ΠΊΠΎΠ².

ΠŸΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ счСта Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π½Π° экранС. Для этого ΠΌΡ‹ обратимся ΠΊ возмоТностям мСтапрограммирования Π² JavaScript – Proxy.

ΠŸΡ€ΠΎΠΊΡΠΈ позволяСт ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ свойствам ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для ΠΈΡ… чтСния (get) ΠΈΠ»ΠΈ обновлСния (set) ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ:

Π”ΠΎΠ±Π°Π²ΠΈΠΌ Π»ΠΎΠ³ΠΈΠΊΡƒ начислСния ΠΎΡ‡ΠΊΠΎΠ² Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ события keydown :

ΠΈ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄ очистки собранных рядов:

board.js ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi

Π£Ρ€ΠΎΠ²Π½ΠΈ

Π§Π΅ΠΌ Π»ΡƒΡ‡ΡˆΠ΅ Π²Ρ‹ ΠΈΠ³Ρ€Π°Π΅Ρ‚Π΅ Π² тСтрис, Ρ‚Π΅ΠΌ быстрСС Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠ°Π΄Π°Ρ‚ΡŒ Ρ„ΠΈΠ³ΡƒΡ€ΠΊΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Π°ΠΌ Π½Π΅ стало скучно. ΠŸΡ€ΠΈΠ΄Π΅Ρ‚ΡΡ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΡƒΡ€ΠΎΠ²Π½ΠΈ слоТности Π² Π½Π°ΡˆΡƒ ΠΈΠ³Ρ€Ρƒ, постСпСнно увСличивая частоту Ρ„Ρ€Π΅ΠΉΠΌΠΎΠ² ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π°.

НапишСм ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ resetGame, Π² ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ помСстим всю Π»ΠΎΠ³ΠΈΠΊΡƒ для Π½Π°Ρ‡Π°Π»Π° Π½ΠΎΠ²ΠΎΠΉ ΠΈΠ³Ρ€Ρ‹:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½ΡƒΠΆΠ½ΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π»ΠΎΠ³ΠΈΠΊΡƒ начислСния ΠΎΡ‡ΠΊΠΎΠ² Π·Π° собранныС Π»ΠΈΠ½ΠΈΠΈ. Π‘ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ΠΌ ΠΎΡ‡ΠΊΠΎΠ² Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ большС.

ΠŸΡ€ΠΈ сборкС ΠΊΠ°ΠΆΠ΄Ρ‹Ρ… дСсяти рядов, ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ²Ρ‹ΡˆΠ°Ρ‚ΡŒΡΡ, Π° ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ – ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒΡΡ.

ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi

Π—Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ ΠΈΠ³Ρ€Ρ‹

Π˜Π³Ρ€Π° Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΈΡ€Π°ΠΌΠΈΠ΄Π° Ρ„ΠΈΠ³ΡƒΡ€ΠΎΠΊ достигаСт самого Π²Π΅Ρ€Ρ…Π° ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ поля.

main.js ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoiΠ‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠΈ ΠΈΠ³Ρ€Ρ‹

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ Ρ„ΠΈΠ³ΡƒΡ€Π°

Для удобства ΠΈΠ³Ρ€ΠΎΠΊΠ° ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ подсказку – какая Ρ„ΠΈΠ³ΡƒΡ€ΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ. Для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ холст мСньшСго Ρ€Π°Π·ΠΌΠ΅Ρ€Π°:

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠΌ Π΅Π³ΠΎ контСкст для рисования ΠΈ установим Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹:

ΠžΡΡ‚Π°Π»ΠΎΡΡŒ внСсти измСнСния Π² ΠΌΠ΅Ρ‚ΠΎΠ΄ board.drop :

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΈΠ³Ρ€ΠΎΠΊ Π·Π½Π°Π΅Ρ‚, ΠΊΠ°ΠΊΠΎΠ΅ Ρ‚Π΅Ρ‚Ρ€Π°ΠΌΠΈΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ, ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ ΡΡ‚Ρ€Π°Ρ‚Π΅Π³ΠΈΡŽ ΠΈΠ³Ρ€Ρ‹.

ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoi. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ Π½Π° тСтрис Π½Π° inoiПодсказка ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Ρ„ΠΈΠ³ΡƒΡ€ΠΊΠ΅

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

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

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