ΠΊΠΎΠ΄ Π½Π° ΠΏΠ°ΠΉΡΠΎΠ½ ΡΠ΅ΡΡΠΈΡ
ΠΠ³ΡΠ° Π’Π΅ΡΡΠΈΡ Π½Π° PyQt5
ΠΠ³ΡΠ° Π’Π΅ΡΡΠΈΡ β ΠΎΠ΄Π½Π° ΠΈΠ· ΡΠ°ΠΌΡΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΡΡ ΠΈΠ³Ρ. ΠΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½Π°Ρ ΠΈΠ³ΡΠ° Π±ΡΠ»Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π° ΠΈ Π·Π°ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½Π° ΡΡΡΡΠΊΠΈΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠΌ ΠΠ»Π΅ΠΊΡΠ΅Π΅ΠΌ ΠΠ°ΠΆΠΈΡΠ½ΠΎΠ²ΡΠΌ Π² 1985 Π³ΠΎΠ΄Ρ. Π‘ ΡΠ΅Ρ ΠΏΠΎΡ Π’Π΅ΡΡΠΈΡ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π½Π° ΠΏΠΎΡΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅ Π² ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅ Π²Π°ΡΠΈΠ°ΡΠΈΠΉ.
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΠΎΡΡΠΎΠΉ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠΉ ΠΈΠ³ΡΡ Π½Π° PyQt5 β ΠΎΡΠ»ΠΈΡΠ½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ Π½Π°Π²ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
Π’Π΅ΡΡΠΈΡΠΎΠΌ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΈΠ³ΡΠ°-Π³ΠΎΠ»ΠΎΠ²ΠΎΠ»ΠΎΠΌΠΊΠ° Ρ ΠΏΠ°Π΄Π°ΡΡΠΈΠΌΠΈ Π±Π»ΠΎΠΊΠ°ΠΌΠΈ. Π ΡΡΠΎΠΉ ΠΈΠ³ΡΠ΅, ΠΌΡ ΠΈΠΌΠ΅Π΅ΠΌ 7 ΡΠ°Π·Π½ΡΡ ΡΠΈΠ³ΡΡ, Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΡ ΡΠ°ΠΊ: S-ΡΠΈΠ³ΡΡΠ°, Z-ΡΠΈΠ³ΡΡΠ°, T-ΡΠΈΠ³ΡΡΠ°, L-ΡΠΈΠ³ΡΡΠ°, ΡΠΈΠ³ΡΡΠ°-Π»ΠΈΠ½ΠΈΡ, ΡΠΈΠ³ΡΡΠ° «Π», ΠΈ ΠΊΠ²Π°Π΄ΡΠ°Ρ. ΠΠ°ΠΆΠ΄Π°Ρ ΠΈΠ· ΡΡΠΈΡ ΡΠΈΠ³ΡΡ ΡΠΎΡΠΌΠΈΡΡΠ΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ΅ΡΡΡΡΡ ΠΊΠ²Π°Π΄ΡΠ°ΡΠΈΠΊΠΎΠ². Π€ΠΈΠ³ΡΡΡ ΠΏΠ°Π΄Π°ΡΡ Π²Π½ΠΈΠ· Π½Π° Π΄ΠΎΡΠΊΡ. Π¦Π΅Π»Ρ ΠΈΠ³ΡΡ Π’Π΅ΡΡΠΈΡ β ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°ΡΡ ΠΈ Π²ΡΠ°ΡΠ°ΡΡ ΡΠΈΠ³ΡΡΡ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΈΡ ΠΏΡΠΈΠ·Π΅ΠΌΠ»ΠΈΠ»ΠΎΡΡ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π±ΠΎΠ»ΡΡΠ΅. ΠΡΠ»ΠΈ ΠΌΡ ΡΡΠΌΠ΅Π΅ΠΌ ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠ΄, ΡΡΠ΄ ΡΠ°Π·ΡΡΡΠ°Π΅ΡΡΡ ΠΈ ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΎΡΠΊΠΈ. ΠΡ ΠΈΠ³ΡΠ°Π΅ΠΌ Π² Π’Π΅ΡΡΠΈΡ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° Π½Π΅ Π΄ΠΎΡΡΠΈΠ³Π½Π΅ΠΌ Π²Π΅ΡΡ Π°.
Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ°
Π£ Π½Π°Ρ Π½Π΅Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π΄Π»Ρ Π½Π°ΡΠ΅Π³ΠΎ Π’Π΅ΡΡΠΈΡΠ°, ΠΌΡ ΡΠΈΡΡΠ΅ΠΌ ΡΠ΅ΡΡΠ°ΠΌΠΈΠ½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠ΅ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ PyQt5 ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ. Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠΉ ΠΈΠ³ΡΡ ΠΈΠΌΠ΅Π΅ΡΡΡ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ. Π’Π°ΠΊΠΆΠ΅ ΠΈ Π² Π’Π΅ΡΡΠΈΡΠ΅.
ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ΄Π΅ΠΈ, ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΠΈΠ΅ΡΡ Π² ΠΈΠ³ΡΠ΅:
ΠΠΎΠ΄ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ΅ΡΡΡΠ΅ ΠΊΠ»Π°ΡΡΠ°: Tetris, Board, Tetrominoe ΠΈ Shape. ΠΠ»Π°ΡΡ Tetris ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²ΡΠ²Π°Π΅Ρ ΠΈΠ³ΡΡ. Board β ΡΡΠΎ ΡΠΎ, Π³Π΄Π΅ ΠΏΠΈΡΠ΅ΡΡΡ ΠΈΠ³ΡΠΎΠ²Π°Ρ Π»ΠΎΠ³ΠΈΠΊΠ°. ΠΠ»Π°ΡΡ Tetrominoe ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΈΠΌΠ΅Π½Π° Π²ΡΠ΅Ρ ΡΠ°ΡΡΠ΅ΠΉ ΡΠ΅ΡΡΠΈΡΠ° ΠΈ ΠΊΠ»Π°ΡΡ Shape ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΊΠΎΠ΄ Π΄Π»Ρ ΡΠ°ΡΡΠ΅ΠΉ ΡΠ΅ΡΡΠΈΡΠ°.
ΠΠ³ΡΠ° Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠΏΡΠΎΡΠ΅Π½Π° Π΄Π»Ρ Π±ΠΎΠ»Π΅Π΅ Π»Π΅Π³ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ. ΠΠ³ΡΠ° Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ ΡΡΠ°Π·Ρ ΠΆΠ΅ ΠΏΠΎΡΠ»Π΅ Π΅Ρ Π·Π°ΠΏΡΡΠΊΠ°. ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΈΠ³ΡΡ, Π½Π°ΠΆΠ°Π² ΠΊΠ»Π°Π²ΠΈΡΡ p. ΠΠ»Π°Π²ΠΈΡΠ° Space Π±ΡΠ΄Π΅Ρ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π±ΡΠΎΡΠ°ΡΡ Π±Π»ΠΎΠΊ ΡΠ΅ΡΡΠΈΡΠ° Π²Π½ΠΈΠ·. ΠΠ³ΡΠ° ΠΈΠ΄ΡΡ Π½Π° ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎΠΉ ΡΠΊΠΎΡΠΎΡΡΠΈ, ΡΡΠΊΠΎΡΠ΅Π½ΠΈΠ΅ Π½Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΡΡΡ. ΠΡΠΊΠΈ β ΡΡΠΎ ΡΠΈΡΠ»ΠΎ Π»ΠΈΠ½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ ΡΠ΄Π°Π»ΠΈΠ»ΠΈ.
ΠΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ° Board ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ ΡΠ΅Π½ΡΡΠ°Π»ΡΠ½ΡΠΌ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΡ ΡΠΎΠ·Π΄Π°ΡΠΌ ΡΡΡΠΎΠΊΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ, Π³Π΄Π΅ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ. ΠΡ Π±ΡΠ΄Π΅ΠΌ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡ ΡΡΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ: ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΆΠ΅ ΡΠ΄Π°Π»ΡΠ½Π½ΡΡ Π»ΠΈΠ½ΠΈΠΉ, ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ°ΡΠ·Ρ, ΠΈΠ»ΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Β«ΠΠ³ΡΠ° ΠΎΠΊΠΎΠ½ΡΠ΅Π½Π°Β». msgStatusbar β ΡΡΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΡΠΈΠ³Π½Π°Π», ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΡΡΡ Π² ΠΊΠ»Π°ΡΡΠ΅ Board. showMessage() β ΡΡΠΎ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π² ΡΡΡΠΎΠΊΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ.
ΠΡΠ° ΡΡΡΠΎΠΊΠ° ΠΈΠ½ΠΈΡΠΈΠΈΡΡΠ΅Ρ ΠΈΠ³ΡΡ.
Π‘ΠΎΠ·Π΄Π°ΡΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΡΠΈΠ³Π½Π°Π». msgStatusbar β ΡΡΠΎ ΡΠΈΠ³Π½Π°Π», ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ Ρ ΠΎΡΠΈΠΌ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΡΠΊΠΎΠ² Π² ΡΡΡΠΎΠΊΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ.
ΠΡΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΊΠ»Π°ΡΡΠ° Board. BoardWidth ΠΈ BoardHeight ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΡΠ°Π·ΠΌΠ΅Ρ Π΄ΠΎΡΠΊΠΈ Π² Π±Π»ΠΎΠΊΠ°Ρ . Speed ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠΊΠΎΡΠΎΡΡΡ ΠΈΠ³ΡΡ. ΠΠ°ΠΆΠ΄ΡΠ΅ 300 ΠΌΡ Π±ΡΠ΄Π΅Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ ΡΠΈΠΊΠ» Π½ΠΎΠ²ΠΎΠΉ ΠΈΠ³ΡΡ.
Π ΠΌΠ΅ΡΠΎΠ΄Π΅ initBoard() ΠΌΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²Π°ΠΆΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ . ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ self.board β ΡΡΠΎ ΡΠΏΠΈΡΠΎΠΊ ΡΠΈΡΠ΅Π» ΠΎΡ 0 Π΄ΠΎ 7. ΠΠ½Π° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠΈΠ³ΡΡ ΠΈ ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΈΠ³ΡΡΡ Π½Π° Π΄ΠΎΡΠΊΠ΅.
ΠΠ΅ΡΠΎΠ΄ shapeAt() ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠΈΠΏ ΡΠΈΠ³ΡΡΡ Π² Π΄Π°Π½Π½ΠΎΠΌ Π±Π»ΠΎΠΊΠ΅.
ΠΠΎΡΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΠΌΠ΅Π½ΡΡΡ ΡΠ°Π·ΠΌΠ΅Ρ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΎΠΊΠ½Π°). ΠΠ°ΠΊ ΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠ΅, ΡΠ°Π·ΠΌΠ΅Ρ Π±Π»ΠΎΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΌΠ΅Π½ΡΡΡΡΡ. squareWidth() Π²ΡΡΠΈΡΠ»ΡΠ΅Ρ ΡΠΈΡΠΈΠ½Ρ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ ΠΊΠ²Π°Π΄ΡΠ°ΡΠΈΠΊΠ° Π² ΠΏΠΈΠΊΡΠ΅Π»ΡΡ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π΅Ρ. Board.BoardWidth β ΡΡΠΎ ΡΠ°Π·ΠΌΠ΅Ρ Π΄ΠΎΡΠΊΠΈ Π² Π±Π»ΠΎΠΊΠ°Ρ .
Π ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ³ΡΡ ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΡΡΡ Π½Π° Π΄Π²Π° ΡΠ°Π³Π°. ΠΠ΅ΡΠ²ΡΠΌ ΡΠ°Π³ΠΎΠΌ, ΠΌΡ ΡΠΈΡΡΠ΅ΠΌ Π²ΡΠ΅ ΡΠΈΠ³ΡΡΡ, ΠΈΠ»ΠΈ ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌ ΡΠΈΠ³ΡΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ»ΠΈ ΡΠ±ΡΠΎΡΠ΅Π½Ρ Π²Π½ΠΈΠ· Π΄ΠΎΡΠΊΠΈ. ΠΡΠ΅ ΠΊΠ²Π°Π΄ΡΠ°ΡΠΈΠΊΠΈ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡΡΡΡ Π² ΡΠΏΠΈΡΠΊΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ self.board. ΠΠΎΡΡΡΠΏ ΠΊ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΠΎΠ»ΡΡΠ°ΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΌΠ΅ΡΠΎΠ΄ shapeAt().
Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ°Π³ β ΡΡΠΎ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΏΠ°Π²ΡΠΈΡ Π²Π½ΠΈΠ· ΡΠ°ΡΡΠ΅ΠΉ.
Π ΠΌΠ΅ΡΠΎΠ΄Π΅ keyPressEvent(), ΠΌΡ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ Π½Π°ΠΆΠ°ΡΡΠ΅ ΠΊΠ»Π°Π²ΠΈΡΠΈ. ΠΡΠ»ΠΈ ΠΌΡ Π½Π°ΠΆΠ°Π»ΠΈ ΠΊΠ»Π°Π²ΠΈΡΡ ΠΏΡΠ°Π²ΠΎΠΉ ΡΡΡΠ΅Π»ΠΊΠΈ, ΠΌΡ ΠΏΡΠΎΠ±ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅Π΄Π²ΠΈΠ½ΡΡΡ ΡΠ°ΡΡΡ Π²ΠΏΡΠ°Π²ΠΎ. ΠΡ Π³ΠΎΠ²ΠΎΡΠΈΠΌ «ΠΏΡΠΎΠ±ΡΠ΅ΠΌ», ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ°ΡΡΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π° ΠΏΡΠ°Π²ΠΎΠΌ ΠΊΡΠ°Π΅.
ΠΠ»Π°Π²ΠΈΡΠ° ΡΡΡΠ΅Π»ΠΊΠΈ Π²Π²Π΅ΡΡ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ²ΠΎΡΠ°ΡΠΈΠ²Π°ΡΡ ΠΏΠ°Π΄Π°ΡΡΡΡ ΡΠ°ΡΡΡ Π²Π»Π΅Π²ΠΎ.
ΠΠ»Π°Π²ΠΈΡΠ° Β«ΠΡΠΎΠ±Π΅Π»Β» Π±ΡΠ΄Π΅Ρ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π±ΡΠΎΡΠ°ΡΡ ΠΏΠ°Π΄Π°ΡΡΡΡ ΡΠ°ΡΡΡ.
ΠΠ°ΠΆΠΈΠΌΠ°Ρ ΠΊΠ»Π°Π²ΠΈΡΡ Β«dΒ», ΡΠ°ΡΡΡ ΡΠΏΡΡΡΠΈΡΡΡ Π²Π½ΠΈΠ· Π½Π° ΠΎΠ΄ΠΈΠ½ Π±Π»ΠΎΠΊ. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΎ, ΡΡΠΎΠ±Ρ ΡΠ»Π΅Π³ΠΊΠ° ΡΡΠΊΠΎΡΠΈΡΡ ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ ΡΠ°ΡΡΠΈ.
Π ΠΌΠ΅ΡΠΎΠ΄Π΅ tryMove(), ΠΌΡ ΠΏΡΠΎΠ±ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΡΡ Π½Π°ΡΠΈ ΡΠΈΠ³ΡΡΡ. ΠΡΠ»ΠΈ ΡΠΈΠ³ΡΡΠ° Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π½Π° ΠΊΡΠ°Ρ Π΄ΠΎΡΠΊΠΈ ΠΈΠ»ΠΈ ΠΏΡΠΈΠΌΡΠΊΠ°Π΅Ρ ΠΊ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ ΡΠ°ΡΡΠΈ, ΠΌΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ «ΠΠΎΠΆΡ». Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, ΠΌΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Π΅ΠΌ ΡΠ΅ΠΊΡΡΡΡ ΠΏΠ°Π΄Π°ΡΡΡΡ ΡΠ°ΡΡΡ Π² Π½ΠΎΠ²ΡΡ ΠΏΠΎΠ·ΠΈΡΠΈΡ.
Π timerEvent (ΡΠΎΠ±ΡΡΠΈΠΈ ΡΠ°ΠΉΠΌΠ΅ΡΠ°), ΠΌΡ Π»ΠΈΠ±ΠΎ ΡΠΎΠ·Π΄Π°ΡΠΌ Π½ΠΎΠ²ΡΡ ΡΠΈΠ³ΡΡΡ ΠΏΠΎΡΠ»Π΅ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΏΠ°Π»Π°, Π»ΠΈΠ±ΠΎ ΠΌΡ ΠΏΠ΅ΡΠ΅Π΄Π²ΠΈΠ³Π°Π΅ΠΌ ΠΏΠ°Π΄Π°ΡΡΡΡ ΡΠ°ΡΡΡ Π½Π° ΠΎΠ΄Π½Ρ Π»ΠΈΠ½ΠΈΡ Π²Π½ΠΈΠ·.
ΠΠ΅ΡΠΎΠ΄ clearBoard() ΠΎΡΠΈΡΠ°Π΅Ρ Π΄ΠΎΡΠΊΡ ΠΏΡΡΡΠΌ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Tetrominoe.Noshape Π½Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ Π±Π»ΠΎΠΊ Π΄ΠΎΡΠΊΠΈ.
ΠΠΎΠ³Π΄Π° ΡΠΈΠ³ΡΡΠ° ΠΏΠ°Π΄Π°Π΅Ρ, ΠΌΡ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄ removeFullLines(). ΠΡ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ²Π°Π΅ΠΌ Π²ΡΠ΅ ΠΏΠΎΠ»Π½ΡΠ΅ Π»ΠΈΠ½ΠΈΠΈ ΠΈ ΡΠ΄Π°Π»ΡΠ΅ΠΌ ΠΈΡ . ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΌΡ ΡΠ°Π·Π²Π΅ΡΠ½ΡΠ»ΠΈ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΡΠ΄Π°Π»ΡΠ΅ΠΌΡΡ Π»ΠΈΠ½ΠΈΠΉ. Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, ΡΡΠΎ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ. Π Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅, ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ «Π½ΠΈΠΊΠ°ΠΊΡΡ» Π³ΡΠ°Π²ΠΈΡΠ°ΡΠΈΡ. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΡΠ°ΡΡΠΈ ΠΌΠΎΠ³ΡΡ ΠΏΠ°ΡΠΈΡΡ Π½Π°Π΄ ΠΏΡΡΡΡΠΌΠΈ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΊΠ°ΠΌΠΈ.
ΠΠ΅ΡΠΎΠ΄ newPiece() ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΡΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΡΡ ΡΠ°ΡΡΡ ΡΠ΅ΡΡΠΈΡΠ°. ΠΡΠ»ΠΈ ΡΠ°ΡΡΡ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠΉΡΠΈ Π² ΡΠ²ΠΎΡ Π½Π°ΡΠ°Π»ΡΠ½ΡΡ ΠΏΠΎΠ·ΠΈΡΠΈΡ, ΠΈΠ³ΡΠ° Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°Π΅ΡΡΡ.
ΠΠ»Π°ΡΡ Tetrominoe ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π² ΡΠ΅Π±Π΅ ΠΈΠΌΠ΅Π½Π° Π²ΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ ΡΠΈΠ³ΡΡ. ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π΅ΠΌ NoShape Π΄Π»Ρ ΠΏΡΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°.
ΠΠ»Π°ΡΡ Shape Ρ ΡΠ°Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠ°ΡΡΡΡ ΡΠ΅ΡΡΠΈΡΠ°.
ΠΠ°Π±ΠΎΡ coordsTable ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π² ΡΠ΅Π±Π΅ Π²ΡΠ΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ Π½Π°ΡΠΈΡ ΡΠ°ΡΡΠ΅ΠΉ ΡΠ΅ΡΡΠΈΡΠ°. ΠΡΠΎ ΡΠ°Π±Π»ΠΎΠ½, ΠΈΠ· ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π²ΡΠ΅ ΡΠ°ΡΡΠΈ Π±Π΅ΡΡΡ ΡΠ²ΠΎΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ.
self.coords = [[0,0] for i in range(4)]
ΠΠΎΡΠ»Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ, ΠΌΡ ΡΠΎΠ·Π΄Π°ΡΠΌ ΠΏΡΡΡΠΎΠΉ ΡΠΏΠΈΡΠΎΠΊ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ. Π‘ΠΏΠΈΡΠΎΠΊ Π±ΡΠ΄Π΅Ρ Ρ ΡΠ°Π½ΠΈΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΡΠ°ΡΡΠ΅ΠΉ ΡΠ΅ΡΡΠΈΡΠ°.
ΠΠ΅ΡΠΎΠ΄ rotateLeft() ΠΏΠΎΠ²ΠΎΡΠ°ΡΠΈΠ²Π°Π΅Ρ ΡΠ°ΡΡΡ Π²Π»Π΅Π²ΠΎ. ΠΠ²Π°Π΄ΡΠ°Ρ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ²ΠΎΡΠ°ΡΠΈΠ²Π°ΡΡΡΡ. ΠΠΎΡ ΠΏΠΎΡΠ΅ΠΌΡ ΠΌΡ ΠΏΡΠΎΡΡΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌ ΡΡΡΠ»ΠΊΡ Π½Π° ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ. ΠΠΎΠ²Π°Ρ ΡΠ°ΡΡΡ ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΠΈ Π΅Ρ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ Π² ΠΎΠ΄Π½Ρ ΠΈΠ· ΠΏΠΎΠ²Π΅ΡΠ½ΡΡΡΡ ΡΠ°ΡΡΠ΅ΠΉ.
ΠΡΠΎ Π±ΡΠ»Π° ΠΈΠ³ΡΠ° Π’Π΅ΡΡΠΈΡ Π² PyQt5 (Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ ΡΠ°ΡΡΠΈ ΡΡΡΠΎΡΠΈΠ°Π»Π° ΠΎΡ zetcode).
How to write Tetris in Python
Step by step guide to writing Tetris in Python with PyGame
In this tutorial, we will write a simple Tetris using the PyGame library in Python. The algorithms inside are pretty simple but can be a little challenging for the beginners. We will not concentrate on PyGame mechanics too much, but rather focus on the game logic. If you are too lazy to read all the stuff, you may simply copy and paste the code in the end.
Prerequisites
You may experience issues with installing PyGame or Python itself, but this is out of scope here. Please refer to StackOverflow for that π
The Figure Class
We start with the Figures class. Our goal is to store the figure types together with the rotations. We could, of course, rotate them using matrix rotation, but that can make it too complex.
So, we simply have a list of lists of figures like that:
Where the main list contains figure types, and the inner lists contain their rotations. The numbers in each figure represent the positions in a 4×4 matrix where the figure is solid. For instance, the figure [1,5,9,13] represents a line. To better understand that, please refer to the picture above.
As an exercise try to add some missing figures here, namely the βzβ figures.
The __init__ function would be as follows:
where we randomly pick a type and a color.
And we need to quickly be able to rotate and get the current rotation of a figure, for this we have these two simple methods:
The Tetris Class
We first initialize the Game with some variables:
where the state tells us if we are still playing a game or not. The field is the field of the game that contains zeros where it is empty, and the colors where there are figures (except the one that is still flying down).
We initialize the game with the following simple method:
Creating a new figure and position it at coordinates (3,0) is simple:
The more interesting function is to check if the currently flying figure intersecting with something fixed on the field. This may happen when the figure is moving left, right, down, or rotating.
Having this function, we can now check if we are allowed to move or rotate the Figure. If it moves down and intersects, then this means we have reached the bottom, so we need to βfreezeβ the figure on our field:
After freezing, we have to check if there are some full horizontal lines that should be destroyed. Then we create a new Figure, and if it already intersects, then game over π
Checking the full lines is relatively simple and straightforward, but pay attention to the fact that destroying a line goes from the bottom to the top:
Now, we are missing the moving methods:
As you can see, the go_space method practically duplicates the go_down method, but it goes down until it reaches the bottom or some fixed figure.
And in every method, we remember the last position, change the coordinates, and check if there is an intersection. If there is, we return to the previous state.
PyGame and the Complete Code
We are almost done!
There is some simple logic left, which is the game loop and the PyGame stuff. So, letβs see at the complete code now:
Try to copy and paste it into a py file. Run and enjoy the game! π
And donβt forget to share it with your friends!
ΠΠ³ΡΠ° Π’Π΅ΡΡΠΈΡ
Π₯ΠΎΡΠ΅Π» Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΈΠ³ΡΡ Π’Π΅ΡΡΠΈΡ.
ΠΠΎΠ³Π΄Π° Π·Π°ΠΏΡΡΠΊΠ°Ρ, Π²ΡΠ΄Π°ΡΡ ΠΎΡΠΈΠ±ΠΊΡ:
Traceback (most recent call last):
File «C:/Python27/PyPong/Play», line 5, in
from PyQt5.QtWidgets import QMainWindow, QFrame, QDesktopWidget, QApplication
ImportError: No module named PyQt5.QtWidgets
ΠΠΎΠΌΠΎΡΡ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΡΡ , ΠΊΡΡΡΠΎΠ²ΡΡ ΠΈ Π΄ΠΈΠΏΠ»ΠΎΠΌΠ½ΡΡ ΡΠ°Π±ΠΎΡ Π·Π΄Π΅ΡΡ.
ΠΠ³ΡΠ° ΡΠ΅ΡΡΠΈΡ
ΠΠΎΠΌΠΎΠ³ΠΈΡΠ΅, ΡΠ΅Π±ΡΡΠ°. ΠΠ½Π΅ Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π°ΡΡ ΠΊΡΡΡΠΎΠ²ΡΡ ΠΏΠΎ ΠΈΠ³ΡΠ΅ ΡΠ΅ΡΡΠΈΡ, ΠΌΠΎΠΆΠ΅Ρ Π΅ΡΡΡ Ρ ΠΊΠΎΠ³ΠΎ ΡΠ°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠ΅ΡΡΠΈΡ.
2Π΄ ΠΈΠ³ΡΠ° ΡΠ΅ΡΡΠΈΡ
ΠΠΈΡΡ ΡΠ΅ΡΡΠΈΡ, ΠΏΠΎΠΊΠ° Π΄ΠΎΡΠ΅Π» Π²ΠΎΡ Π΄ΠΎ ΡΠ΅Π³ΠΎ using System; using System.Collections.Generic; using.
ΠΠ³ΡΠ° Π’Π΅ΡΡΠΈΡ
ΠΠ΄ΡΠ°Π²ΡΡΠ²ΡΠΉΡΠ΅. ΠΡΡΡ Π»ΠΈ Ρ ΠΊΠΎΠ³ΠΎ Π³ΠΎΡΠΎΠ²ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ Π½Π° C/C++ Π² ΡΡΠ΅Π΄Π΅ Visual Studio ΠΏΡΠΎ ΡΠ΅ΡΡΠΈΡ? ΠΡΠ΅Π½Ρ.
Π’Π°ΠΊ ΠΎΠ½ ΠΈ Π½Π΅ Π³ΠΎΠ²ΠΎΡΠΈΠ», ΡΡΠΎ ΡΠ°ΠΌ Π½Π°ΠΏΠΈΡΠ°Π» ΡΡΠΎΡ ΠΊΠΎΠ΄
ΠΠ°ΠΏΠΈΡΠ°Π½ΠΎ (Π² ΡΠ΅ΠΌΠ΅) Π±ΡΠ»ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
1. Π₯ΠΎΡΠ΅Π» Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΈΠ³ΡΡ.
2. ΠΠΎΡ ΠΊΠΎΠ΄:
Π€ΡΡ
Π ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, Π²ΠΈΠ΄ΠΈΠΌΠΎ, Π² ΡΠΎΠΌ, ΡΡΠΎ PyQt5 Π½Π΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½.
ΠΠΎΠΌΠΎΡΡ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΡΡ , ΠΊΡΡΡΠΎΠ²ΡΡ ΠΈ Π΄ΠΈΠΏΠ»ΠΎΠΌΠ½ΡΡ ΡΠ°Π±ΠΎΡ Π·Π΄Π΅ΡΡ.
ΠΠ³ΡΠ° Π’Π΅ΡΡΠΈΡ
ΠΠ΄ΡΠ°Π²ΡΡΠ²ΡΠΉΡΠ΅. ΠΡΡΡ Π»ΠΈ Ρ ΠΊΠΎΠ³ΠΎ Π³ΠΎΡΠΎΠ²ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ Π½Π° C/C++ Π² ΡΡΠ΅Π΄Π΅ Visual Studio ΠΏΡΠΎ ΡΠ΅ΡΡΠΈΡ? ΠΡΠ΅Π½Ρ.
ΠΠΎΠ½ΡΠΎΠ»ΡΠ½Π°Ρ ΠΈΠ³ΡΠ° Π’Π΅ΡΡΠΈΡ Π‘++
ΠΠ΄ΡΠ°Π²ΡΡΠ²ΡΠΉΡΠ΅! ΠΠΎΠΌΠΎΠ³ΠΈΡΠ΅ ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ° Π½Π°ΡΠΈΠ½Π°ΡΡΠ΅ΠΌΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ Π½ΡΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½ΡΠΉ ΡΠ΅ΡΡΠΈΡ Π½Π°.
Π ΡΡΡΠΊΠΈΠ΅ ΠΠ»ΠΎΠ³ΠΈ
Π¨Π΅ΡΡΡ, pygame Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠΎΡΡΠΎΠΉ ΠΈΠ³ΡΡ Π² ΡΠ΅ΡΡΠΈΡ (Basic 1)
1. ΠΠ°ΡΠ°Π»ΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ
ΠΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠ΅ ΠΈΠ³ΡΡ Π±ΡΠ»ΠΈ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΡΠΌΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΊΠΎΠ΄ Π±ΡΠ» Π½Π°ΠΏΠΈΡΠ°Π½ ΠΏΡΠΎΡΠ΅ΡΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ. ΠΠ° ΡΡΠΎΡ ΡΠ°Π· ΠΈΠ³ΡΠ° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΠΎΠΉ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π±ΠΈΡΠ²Π° ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ-ΠΌΠ°ΡΠΈΠ½Π°, ΠΎΠ½Π»Π°ΠΉΠ½-Π±ΠΈΡΠ²Π°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅ΠΊΠ²ΠΈΠ·ΠΈΡΠ° ΠΈ Ρ. Π.). ΠΠ° ΡΡΠΎΡ ΡΠ°Π· Ρ ΠΏΠΈΡΡ ΡΡΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ.
ΠΠΊΠ½ΠΎ ΠΈΠ³ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½ΠΎ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° Panel Π΄Π»Ρ ΠΎΠ±Π»Π΅Π³ΡΠ΅Π½ΠΈΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈΠ³ΡΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°.
Π Π°Π·ΠΌΠ΅Ρ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° ΠΈΠ³ΡΡ ΡΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ 30 ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ Π½Π° ΠΊΠ²Π°Π΄ΡΠ°Ρ, ΠΏΠΎΡΡΠΎΠΌΡ ΡΠΈΡΠΈΠ½Π° ΡΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ 3010 = 300, Π²ΡΡΠΎΡΠ° 3020=600
ΠΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΡΡΠ΅ΠΊΡΠ°
2. Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΡΠ±ΠΎΠΌ
ΠΡΠ΅ΠΆΠ΄Π΅ Π²ΡΠ΅Π³ΠΎ, Ρ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠΈΠΏΡ Π±Π»ΠΎΠΊΠΎΠ² ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°Π±ΡΠΈΡΠ½ΡΠΉ ΡΠ΅ΠΆΠΈΠΌ, ΠΏΠΎΡΡΠΎΠΌΡ ΡΠ½Π°ΡΠ°Π»Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅ Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΊΠ»Π°ΡΡ Block, Π° Π·Π°ΡΠ΅ΠΌ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠΈΠΏΡ Π±Π»ΠΎΠΊΠΎΠ² Π½Π°ΡΠ»Π΅Π΄ΡΡΡ ΠΎΡ ΡΡΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° Block.Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠ΅ΠΌΡ ΡΠΈΠΏΠΎΠ² Π±Π»ΠΎΠΊΠΎΠ².
Π-ΡΡΠ΅ΡΡΠΈΡ , ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π±Π»ΠΎΠΊΠΈ ΠΈ ΡΠ±ΡΠΎΡΡΡΠ΅ Π±Π»ΠΎΠΊ
ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π±Π»ΠΎΠΊΠ°
ΠΠΎΠ±Π°Π²ΡΡΠ΅ Π°ΡΡΠΈΠ±ΡΡΡ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ Π΄Π²ΠΈΠΆΡΡΠ΅Π³ΠΎΡΡ Π±Π»ΠΎΠΊΠ° Π² ΠΊΠ»Π°ΡΡ Panel ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΠ΅ Π΅Π³ΠΎ ΠΌΠ΅ΡΠΎΠ΄ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΡΠΎΠ±Ρ Π½Π°ΡΠΈΡΠΎΠ²Π°ΡΡ Π΄Π²ΠΈΠΆΡΡΠΈΠΉΡΡ Π±Π»ΠΎΠΊ.
Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π±Π»ΠΎΠΊ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΡΠΈΠΊΠ»Π΅ ΠΈ ΠΎΡΡΠ΅Π³ΡΠ»ΠΈΡΡΠΉΡΠ΅ Π±Π»ΠΎΠΊ Π² Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΏΠ»ΠΈ.
Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π²ΡΠ΅ΠΌΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
ΠΠ±Π½ΠΎΠ²ΠΈΡΡ ΠΏΠΎΠ·ΠΈΡΠΈΡ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ Π΄Π²ΠΈΠΆΡΡΠ΅Π³ΠΎΡΡ Π±Π»ΠΎΠΊΠ° Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΡΠΈΠΊΠ»Π΅
Π’Π΅ΠΏΠ΅ΡΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΡΡΡΠ΅ΠΊΡ ΠΏΠ°Π΄Π΅Π½ΠΈΡ ΠΊΡΠ±Π°
Π-ΡΠ΅ΡΠ²Π΅ΡΡΡΡ , ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΎ ΠΏΡΠΈΠ·Π΅ΠΌΠ»Π΅Π½ΠΈΠΈ Π±Π»ΠΎΠΊΠ°
ΠΠΎΠ±Π°Π²ΡΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ ΠΎΡΠ΅Π½ΠΊΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π² ΠΊΠ»Π°ΡΡ Block, ΡΠ»Π΅Π΄ΡΡΡΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ can_move ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΡΠΏΠ°Π» Π»ΠΈ Π±Π»ΠΎΠΊ Π½Π° Π΄Π½ΠΎ
ΠΠ·ΠΌΠ΅Π½ΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Panel Π½Π°
ΠΠ΄Π΅ΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ββΡΡΠ½ΠΊΡΠΈΡ add_block Π΄Π»Ρ ΡΠΎΡ
ΡΠ°Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠ·Π΅ΠΌΠ»ΠΈΠ²ΡΠΈΡ
ΡΡ Π±Π»ΠΎΠΊΠΎΠ², ΠΏΠΎΡΡΠΎΠΌΡ Panel Π²Π½Π΅ΡΠ»Π° ΡΡΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ
ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ.
1. ΠΠΎΠ±Π°Π²ΡΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΌΠ°ΡΡΠΈΠ²Π° Π΄Π»Ρ Ρ
ΡΠ°Π½Π΅Π½ΠΈΡ ΠΎΡΠ±ΡΠΎΡΠ΅Π½Π½ΡΡ
Π±Π»ΠΎΠΊΠΎΠ².
2. ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ add_block.
3. ΠΠ°ΡΠΈΡΡΠΉΡΠ΅ self.rect_arr ΠΊΡΠ°ΡΠΊΠΎΠΉ.
Π’Π΅ΠΏΠ΅ΡΡ Π²Ρ Π²ΠΈΠ΄ΠΈΡΠ΅, ΡΡΠΎ Π±Π»ΠΎΠΊ ΡΠΏΠ°Π΄Π΅Ρ Π½Π° Π΄Π½ΠΎ, Π° Π·Π°ΡΠ΅ΠΌ ΡΠΏΠ°Π΄Π΅Ρ Π½ΠΎΠ²ΡΠΉ Π±Π»ΠΎΠΊ.
ΠΡΡΠ°Π²ΠΈΡΡ ΡΠ΅ΠΊΡΡΡΡ ΠΏΠΎΠ»Π½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
ΠΠ°ΠΏΠΈΡΠΈΡΠ΅ ΡΠ½Π°ΡΠ°Π»Π° ΡΡΡ Π³Π»Π°Π²Ρ, ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡΠ΅ ΠΊ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ Π³Π»Π°Π²Π΅
ΠΠ½ΡΠ΅Π»Π»Π΅ΠΊΡΡΠ°Π»ΡΠ½Π°Ρ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΡ
ΠΡΠΎΡΡΠΎΠΉ Π°Π½Π°Π»ΠΈΠ· ΡΠ°Π±Π»ΠΈΡΡ ΡΠΎΠ½ΠΎΠ²ΡΡ Π΄Π°Π½Π½ΡΡ php-wordpress
Π²Π΅Π±-ΡΠ°ΠΉΡ python ΠΈΠ»ΠΈ php? ΠΡΠ»ΠΈ ΡΠ΅ΡΡΠ½ΠΎ, php ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ, ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π·Π½Π°ΡΡ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΡ, Π΅ΡΠ»ΠΈ Π²Ρ Π΅Π΅ ΠΏΠΈΡΠ΅ΡΠ΅. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π²Π΅Π±-ΡΠ°ΠΉΡΠ° Π½Π° Python Π½ΡΠΆΠ½ΠΎ Π½Π°ΡΠΈΠ½Π°ΡΡ Ρ Π½ΡΠ»Ρ. ΠΠΊΠ»ΡΡΠ°Ρ ΡΠ°Π±Π»ΠΎΠ½Ρ, cms ΠΈ wordpress ΠΏΠΎΠ΄ php. Wordp.
ΠΠΈΡΠ΅ΠΌ ΠΈΠ³ΡΡ Π½Π° Python
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΌΡ Π½Π°ΡΠ½ΡΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠΎ-ΡΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ΅ Π½Π° Python, Π΄Π°Π²Π°ΠΉΡΠ΅ Π·Π°ΠΊΠΎΠ΄ΠΈΠΌ ΡΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ²ΠΎΡ ΠΈΠ³ΡΡ, Π³Π΄Π΅ Π½ΡΠΆΠ½ΠΎ Π½Π΅ Π΄Π°ΡΡ ΡΠ°ΡΠΈΠΊΡ ΡΠΏΠ°ΡΡΡ, ΡΠΈΠΏΠ° ΠΡΠΊΠ°Π½ΠΎΠΈΠ΄Π°. ΠΡ, ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ, ΠΈΠ³ΡΠ°Π»ΠΈ Π² Π΄Π΅ΡΡΡΠ²Π΅ Π²ΠΎ ΡΡΠΎ-ΡΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅, ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΡΠ²ΠΎΠΈΡΡΡΡ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΡΡΠΎ.
ΠΠΎΠ³ΠΈΠΊΠ° ΠΈΠ³ΡΡ
ΠΡΡΡ ΠΈΠ³ΡΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅ β ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ Ρ ΡΠ²ΡΡΠ΄ΡΠΌΠΈ Π³ΡΠ°Π½ΠΈΡΠ°ΠΌΠΈ. ΠΠΎΠ³Π΄Π° ΡΠ°ΡΠΈΠΊ ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΡΡΠ΅Π½ΠΊΠΈ ΠΈΠ»ΠΈ ΠΏΠΎΡΠΎΠ»ΠΊΠ°, ΠΎΠ½ ΠΎΡΡΠΊΠ°ΠΊΠΈΠ²Π°Π΅Ρ Π² Π΄ΡΡΠ³ΡΡ ΡΡΠΎΡΠΎΠ½Ρ. ΠΡΠ»ΠΈ ΠΎΠ½ ΡΠΏΠ°Π΄ΡΡ Π½Π° ΠΏΠΎΠ» β Π²Ρ ΠΏΡΠΎΠΈΠ³ΡΠ°Π»ΠΈ. Π§ΡΠΎΠ±Ρ ΡΡΠΎΠ³ΠΎ Π½Π΅ ΡΠ»ΡΡΠΈΠ»ΠΎΡΡ, Π²Π½ΠΈΠ·Ρ Π²Π΄ΠΎΠ»Ρ ΠΏΠΎΠ»Π° Π»Π΅ΡΠ°Π΅Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°, Π° Π²Ρ Π΅ΠΉ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΡΠ΅Π»ΠΎΠΊ. ΠΠ°ΡΠ° Π·Π°Π΄Π°ΡΠ° β ΠΏΠΎΠ΄ΡΡΠ°Π²Π»ΡΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ ΠΏΠΎΠ΄ ΡΠ°ΡΠΈΠΊ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ»ΡΡΠ΅. ΠΠ° ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΡΠ΄Π°ΡΠ½ΠΎΠ΅ ΡΠΏΠ°ΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΡΠΈΠΊΠ° Π²Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ ΠΎΠ΄Π½ΠΎ ΠΎΡΠΊΠΎ.
ΠΠ»Π³ΠΎΡΠΈΡΠΌ
Π§ΡΠΎΠ±Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΠΊΡΡ Π»ΠΎΠ³ΠΈΠΊΡ ΠΈΠ³ΡΡ, Π½ΡΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅ΡΡ ΡΠ°ΠΊΠΈΠ΅ ΡΡΠ΅Π½Π°ΡΠΈΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ:
Π₯ΠΈΡΡΠΎΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π²ΡΡ ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ ΠΈ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ Π΄ΡΡΠ³ ΠΎΡ Π΄ΡΡΠ³Π°. Π’ΠΎ Π΅ΡΡΡ ΠΏΠΎΠΊΠ° ΡΠ°ΡΠΈΠΊ Π»Π΅ΡΠ°Π΅Ρ, ΠΌΡ Π²ΠΏΠΎΠ»Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π²ΠΈΠ³Π°ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ, Π° ΠΌΠΎΠΆΠ΅ΠΌ ΠΈ ΠΎΡΡΠ°Π²ΠΈΡΡ Π΅Ρ Π½Π° ΠΌΠ΅ΡΡΠ΅. Π ΠΊΠΎΠ³Π΄Π° ΡΠ°ΡΠΈΠΊ ΠΎΡΡΠΊΠ°ΠΊΠΈΠ²Π°Π΅Ρ ΠΎΡ ΡΡΠ΅Π½, ΡΡΠΎ ΡΠΎΠΆΠ΅ Π½Π΅ ΠΌΠ΅ΡΠ°Π΅Ρ Π΄ΡΡΠ³ΠΈΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ Π΄Π²ΠΈΠ³Π°ΡΡΡΡ ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠ±ΠΎΠΉ.
ΠΠΎΠ»ΡΡΠ°Π΅ΡΡΡ, ΡΡΠΎ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΡΠΈ ΠΊΠ»Π°ΡΡΠ° β ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ, ΡΠ°ΠΌ ΡΠ°ΡΠΈΠΊ ΠΈ ΡΡΡΡ, ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΡΠ΅Π°Π³ΠΈΡΡΡΡ Π½Π° Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π΄ΡΡΠ³ Π΄ΡΡΠ³Π°. ΠΠΎΠ»Π΅ Π½Π°ΠΌ ΡΠ°ΠΌΠΈΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ Π½Π΅ Π½ΡΠΆΠ½ΠΎ β Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π΅ΡΡΡ ΡΠΆΠ΅ Π³ΠΎΡΠΎΠ²Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°. Π ΠΏΠΎΡΠΎΠΌ Π² ΡΡΠΈΡ ΠΊΠ»Π°ΡΡΠ°Ρ ΠΌΡ ΠΏΡΠΎΠΏΠΈΡΠ΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄Ρ β ΠΎΠ½ΠΈ ΠΊΠ°ΠΊ ΡΠ°Π· ΠΈ Π±ΡΠ΄ΡΡ ΠΎΡΠ²Π΅ΡΠ°ΡΡ Π·Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½Π°ΡΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ².
ΠΠΎ ΠΊΠΎΠ½ΡΠΌ, ΠΏΠΈΡΠ΅ΠΌ Π½Π° Python
ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π²Π°ΠΌ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΡΠ΅Π΄Ρ Python. ΠΠ°ΠΊ ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ β ΡΠΈΡΠ°ΠΉΡΠ΅ Π² Π½Π°ΡΠ΅ΠΉ ΡΡΠ°ΡΡΠ΅.
ΠΠ°ΡΠ°Π»ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
Π§ΡΠΎΠ±Ρ Ρ Π½Π°Ρ ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ Π³ΡΠ°ΡΠΈΠΊΠ° Π² ΠΈΠ³ΡΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Tkinter. ΠΠ½Π° Π²Ρ ΠΎΠ΄ΠΈΡ Π² Π½Π°Π±ΠΎΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Python ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΡΡΠ΅ΠΉΡΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ β Π»ΠΈΠ½ΠΈΠΈ, ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΈ, ΠΊΡΡΠ³ΠΈ ΠΈ ΠΊΡΠ°ΡΠΈΡΡ ΠΈΡ Π² ΡΠ°Π·Π½ΡΠ΅ ΡΠ²Π΅ΡΠ°. Π’Π°ΠΊΠΎΠΉ ΠΏΡΠΎΡΡΠΎΠΉ Paint, ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ Python.
Π§ΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΠΊΠ½ΠΎ, Π³Π΄Π΅ Π±ΡΠ΄Π΅Ρ Π²ΠΈΠ΄Π½Π° Π³ΡΠ°ΡΠΈΠΊΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΊΠ»Π°ΡΡ Tk(). ΠΠ½ ΠΏΡΠΎΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ ΠΎΠΊΠ½ΠΎ, Π½ΠΎ Π±Π΅Π· ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ. Π§ΡΠΎΠ±Ρ ΠΏΠΎΡΠ²ΠΈΠ»ΠΎΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅, ΡΠΎΠ·Π΄Π°ΡΡ Ρ ΠΎΠ»ΡΡ β Π²ΠΈΠ΄ΠΈΠΌΡΡ ΡΠ°ΡΡΡ ΠΎΠΊΠ½Π°. ΠΠΌΠ΅Π½Π½ΠΎ Π½Π° Π½ΡΠΌ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΡΠΈΡΠΎΠ²Π°ΡΡ Π½Π°ΡΡ ΠΈΠ³ΡΡ. ΠΠ° Ρ ΠΎΠ»ΡΡ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ ΠΊΠ»Π°ΡΡ Canvas(), ΠΏΠΎΡΡΠΎΠΌΡ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ²ΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈΠ· ΡΡΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΠΈ Π΄Π°Π»ΡΡΠ΅ ΡΠΆΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΡΡΠΈΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ.
ΠΡΠ»ΠΈ ΠΌΡ ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠΌ ΡΠΊΠΎΡΠΎΡΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ, ΡΠΎ ΠΎΠ½Π° Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°ΡΡΡΡ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ, Π²Π΅Π΄Ρ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ ΡΡΠΈΡΠ°Π΅Ρ ΠΎΡΠ΅Π½Ρ Π±ΡΡΡΡΠΎ ΠΈ ΠΌΠΎΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π²ΠΈΠ½Π΅Ρ Π΅Ρ ΠΊ Π΄ΡΡΠ³ΠΎΠΌΡ ΠΊΡΠ°Ρ. ΠΠΎΡΡΠΎΠΌΡ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΊΡΡΡΡΠ²Π΅Π½Π½ΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°ΡΡ Π²ΡΠ΅ΠΌΡ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ, Π° Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π½Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ Time β ΠΎΠ½ ΡΠΎΠΆΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ.
ΠΠΎΡΠ»Π΅Π΄Π½Π΅Π΅, ΡΡΠΎ Π½Π°ΠΌ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎ Π½ΡΠΆΠ½ΠΎ, β Π·Π°Π΄Π°Π²Π°ΡΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°ΡΠΈΠΊΠ° ΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ, ΡΡΠΎΠ±Ρ Π±ΡΠ»ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Π΅Π΅ ΠΈΠ³ΡΠ°ΡΡ. ΠΠ° ΡΡΠΎ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ ΠΌΠΎΠ΄ΡΠ»Ρ Random β ΠΎΠ½ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠ΅ ΡΠΈΡΠ»Π° ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠΈΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅.
ΠΠ°ΠΏΠΈΡΠ΅ΠΌ Π²ΡΡ ΡΡΠΎ Π² Π²ΠΈΠ΄Π΅ ΠΊΠΎΠ΄Π° Π½Π° Python:
ΠΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΠ»ΠΈ Π²ΡΠ΅ Π½ΡΠΆΠ½ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΡΠ΄Π΅Π»Π°Π»ΠΈ ΠΈ Π½Π°ΡΡΡΠΎΠΈΠ»ΠΈ ΠΈΠ³ΡΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅. Π’Π΅ΠΏΠ΅ΡΡ Π·Π°ΠΉΠΌΡΠΌΡΡ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ.
Π¨Π°ΡΠΈΠΊ
Π‘Π½Π°ΡΠ°Π»Π° ΠΏΡΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, ΡΡΠΎ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΎΡ ΡΠ°ΡΠΈΠΊΠ°. ΠΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΌΠ΅ΡΡ:
ΠΠ»Π°ΡΡΠΎΡΠΌΠ°
Π‘Π΄Π΅Π»Π°Π΅ΠΌ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ Π΄Π»Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ β ΡΠ½Π°ΡΠ°Π»Π° ΠΎΠΏΠΈΡΠ΅ΠΌ Π΅Ρ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, Π° ΠΏΠΎΡΠΎΠΌ ΠΏΠ΅ΡΠ΅Π²Π΅Π΄ΡΠΌ Π² ΠΊΠΎΠ΄. ΠΡΠ°ΠΊ, Π²ΠΎΡ ΡΡΠΎ Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΌΠ΅ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°:
Π Π²ΠΎΡ ΠΊΠ°ΠΊ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ Π² Π²ΠΈΠ΄Π΅ ΠΊΠΎΠ΄Π°:
ΠΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π½Π΅ Π²ΡΠ΄Π΅Π»ΡΡΡ ΡΡΡΡ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΊΠ»Π°ΡΡ ΠΈ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π²ΡΡΡΠ½ΡΡ. ΠΠΎ Π·Π΄Π΅ΡΡ ΡΠ΅Π°Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ ΠΊΠ»Π°ΡΡ, Π·Π°Π΄Π°ΡΡ Π½ΡΠΆΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΡΡΠΎΠ±Ρ ΠΎΠ½ΠΈ ΡΠ°ΠΌΠΈ ΠΏΠΎΡΠΎΠΌ ΡΠ°Π·ΠΎΠ±ΡΠ°Π»ΠΈΡΡ, ΡΡΠΎ ΠΈ ΠΊΠΎΠ³Π΄Π° Π΄Π΅Π»Π°ΡΡ.
ΠΡ ΡΡΡΡΠ° Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½ΠΎ (ΠΊΡΠΎΠΌΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°) β ΡΡΠΎΠ±Ρ ΠΎΠ½ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°Π» Π½Π° ΠΊΠ°ΡΠ°Π½ΠΈΠ΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ, ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π» ΡΠΈΡΠ»ΠΎ ΠΎΡΠΊΠΎΠ² ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΠ» ΠΈΡ Π½Π° ΡΠΊΡΠ°Π½:
Π£ Π½Π°Ρ Π²ΡΡ Π³ΠΎΡΠΎΠ²ΠΎ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΠ°ΠΌΡ ΠΈΠ³ΡΡ. ΠΡ ΡΠΆΠ΅ ΠΏΡΠΎΠ²Π΅Π»ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΡ Π²ΡΠ΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², ΠΈ Π½Π°ΠΌ ΠΎΡΡΠ°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΠ°ΡΠΈΠΊΠ°, ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ ΠΈ ΡΡΡΡΠ° ΠΈ ΡΠΊΠ°Π·Π°ΡΡ ΠΈΠΌ, Π² ΠΊΠ°ΠΊΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ.
Π‘ΠΌΡΡΠ» ΠΈΠ³ΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ Π½Π΅ ΡΡΠΎΠ½ΠΈΡΡ ΡΠ°ΡΠΈΠΊ. ΠΠΎΠΊΠ° ΡΡΠΎΠ³ΠΎ Π½Π΅ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΎ β Π²ΡΡ Π΄Π²ΠΈΠΆΠ΅ΡΡΡ, Π½ΠΎ ΠΊΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ°ΡΠΈΠΊ ΡΠΏΠ°Π» β Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎ ΠΊΠΎΠ½ΡΠ΅ ΠΈΠ³ΡΡ ΠΈ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
ΠΠΎΡΠΌΠΎΡΡΠΈΡΠ΅, ΠΊΠ°ΠΊ Π»Π°ΠΊΠΎΠ½ΠΈΡΠ½ΠΎ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΊΠΎΠ΄ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΡΠ°ΠΌΠΎΠΉ ΠΈΠ³ΡΡ:
Π§ΡΠΎ Π΄Π°Π»ΡΡΠ΅
ΠΠ° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ²ΠΎΡ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΈΠ³ΡΡ: