Python ΠΊΡΠ΅ΡΡΠΈΠΊΠΈ Π½ΠΎΠ»ΠΈΠΊΠΈ: ΠΠ³ΡΠ° ΠΊΡΠ΅ΡΡΠΈΠΊΠΈ-Π½ΠΎΠ»ΠΈΠΊΠΈ Π½Π° Python 3 β ΠΡΠΈΠΌΠ΅Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ
ΠΠ³ΡΠ° ΠΊΡΠ΅ΡΡΠΈΠΊΠΈ-Π½ΠΎΠ»ΠΈΠΊΠΈ Π½Π° Python 3 β ΠΡΠΈΠΌΠ΅Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ
ΠΡΠ΅Π½Ρ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π² ΡΠ΅Π»ΡΡ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π°ΠΏΠΈΡΠ°ΡΡ Π½Π° Π½Π΅ΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΡΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ. ΠΠ΄Π΅ΡΡ ΠΌΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠΌ ΠΈΠ³ΡΡ ΠΊΡΠ΅ΡΡΠΈΠΊΠΈ-Π½ΠΎΠ»ΠΈΠΊΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π°ΠΏΠΈΡΠ°Π½Π° Π½Π° Python 3 Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ.
Π ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅
Π ΡΡΠΎΠΉ ΠΈΠ³ΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅ΡΠΈΡΡΡΡ ΡΠΈΠ»Π°ΠΌΠΈ Ρ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠΎΠΌ. ΠΠ΅ΡΠ²ΡΠΉ Ρ ΠΎΠ΄ Π·Π° ΠΈΠ³ΡΠΎΠΊΠΎΠΌ. ΠΠΎ ΠΏΠΎΠ±Π΅Π΄ΠΈΡΡ ΠΈΡΠΊΡΡΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΈΠ½ΡΠ΅Π»Π»Π΅ΠΊΡ Π² ΡΡΠΎΠΌ ΠΏΡΠΎΡΠΈΠ²ΠΎΡΡΠΎΡΠ½ΠΈΠΈ Π±ΡΠ΄Π΅Ρ Π½Π΅ ΡΠ°ΠΊ ΡΠΆ ΠΈ ΠΏΡΠΎΡΡΠΎ. ΠΠΎΠΌΠΏΡΡΡΠ΅Ρ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ Β«Π·Π΅Π²ΠΊΠΎΠ²Β» ΠΈ Π΅ΡΠ»ΠΈ Ρ Π½Π΅Π³ΠΎ Π΅ΡΡΡ ΡΠ°Π½Ρ ΠΏΠΎΠ±Π΅Π΄ΠΈΡΡ, ΠΎΠ½ Π½Π΅ΠΏΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΈΠΌ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ.
ΠΠ½ΠΈΠ·Ρ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ° Π΄Π»Ρ Π½Π°ΡΠ°Π»Π° Π½ΠΎΠ²ΠΎΠΉ ΠΈΠ³ΡΡ. ΠΠΎ Π΅Ρ Π½Π°ΠΆΠ°ΡΠΈΡ ΠΈΠ³ΡΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅ ΠΎΡΠΈΡΡΠΈΡΡΡ ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π½Π°ΡΠ°ΡΡ ΠΈΠ³ΡΡ Π·Π°Π½ΠΎΠ²ΠΎ.
ΠΠ³ΡΠΎΠΊ ΡΡΠ°Π²ΠΈΡ ΠΊΡΠ΅ΡΡΠΈΠΊΠΈ, Π° ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ Π½ΠΎΠ»ΠΈΠΊΠΈ. ΠΠ°ΠΊ Π²ΡΠ΅Π³Π΄Π°, ΠΏΠΎΠ±Π΅ΠΆΠ΄Π°Π΅Ρ ΡΠΎΡ, ΠΊΡΠΎ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠΎΡΡΠ°Π²ΠΈΡ Π»ΠΈΠ½ΠΈΡ ΠΈΠ· ΡΠ²ΠΎΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²: ΠΏΠΎ Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΠΈ, Π²Π΅ΡΡΠΈΠΊΠ°Π»ΠΈ ΠΈΠ»ΠΈ Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΠΈ.
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
ΠΠ»Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π³ΡΠ°ΡΠΈΠΊΠΈ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Tkinter, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ Π²ΠΌΠ΅ΡΡΠ΅ Ρ Python. Π’Π°ΠΊ ΠΆΠ΅ Π½Π°ΠΌ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° random Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠ΅ ΡΠΈΡΠ»Π°, Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΊΠΎΡΠΎΡΡΠΌ Ρ ΠΎΠ΄Ρ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ° Π±ΡΠ΄ΡΡ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΡΠΌΠΈ.
ΠΡΠΎ ΡΠ°ΠΊΠΆΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Python. Π’Π°ΠΊ ΡΡΠΎ Π½ΠΈΡΠ΅Π³ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ Π½Π΅ Π½Π°Π΄ΠΎ. ΠΡΠΎΡΡΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌ ΠΈΡ
Ρ ΠΏΠΎΠΌΠΎΡΡΡ import
. Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΠΊΠ½ΠΎ root
, ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ Π΅ΠΌΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΈ ΠΎΠ±ΡΡΠ²Π»ΡΠ΅ΠΌ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅:
game_run
β Π² ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π±ΡΠ΄Π΅ΠΌ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡFalse
ΠΏΡΠΈ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠΈ ΠΈΠ³ΡΡ, ΡΡΠΎΠ±Ρ Π·Π°ΠΏΡΠ΅ΡΠΈΡΡ Π΄Π΅Π»Π°ΡΡ Ρ ΠΎΠ΄Ρ ΠΊΠΎΠ³Π΄Π° ΡΠΆΠ΅ Π²ΡΡΠ²Π»Π΅Π½ ΠΏΠΎΠ±Π΅Π΄ΠΈΡΠ΅Π»Ρ.field
β ΡΡΠΎ Π±ΡΠ΄Π΅Ρ Π΄Π²ΡΠΌΠ΅ΡΠ½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π±ΡΠ΄ΡΡ Ρ ΡΠ°Π½ΠΈΡΡΡΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΈΠ³ΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ. Π₯ΠΎΠ΄ΠΎΠΌ Π±ΡΠ΄Π΅Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π½Π°Π΄ΠΏΠΈΡΠΈ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ΅ Π½Π° ΡΠΈΠΌΠ²ΠΎΠ» Β«XΒ» ΠΈΠ»ΠΈ Β«OΒ».cross_count
Π² ΡΡΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΊΡΠ΅ΡΡΠΈΠΊΠΎΠ² Π½Π° ΠΏΠΎΠ»Π΅. Π§ΡΠΎΠ±Ρ ΠΏΠΎ Π²ΡΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΡΡΠΎΠ³ΠΎ ΠΊΡΠ΅ΡΡΠΈΠΊΠ°, Π² ΡΠ»ΡΡΠ°Π΅ Π΅ΡΠ»ΠΈ Π½ΠΈΠΊΡΠΎ Π½Π΅ Π²ΡΠΈΠ³ΡΠ°Π» ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°ΡΡ Π½ΠΈΡΡΡ.
from tkinter import * import random root = Tk() root.title('Criss-cross') game_run = True field = [] cross_count = 0
ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π°ΠΆΠ°ΡΠΈΡ ΠΊΠ½ΠΎΠΏΠΎΠΊ
Π€ΡΠ½ΠΊΡΠΈΡ new_game Π±ΡΠ΄Π΅Ρ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ ΠΏΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π½Π°ΡΠ°Π»Π° Π½ΠΎΠ²ΠΎΠΉ ΠΈΠ³ΡΡ. ΠΠ° ΠΏΠΎΠ»Π΅ ΡΠ±ΠΈΡΠ°ΡΡΡΡ Π²ΡΠ΅ ΠΊΡΠ΅ΡΡΠΈΠΊΠΈ ΠΈ Π½ΠΎΠ»ΠΈΠΊΠΈ. Π¦Π²Π΅Ρ ΠΊΠ½ΠΎΠΏΠΎΠΊ Π΄Π΅Π»Π°Π΅ΠΌ Π±Π»Π΅Π΄Π½ΠΎ-Π»ΠΈΠ»ΠΎΠ²ΡΠΌ. Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ game_run
ΠΈ cross_count
Π² Π½Π°ΡΠ°Π»ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. ΠΡΠΎ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΊ ΠΊΠΎΡΠΎΡΡΠΌ ΠΏΡΡΠ°Π΅ΠΌΡΡ ΠΎΠ±ΡΠ°ΡΠΈΡΡΡΡ ΠΈΠ· ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠΎΡΡΠΎΠΌΡ ΠΏΠ΅ΡΠ΅Π΄ ΠΏΠΎΠΏΡΡΠΊΠΎΠΉ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΈΡ
Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π² Python Π½Π°Π΄ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ global
.
def new_game(): for row in range(3): for col in range(3): field[row][col]['text'] = ' ' field[row][col]['background'] = 'lavender' global game_run game_run = True global cross_count cross_count = 0
Π€ΡΠ½ΠΊΡΠΈΡ click
Π±ΡΠ΄Π΅Ρ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ ΠΏΠΎΡΠ»Π΅ Π½Π°ΠΆΠ°ΡΠΈΡ Π½Π° ΠΏΠΎΠ»Π΅, ΡΠΎ Π΅ΡΡΡ ΠΏΡΠΈ ΠΏΠΎΠΏΡΡΠΊΠΈ ΠΏΠΎΡΡΠ°Π²ΠΈΡΡ ΠΊΡΠ΅ΡΡΠΈΠΊ. ΠΡΠ»ΠΈ ΠΈΠ³ΡΠ° Π΅ΡΠ΅ Π½Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½Π°, ΡΠΎ ΠΊΡΠ΅ΡΡΠΈΠΊ ΡΡΠ°Π²ΠΈΡΡΡ. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΠΌ ΡΡΠ΅ΡΡΠΈΠΊ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° Π²ΡΡΡΠ°Π²Π»Π΅Π½Π½ΡΡ
ΠΊΡΠ΅ΡΡΠΈΠΊΠΎΠ².
ΠΠΎΡΠΎΠΌ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ check_win
, Π½Π΅ ΠΏΠΎΠ±Π΅Π΄ΠΈΠ»ΠΈ Π»ΠΈ ΠΌΡ ΡΡΠΈΠΌ Ρ
ΠΎΠ΄ΠΎΠΌ. ΠΡΠ»ΠΈ Π΅ΡΠ΅ Π½Π΅ Π²ΡΡΠ²Π»Π΅Π½ ΠΏΠΎΠ±Π΅Π΄ΠΈΡΠ΅Π»Ρ ΠΈ Π΅ΡΡΡ Π΅ΡΠ΅ Ρ
ΠΎΠ΄Ρ, ΡΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Ρ
ΠΎΠ΄ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ computer_move
, ΠΈ ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΡΠ»Π΅ Ρ
ΠΎΠ΄Π° ΠΈΠ΄Π΅Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π²ΡΠΈΠ³ΡΡΡΠ°.
def click(row, col): if game_run and field[row][col]['text'] == ' ': field[row][col]['text'] = 'X' global cross_count cross_count += 1 check_win('X') if game_run and cross_count < 5: computer_move() check_win('O')
ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΠΏΠΎΠ±Π΅Π΄Ρ
Π€ΡΠ½ΠΊΡΠΈΡ check_win
ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ Π²ΡΠΈΠ³ΡΡΡΠ°. ΠΠ½Π° ΠΏΠ΅ΡΠ΅Π±ΠΈΡΠ°Π΅Ρ Π²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ ΠΏΠΎΠ»Π΅ΠΉ, ΠΎΠ±ΡΠ°Π·ΡΡΡΠΈΡ
Π»ΠΈΠ½ΠΈΡ ΠΈ Π²ΡΠ·ΡΠ²Π°Π΅Ρ Ρ Π½ΠΈΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΡ check_line
. ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ smb
β ΡΡΠΎ ΡΠΈΠΌΠ²ΠΎΠ» Β«XΒ» ΠΈΠ»ΠΈ Β«OΒ», ΡΠΎ Π΅ΡΡΡ ΠΊΡΠ΅ΡΡΠΈΠΊΠΈ ΠΈΠ»ΠΈ Π½ΠΎΠ»ΠΈΠΊΠΈ. ΠΡΠ»ΠΈ Π·Π°Π΄Π°Π½ Β«OΒ», ΡΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΡΡΡ: Π½Π΅ ΠΏΠΎΠ±Π΅Π΄ΠΈΠ» Π»ΠΈ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ.
ΠΡΠ»ΠΈ Π·Π°ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½ Π²ΡΠΈΠ³ΡΡΡ, ΡΠΎ ΠΌΠ΅Π½ΡΠ΅ΠΌ ΡΠ²Π΅Ρ ΡΠΎΠ½Π° ΠΊΠ½ΠΎΠΏΠΎΠΊ, ΡΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΡ
Π»ΠΈΠ½ΠΈΡ Π½Π° ΡΠΎΠ·ΠΎΠ²ΡΠΉ. Π ΡΠ°ΠΊΠΆΠ΅ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΠΌ Π² game_run
Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ False
.
def check_win(smb): for n in range(3): check_line(field[n][0], field[n][1], field[n][2], smb) check_line(field[0][n], field[1][n], field[2][n], smb) check_line(field[0][0], field[1][1], field[2][2], smb) check_line(field[2][0], field[1][1], field[0][2], smb) def check_line(a1,a2,a3,smb): if a1['text'] == smb and a2['text'] == smb and a3['text'] == smb: a1['background'] = a2['background'] = a3['background'] = 'pink' global game_run game_run = False
ΠΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ Π²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΠ΅ΠΎΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ΄Π½ΠΈΠΌ Ρ ΠΎΠ΄ΠΎΠΌ ΡΠΎΡΡΠ°Π²ΠΈΡΡ ΡΡΠ°Π·Ρ 2 Π»ΠΈΠ½ΠΈΠΈ.
ΠΠ΅ΠΉΡΡΠ²ΠΈΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°
Π₯ΠΎΠ΄ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ° ΡΠ°ΡΡΡΠΈΡΡΠ²Π°Π΅ΡΡΡ Π² ΡΡΠ½ΠΊΡΠΈΠΈ computer_move
. ΠΠ»Π³ΠΎΡΠΈΡΠΌ Π΅Π³ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ:
- ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΠΎΠ±Π΅Π΄Ρ. ΠΡΠ»ΠΈ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠ»ΡΡ ΡΠ°Π½Ρ ΠΏΠΎΠ±Π΅Π΄Ρ β ΠΎΠ½ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π΅Π³ΠΎ ΡΠΏΡΡΡΠΈΡΡ. Π‘ΡΠ°Π·Ρ ΠΆΠ΅ Π΄Π΅Π»Π°Π΅Ρ ΠΏΠΎΠ±Π΅Π΄Ρ.
- ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠΉ ΠΏΠΎΠ±Π΅Π΄Ρ ΠΏΡΠΎΡΠΈΠ²Π½ΠΈΠΊΠ° Π·Π° ΠΎΠ΄ΠΈΠ½ Ρ ΠΎΠ΄. ΠΡΠ»ΠΈ ΠΈΠ³ΡΠΎΠΊ Π²ΡΡΡΠ°Π²ΠΈΠ» Π΄Π²Π° ΠΊΡΠ΅ΡΡΠΈΠΊΠ° Π² ΡΡΠ΄, ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ ΠΏΡΡΠ°Π΅ΡΡΡ ΡΠ°Π·ΡΡΡΠΈΡΡ ΠΏΠ»Π°Π½Ρ ΠΈΠ³ΡΠΎΠΊΠ°.
- Π‘Π»ΡΡΠ°ΠΉΠ½ΡΠΉ Ρ ΠΎΠ΄. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΠΎΠ±Π΅Π΄ΠΈΡΡ Π½Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΈ Π½Π΅Ρ ΡΠ³ΡΠΎΠ·Ρ ΠΏΡΠΎΠΈΠ³ΡΡΡΠ°, ΡΠΎ Π²ΡΠ±ΠΈΡΠ°Π΅ΡΡΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠ΅ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠ΅ ΠΏΠΎΠ»Π΅. Π Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΡΠΈΠΊΠ»Π΅ wile ΠΏΠ΅ΡΠ΅Π±ΠΈΡΠ°ΡΡΡΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠ΅ ΡΠΈΡΠ»Π°, ΠΏΠΎΠΊΠ° ΠΎΠ½ΠΈ Π½Π΅ Π²ΡΠΏΠ°Π΄ΡΡ Π½Π° Π½Π΅ Π·Π°Π½ΡΡΠΎΠ΅ ΠΏΠΎΠ»Π΅.
def can_win(a1,a2,a3,smb): res = False if a1['text'] == smb and a2['text'] == smb and a3['text'] == ' ': a3['text'] = 'O' res = True if a1['text'] == smb and a2['text'] == ' ' and a3['text'] == smb: a2['text'] = 'O' res = True if a1['text'] == ' ' and a2['text'] == smb and a3['text'] == smb: a1['text'] = 'O' res = True return res def computer_move(): for n in range(3): if can_win(field[n][0], field[n][1], field[n][2], 'O'): return if can_win(field[0][n], field[1][n], field[2][n], 'O'): return if can_win(field[0][0], field[1][1], field[2][2], 'O'): return if can_win(field[2][0], field[1][1], field[0][2], 'O'): return for n in range(3): if can_win(field[n][0], field[n][1], field[n][2], 'X'): return if can_win(field[0][n], field[1][n], field[2][n], 'X'): return if can_win(field[0][0], field[1][1], field[2][2], 'X'): return if can_win(field[2][0], field[1][1], field[0][2], 'X'): return while True: row = random.randint(0, 2) col = random.randint(0, 2) if field[row][col]['text'] == ' ': field[row][col]['text'] = 'O' break
ΠΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ
ΠΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΡΠ°Π·ΠΌΠ΅ΡΠ°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΏΠ°ΠΊΠΎΠ²ΡΠΈΠΊΠ° grid
. Π ΡΠΈΠΊΠ»Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΈΠ³ΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ. ΠΠ½ΠΈ Π±ΡΠ΄ΡΡ Ρ
ΡΠ°Π½ΠΈΡΡΡΡ Π² Π΄Π²ΡΠΌΠ΅ΡΠ½ΠΎΠΌ ΡΠΏΠΈΡΠΎΠΊ. Π ΡΠ·ΡΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Python Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π² ΡΠΏΠΈΡΠΎΠΊ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° append
.
Π‘Π²ΠΎΠΉΡΡΠ²ΠΎ colorspan
Ρ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π½Π°ΡΠ°Π»Π° ΠΈΠ³ΡΡ Π²ΡΡΡΠ°Π²Π»ΡΠ΅ΠΌ Π² 3, ΡΡΠΎΠ±Ρ ΠΎΠ½ Π·Π°Π½ΠΈΠΌΠ°Π» Π²ΡΡ ΡΠΈΡΠΈΠ½Ρ ΡΠ°Π±Π»ΠΈΡΡ
for row in range(3): line = [] for col in range(3): button = Button(root, text=' ', width=4, height=2, font=('Verdana', 20, 'bold'), background='lavender', command=lambda row=row, col=col: click(row,col)) button.grid(row=row, column=col, sticky='nsew') line.append(button) field.append(line) new_button = Button(root, text='new game', command=new_game) new_button.grid(row=3, column=0, columnspan=3, sticky='nsew') root.mainloop()
ΠΠ³ΡΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅ ΠΌΡ Π΄Π΅Π»Π°Π»ΠΈ ΡΠ°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΊΠ°ΠΊ ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π² ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Ρ ΠΊΠ°Π»ΡΠΊΡΠ»ΡΡΠΎΡΠΎΠΌ, ΡΠ°Π·ΠΌΠ΅ΡΡΠ½Π½ΠΎΠΌ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΉ ΡΡΠ°ΡΡΠ΅.
Π ΡΠ΅Π»ΠΎΠΌ, ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈΠ³ΡΡ ΠΊΡΠ΅ΡΡΠΈΠΊΠΈ-Π½ΠΎΠ»ΠΈΠΊΠΈ Π½Π΅ΠΏΠ»ΠΎΡ ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ ΠΈΠ·ΡΡΠ°ΡΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Python 3. ΠΠΎΠΆΠ½ΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΠ»ΠΎΠΆΠ½ΠΈΡΡ Π·Π°Π΄Π°ΡΡ, Π΄ΠΎΠ±Π°Π²ΠΈΠ² ΡΡΠΎΠ²Π½ΠΈ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π° ΠΏΡΠΎΡΡΠΎΠΌ ΡΡΠΎΠ²Π½Π΅ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ Π΄Π΅Π»Π°Π΅Ρ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠ΅ Ρ ΠΎΠ΄Ρ. ΠΠ° Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΠΎΠΌ Π½Π΅ ΡΠΏΡΡΠΊΠ°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΠΎΠ±Π΅Π΄ΠΈΡΡ, Π½ΠΎ Π²ΡΠ΅ Π΅ΡΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΠ·Π΅Π²Π°ΡΡ Π΄Π²Π° ΠΊΡΠ΅ΡΡΠΈΠΊΠ° Π²ΡΡΡΠ°Π²Π»Π΅Π½Π½ΡΡ Π² ΡΡΠ΄.
ΠΡΠ΅ΡΡΠΈΠΊΠΈ-Π½ΠΎΠ»ΠΈΠΊΠΈ Π½Π° Python (ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ)
Π‘Π΅Π³ΠΎΠ΄Π½Ρ ΠΏΠ΅ΡΠ΅Π΄ Π½Π°ΠΌΠΈ ΡΡΠΎΠΈΡ Π·Π°Π΄Π°ΡΠ° Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΈΠ³ΡΡ ΠΊΡΠ΅ΡΡΠΈΠΊΠΈ-Π½ΠΎΠ»ΠΈΠΊΠΈ Π½Π° ΠΏΠΈΡΠΎΠ½Π΅. ΠΠ°ΠΏΠΎΠΌΠ½ΠΈΠΌ, ΡΡΠΎ ΠΊΡΠ΅ΡΡΠΈΠΊΠΈ-Π½ΠΎΠ»ΠΈΠΊΠΈ ΡΡΠΎ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΈΠ³ΡΠ° Π΄Π»Ρ Π΄Π²ΡΡ ΠΈΠ³ΡΠΎΠΊΠΎΠ² Π½Π° ΠΏΠΎΠ»Π΅ 3Ρ 3 ΠΊΠ»Π΅ΡΠΊΠΈ.
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° Π·Π°Π΄Π°Π΄ΠΈΠΌ ΠΏΠΎΠ»Π΅. ΠΠΎΠ»Π΅ Ρ Π½Π°Ρ Π±ΡΠ΄Π΅Ρ ΠΎΠ΄Π½ΠΎΠΌΠ΅ΡΠ½ΡΠΌ ΡΠΏΠΈΡΠΊΠΎΠΌ (list) Ρ ΡΠΈΡΠ»Π°ΠΌΠΈ ΠΎΡ 1 Π΄ΠΎ 9. ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ range()
board = range(1,10)
Π’Π΅ΠΏΠ΅ΡΡ Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ΄Π΅Ρ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡ Π½Π°ΡΠ΅ ΠΏΠΎΠ»Π΅ Π² ΠΏΡΠΈΠ²ΡΡΠ½ΠΎΠΌ ΡΠΎΡΠΌΠ°ΡΠ΅.
def draw_board(board): print "-------------" for i in range(3): print "|", board[0+i*3], "|", board[1+i*3], "|", board[2+i*3], "|" print "-------------"
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°
Π‘Π°ΠΌΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π΄Π°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²Π²ΠΎΠ΄ΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅ Π² Π½Π°ΡΡ ΠΈΠ³ΡΡ. ΠΠΈΡΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ take_input
def take_input(player_token): valid = False while not valid: player_answer = raw_input("ΠΡΠ΄Π° ΠΏΠΎΡΡΠ°Π²ΠΈΠΌ " + player_token+"? ") try: player_answer = int(player_answer) except: print "ΠΠ΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΠΉ Π²Π²ΠΎΠ΄. ΠΡ ΡΠ²Π΅ΡΠ΅Π½Ρ, ΡΡΠΎ Π²Π²Π΅Π»ΠΈ ΡΠΈΡΠ»ΠΎ?" continue if player_answer >= 1 and player_answer <= 9: if (str(board[player_answer-1]) not in "XO"): board[player_answer-1] = player_token valid = True else: print "ΠΡΠ° ΠΊΠ»Π΅ΡΠΎΡΠΊΠ° ΡΠΆΠ΅ Π·Π°Π½ΡΡΠ°" else: print "ΠΠ΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΠΉ Π²Π²ΠΎΠ΄. ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΡΠΈΡΠ»ΠΎ ΠΎΡ 1 Π΄ΠΎ 9 ΡΡΠΎΠ±Ρ ΠΏΠΎΡ ΠΎΠ΄ΠΈΡΡ."
ΠΠ°ΠΊ Π²Ρ Π²ΠΈΠ΄ΠΈΡΠ΅, ΡΡΠ½ΠΊΡΠΈΡ take_input ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ player_token — ΠΊΡΠ΅ΡΡΠΈΠΊ ΠΈΠ»ΠΈ Π½ΠΎΠ»ΠΈΠΊ, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΎΠ³ΠΎ, ΡΠ΅ΠΉ ΡΠ΅ΠΉΡΠ°Ρ Ρ ΠΎΠ΄. ΠΠ°ΠΌ Π²Π°ΠΆΠ½ΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΡΡ Π²ΡΠ±ΠΎΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠΈΡΠ»Π°ΠΌΠΈ ΠΎΡ 1 Π΄ΠΎ 9. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ try/except ΠΈ if/else, ΡΡΠΎΠ±Ρ ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΠΈΡΡΡΡ, ΡΡΠΎ Π²ΡΠ±ΡΠ°Π½Π½Π°Ρ ΠΊΠ»Π΅ΡΠΎΡΠΊΠ° Π½Π΅ Π·Π°Π½ΡΡΠ°. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ take_input Π½Π΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, Π° ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ ΠΈΠΌΠ΅ΡΡΠΈΠΉΡΡ ΡΠΏΠΈΡΠΎΠΊ board.
ΠΡΡΠ°Π»ΠΎΡΡ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΈΠ³ΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ. ΠΠ°Π·ΠΎΠ²Π΅ΠΌ ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ check_win.
def check_win(board): win_coord = ((0,1,2),(3,4,5),(6,7,8),(0,3,6),(1,4,7),(2,5,8),(0,4,8),(2,4,6)) for each in win_coord: if board[each[0]] == board[each[1]] == board[each[2]]: return board[each[0]] return False
ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΠΈΠ³ΡΡ ΠΊΡΠ΅ΡΡΠΈΠΊΠΈ-Π½ΠΎΠ»ΠΈΠΊΠΈ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½Π°Ρ Π·Π°Π΄Π°ΡΠ° ΠΏΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠ°ΠΊ ΡΠ°ΡΡΠΎ Π±ΡΠ²Π°Π΅Ρ, ΠΎΠ΄Π½ΠΎ ΠΈ ΡΠΎ ΠΆΠ΅ Π·Π°Π΄Π°Π½ΠΈΠ΅ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅ΡΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ. Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΡ ΠΏΡΠΎΡΡΠΎ ΡΠΎΠ·Π΄Π°Π»ΠΈ ΠΊΠΎΡΡΠ΅ΠΆ (tuple) Ρ Π²ΡΠΈΠ³ΡΡΡΠ½ΡΠΌΠΈ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ°ΠΌΠΈ ΠΈ ΠΏΡΠΎΡΠ»ΠΈΡΡ ΡΠΈΠΊΠ»ΠΎΠΌ for ΠΏΠΎ Π½Π΅ΠΌΡ. ΠΡΠ»ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»Ρ Π²ΠΎ Π²ΡΠ΅Ρ ΡΡΠ΅Ρ Π·Π°Π΄Π°Π½Π½ΡΡ ΠΊΠ»Π΅ΡΠΊΠ°Ρ ΡΠ°Π²Π½Ρ — Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌ Π²ΡΠΈΠ³ΡΡΡΠ½ΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ», ΠΈΠ½Π°ΡΠ΅ — Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ False. ΠΡΠΈ ΡΡΠΎΠΌ Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡΡ, ΡΡΠΎ Π½Π΅ΠΏΡΡΡΠ°Ρ ΡΡΡΠΎΠΊΠ° (Π½Π°Ρ Π²ΡΠΈΠ³ΡΡΡΠ½ΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ») ΠΏΡΠΈ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠΈ Π΅Π΅ ΠΊ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠΌΡ ΡΠΈΠΏΡ Π²Π΅ΡΠ½Π΅Ρ True (ΡΡΠΎ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ Π½Π°ΠΌ Π² Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ).
ΠΡΡΠ°Π»ΠΎΡΡ ΡΠΎΠ·Π΄Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ main, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΡ ΡΠΎΠ±Π΅ΡΠ΅ΠΌ Π²ΠΌΠ΅ΡΡΠ΅ Π²ΡΠ΅ ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ.
def main(board): counter = 0 win = False while not win: draw_board(board) if counter % 2 == 0: take_input("X") else: take_input("O") counter += 1 if counter > 4: tmp = check_win(board) if tmp: print tmp, "Π²ΡΠΈΠ³ΡΠ°Π»!" win = True break if counter == 9: print "ΠΠΈΡΡΡ!" break draw_board(board)
Π Π°Π±ΠΎΡΠ° ΡΡΠ½ΠΊΡΠΈΠΈ main ΠΏΡΠ΅Π΄Π΅Π»ΡΠ½ΠΎ ΠΏΠΎΠ½ΡΡΠ½Π°, ΡΠ°Π·Π²Π΅ ΡΡΠΎ ΡΡΡΠΎΠΊΠΈ 45 ΠΈ 46 ΠΌΠΎΠ³ΡΡ Π²ΡΠ·Π²Π°ΡΡ Π½Π΅ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅. ΠΡ ΠΆΠ΄Π΅ΠΌ ΠΊΠΎΠ³Π΄Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ counter ΡΡΠ°Π½Π΅Ρ Π±ΠΎΠ»ΡΡΠ΅ 4 Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Π·Π°Π²Π΅Π΄ΠΎΠΌΠΎ Π½Π΅Π½ΡΠΆΠ½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ check_win (Π΄ΠΎ ΠΏΡΡΠΎΠ³ΠΎ Ρ ΠΎΠ΄Π° Π½ΠΈΠΊΡΠΎ ΡΠΎΡΠ½ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΈΠ³ΡΠ°ΡΡ). ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ tmp Π±ΡΠ»Π° ΡΠΎΠ·Π΄Π°Π½Π° ΠΎΠΏΡΡΡ ΠΆΠ΅ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π»ΠΈΡΠ½ΠΈΠΉ ΡΠ°Π· Π½Π΅ Π²ΡΠ·ΡΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ check_win, ΠΌΡ ΠΏΡΠΎΡΡΠΎ «Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅ΠΌ» Π΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈ ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π½Π° ΡΡΡΠΎΠΊΠ΅ 48. ΠΠΎΠ»ΡΠ·Π° ΠΎΡ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π° Π½Π΅ ΡΠ°ΠΊ Π·Π°ΠΌΠ΅ΡΠ½Π° ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΌΠ°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ , Π½ΠΎ Π² ΡΠ΅Π»ΠΎΠΌ ΠΏΠΎΠ΄ΠΎΠ±Π½Π°Ρ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ — Ρ ΠΎΡΠΎΡΠ°Ρ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ°.
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΏΠΎΠΊΠΎΠΉΠ½ΠΎ ΠΈΠ³ΡΠ°ΡΡ, Π·Π°ΠΏΡΡΡΠΈΠ² main(board)
Β
Π ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ ΡΡΠΎΡΠ½Π΅Π½ΠΈΠ΅. ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Ρ Π²Π°Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π»ΠΈΡΡ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΊΠΈΡΠΈΠ»Π»ΠΈΡΡ Π²ΡΡΠ°Π²ΡΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄ Π² ΡΠ°ΠΌΠΎΠ΅ Π½Π°ΡΠ°Π»ΠΎ Π²Π°ΡΠ΅Π³ΠΎ ΡΠ°ΠΉΠ»Π°.
# -*- coding: utf-8 -*-
Β Π₯ΠΎΡΠΎΡΠ΅ΠΉ ΠΈΠ³ΡΡ!
PS. ΠΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΈΠ³ΡΡ ΠΊΡΠ΅ΡΡΠΈΠΊΠΈ-Π½ΠΎΠ»ΠΈΠΊΠΈ Π½Π° Python 3 Π½Π° github
Python: Π½Π΅ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠ³ΡΠ° βΠΡΠ΅ΡΡΠΈΠΊΠΈ-Π½ΠΎΠ»ΠΈΠΊΠΈβ.
ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ ΡΡΠΈΡΡ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ°ΠΉΡΠΎΠ½ Python. ΠΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΠΌ ΠΊ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ 6 Π³Π»Π°Π²Ρ βΠ€ΡΠ½ΠΊΡΠΈΠΈ. ΠΠ³ΡΠ° ΠΡΠ΅ΡΡΠΈΠΊΠΈ-Π½ΠΎΠ»ΠΈΠΊΠΈβ ΠΏΠΎ ΠΊΠ½ΠΈΠ³Π΅: ΠΠ°ΠΉΠΊΠ» ΠΠΎΡΡΠΎΠ½ βΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ΅ΠΌ Π½Π° Pythonβ, 2014 (Michael Dawson βPython Programming for the Absolute Beginnerβ, 3rd Edition), ΡΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠΌΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ.
ΠΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ?
ΠΠ±ΡΠΈΠΉ Π²ΠΈΠ΄ ΡΡΠ½ΠΊΡΠΈΠΈ Π² Python: Π½Π°Π·Π²Π°Π½ΠΈΠ΅_ΡΡΠ½ΠΊΡΠΈΠΈ()
Π§ΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ, Π½ΡΠΆΠ½ΠΎ Π΅Π΅ ΠΎΠ±ΡΡΠ²ΠΈΡΡ.
ΠΠ±ΡΠΈΠΉ Π²ΠΈΠ΄ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ
def Π½Π°Π·Π²Π°Π½ΠΈΠ΅_ΡΡΠ½ΠΊΡΠΈΠΈ(ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ1, ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ2...):
Β Β '''ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΡΡΡΠ°Ρ ΡΡΡΠΎΠΊΠ°'''
Β Β ΠΠ»ΠΎΠΊ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ
Π€ΡΠ½ΠΊΡΠΈΠΈ ΠΌΠΎΠ³ΡΡ:
- ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ΅ΡΠ΅Π· ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ,
- Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ΅ΡΠ΅Π·
return
.
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ
β ΡΡΠΎ ΠΈΠΌΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² ΡΠΊΠΎΠ±ΠΊΠ°Ρ ΠΏΠΎΡΠ»Π΅ Π½Π°Π·Π²Π°Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ. Π ΠΌΠΎΠΌΠ΅Π½Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ ΠΈΠΌΠ΅ΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. ΠΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΈΡΠ²ΠΎΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.
ΠΠΎΠ·ΠΈΡΠΈΠΎΠ½Π½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ
Π ΡΡΠ½ΠΊΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ²:
def Π½Π°Π·Π²Π°Π½ΠΈΠ΅_ΡΡΠ½ΠΊΡΠΈΠΈ(ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ1, ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ2...):
ΠΡΠ·ΠΎΠ² ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Ρ ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½Π½ΡΠΌΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ:
Π½Π°Π·Π²Π°Π½ΠΈΠ΅_ΡΡΠ½ΠΊΡΠΈΠΈ('Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°1',Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°2...)
ΠΡΠ·ΠΎΠ² ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Ρ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠΌΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ (Π΄Π»Ρ Π½ΠΈΡ Π½Π΅ Π²Π°ΠΆΠ΅Π½ ΠΏΠΎΡΡΠ΄ΠΎΠΊ!):
Π½Π°Π·Π²Π°Π½ΠΈΠ΅_ΡΡΠ½ΠΊΡΠΈΠΈ(ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ1='Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°1', ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ2=Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°2,...)
ΡΠ°Π²Π½ΠΎΠ·Π½Π°ΡΠ½ΠΎβ¦
Π½Π°Π·Π²Π°Π½ΠΈΠ΅_ΡΡΠ½ΠΊΡΠΈΠΈ(ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ2=Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°2, ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ1='Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°1',...)
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ
def Π½Π°Π·Π²Π°Π½ΠΈΠ΅_ΡΡΠ½ΠΊΡΠΈΠΈ(ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ1='Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅', ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ2=Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅...):
ΠΡΠ»ΠΈ ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π½ΠΈΠΊΠ°ΠΊΠΈΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌ Π½Π΅ ΠΏΡΠΈΡΠ²ΠΎΡΡΡΡ, ΡΠΎ ΠΎΡΠΎΠ±ΡΠ°Π·ΡΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
ΠΡΠΈΡΠ²Π°ΠΈΠ²Π°Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π΄Π»Ρ Π²ΡΠ΅Ρ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π² ΠΎΠ±ΡΡΠ²Π»ΡΠ΅ΠΌΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ.
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΏΡΠΈ ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈ ΠΏΠΎ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΡΡΠΈ, Π° Π½Π΅ Π²ΡΠ΅ ΡΡΠ°Π·Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°ΠΊ:
ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ->
def Π½Π°Π·Π²Π°Π½ΠΈΠ΅_ΡΡΠ½ΠΊΡΠΈΠΈ(ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ1='Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅', ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ2=Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅):
ΠΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ ->
Π½Π°Π·Π²Π°Π½ΠΈΠ΅_ΡΡΠ½ΠΊΡΠΈΠΈ(ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ1='Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°1')
Π€ΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ
def vozvrat():
Β Β imya='kot'
Β Β return imya
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°-ΠΈΠ»Π»ΡΡΡΡΠ°ΡΠΈΡ:
def vozvrat(): imya='kot' return imya print('ΠΠΎΠ·Π²ΡΠ°Ρ: ', vozvrat())
ΠΠ°ΠΏΡΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄Π°Π΅Ρ:
ΠΠΎΠ·Π²ΡΠ°Ρ: kot >>>
ΠΠΎΠΆΠ½ΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΠ΅ΡΠ΅Π· Π·Π°ΠΏΠΈΡΡ return p1,p2,p3...
Π€ΡΠ½ΠΊΡΠΈΡ main()
ΠΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΊΠΎΠ΄ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ ΠΎΡΡΠ°Π²Π»ΡΡΡ Π² Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠΉ Π·ΠΎΠ½Π΅ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ, Π° ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ Π² ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π°ΡΡ Π»ΡΠ±ΠΎΠ΅ ΠΈΠΌΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, main()
Π’ΠΎΠ³Π΄Π° ΠΊΠΎΠ΄ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ°ΠΊ:
main()
input('ΠΠ°ΠΆΠΌΠΈΡΠ΅ Entr, ΡΡΠΎΠ±Ρ Π²ΡΠΉΡΠΈ')
ΠΠ»ΠΎΠ±Π°Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅
ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π²Π½ΡΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄ΠΎΡΡΡΠΏΠ½Ρ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ°ΠΌ. ΠΡΡΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ±ΡΡΠ²Π»ΡΡΡΡΡ Π²Π½Π΅ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΎΠ½ΠΈ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π²Π½ΡΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ ΡΠΎΠΆΠ΅, ΡΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ βΡΡΠ΅Π½ΠΈΡβ, Π΅ΡΠ»ΠΈ Π½Π΅ ΡΠΊΠ°Π·Π°Π½ΠΎ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ΅.
ΠΠ»ΠΎΠ±Π°Π»ΡΠ½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ β ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ Π² ΠΎΠ±ΡΠ΅ΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ.
ΠΠΎΠΊΠ°Π»ΡΠ½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ β ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ Π²Π½ΡΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ.
ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π²Π½ΡΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ
Π§ΡΠΎΠ±Ρ ΠΌΠ΅Π½ΡΡΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅, Π½Π°Ρ
ΠΎΠ΄ΡΡΡ Π²Π½ΡΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΏΠΈΡΠ΅ΠΌ global
ΠΡΠ»ΠΈ ΡΠΎΠ·Π΄Π°Π½Π° Π³Π»ΠΎΠ±Π°Π»ΡΠ½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ g_peremennaya
, ΡΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π΅Π΅ Π²Π½ΡΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Π²: global g_peremennaya
ΠΠ°ΡΠ΅Π½Π΅Π½ΠΈΠ΅ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ
Π’Π°ΠΊ ΠΊΠ°ΠΊ Π² ΠΎΠ±ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Π²Π½ΡΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π΅Π»ΡΠ·Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΠ΄Π½ΠΎΠΈΠΌΠ΅Π½Π½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π²Π½ΡΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΡΠΎ ΠΈ Π±ΡΠ΄Π΅Ρ Π·Π°ΡΠ΅Π½Π΅Π½ΠΈΠ΅. ΠΠΎΠ²Π°Ρ ΠΎΠ΄Π½ΠΎΠΈΠΌΠ΅Π½Π½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π²Π½ΡΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠΎ ΡΡΠΎ Π²Π½ΠΎΡΠΈΡ ΠΏΡΡΠ°Π½ΠΈΡΡ, Π»ΡΡΡΠ΅ ΡΠ°ΠΊ Π½Π΅ Π΄Π΅Π»Π°ΡΡ.
ΠΠ»ΠΎΠ±Π°Π»ΡΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ
ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΌΡ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌ ΠΏΠΎ Ρ
ΠΎΠ΄Ρ ΠΊΠΎΠ΄Π°. Π ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ β ΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅, Π·Π°ΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Π±ΠΎΠ»ΡΡΠΈΠΌΠΈ Π±ΡΠΊΠ²Π°ΠΌΠΈ (CONSTANTA
), ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ ΡΠ΅ΡΠΈΠ»ΠΈ Π½Π΅ ΠΌΠ΅Π½ΡΡΡ. Π ΠΎΠ±ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Π»ΡΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ, ΡΠ΅ΠΌ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅.
ΠΠ³ΡΠ° βΠΡΠ΅ΡΡΠΈΠΊΠΈ-Π½ΠΎΠ»ΠΈΠΊΠΈβ
ΠΠ°Π΄Π°ΡΠ°: Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ³ΡΠ°ΡΡ Ρ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠΎΠΌ Π² ΠΊΡΠ΅ΡΡΠΈΠΊΠΈ-Π½ΠΎΠ»ΠΈΠΊΠΈ Π½Π° ΠΏΠΎΠ»Π΅ 3Ρ 3. Π‘Π½Π°ΡΠ°Π»Π° ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ ΠΊ ΠΈΠ³ΡΠ΅. ΠΠ°Π»Π΅Π΅ ΠΈΠ΄Π΅Ρ Π²ΡΠ±ΠΎΡ, ΠΊΡΠΎ Π±ΡΠ΄Π΅Ρ Ρ ΠΎΠ΄ΠΈΡΡ ΠΏΠ΅ΡΠ²ΡΠΌ. ΠΠ°ΡΠΈΠ½Π°Π΅ΡΡΡ ΠΈΠ³ΡΠ°, ΠΈΠ³ΡΠΎΠΊΠΈ Π΄Π΅Π»Π°ΡΡ Ρ ΠΎΠ΄Ρ ΠΏΠΎ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ. ΠΠΎΠ³Π΄Π° ΠΊΡΠΎ-ΡΠΎ Π²ΡΠΈΠ³ΡΡΠ²Π°Π΅Ρ ΠΈΠ»ΠΈ ΠΈΠ³ΡΠ° ΡΡΠ³ΡΠ°Π½Π° Π²Π½ΠΈΡΡΡ, Π²ΡΠ²ΠΎΠ΄ΡΡΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π·Π°Π²Π΅ΡΡΠ°Π΅Ρ ΡΠ°Π±ΠΎΡΡ.
ΠΠ°ΡΠ½Π΅ΠΌ Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ ΠΊ ΠΈΠ³ΡΠ΅:
def instrukciya(): print(''' ΠΡΠΈΠ²Π΅Ρ! ΠΡΠΎ ΠΈΠ³ΡΠ° "ΠΡΠ΅ΡΡΠΈΠΊΠΈ-Π½ΠΎΠ»ΠΈΠΊΠΈ". Π§ΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ Ρ ΠΎΠ΄, Π²Π²Π΅Π΄ΠΈ Π½ΠΎΠΌΠ΅Ρ ΠΊΠ»Π΅ΡΠΊΠΈ, ΠΊΡΠ΄Π° Ρ ΠΎΡΠ΅ΡΡ ΠΏΠΎΡΡΠ°Π²ΠΈΡΡ ΡΠ²ΠΎΠΉ ΡΠΈΠΌΠ²ΠΎΠ»: 0 | 1 | 2 --------- 3 | 4 | 5 --------- 6 | 7 | 8 ''')
ΠΠ³ΡΠ° Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²ΡΠ±ΠΈΡΠ°Π΅Ρ, ΠΊΡΠΎ Π΄Π΅Π»Π°Π΅Ρ ΠΏΠ΅ΡΠ²ΡΠΉ Ρ
ΠΎΠ΄. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π·Π°Π΄Π°Π΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²ΠΎΠΏΡΠΎΡ βΠΡ Ρ
ΠΎΡΠΈΡΠ΅ Π±ΡΡΡ ΠΏΠ΅ΡΠ²ΡΠΌ, ΠΊΡΠΎ ΡΠ΄Π΅Π»Π°Π΅Ρ Ρ
ΠΎΠ΄ (ΠΈΠ³ΡΠ°ΡΡ ΠΊΡΠ΅ΡΡΠΈΠΊΠ°ΠΌΠΈ)?β, Π½Π° ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠ²Π΅ΡΠΈΡΡ βΠ΄Π°β ΠΈΠ»ΠΈ βΠ½Π΅Ρβ. Π ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π° Π·Π°Π΄Π°Π²Π°ΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ Π²ΠΎΠΏΡΠΎΡ, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΏΡΠΎΡΡΠΎ vopros
, Π° ΠΏΠΎΡΠΎΠΌ ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π² ΡΠΊΠΎΠ±ΠΊΠ°Ρ
Π½Π°ΠΏΠΈΡΠ°ΡΡ Π»ΡΠ±ΠΎΠΉ ΡΠ΅ΠΊΡΡ.
Π§ΡΠΎΠ±Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎΡ Π±Π»ΠΎΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΠ½Π°ΡΠ°Π»Π° ΠΎΠ±ΡΡΠ²ΠΈΠΌ ΠΏΠ΅ΡΠ²ΡΡ ΠΎΠ±ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ΄Π΅Ρ Π·Π°Π΄Π°Π²Π°ΡΡ Π²ΠΎΠΏΡΠΎΡ ΠΈ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΠΎΡΠ²Π΅Ρ βΠ΄Π°β ΠΈΠ»ΠΈ βΠ½Π΅Ρβ:
def nachalo(vopros): otvet=None while otvet not in ('Π΄Π°','Π½Π΅Ρ'): otvet=input(question).lower() return otvet
ΠΡΠΎΡΠ°Ρ ΡΠ°ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅Ρ ΠΈΠ³ΡΠΎΠΊΠ°ΠΌ ΡΠΈΠΏ ΡΠΈΡΠ΅ΠΊ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΎΠ³ΠΎ, ΠΊΡΠΎ Ρ
ΠΎΠ΄ΠΈΡ ΠΏΠ΅ΡΠ²ΡΠΉ, ΠΈ Π±ΡΠ΄Π΅Ρ ΡΠΎΡΡΠΎΡΡΡ ΠΈΠ· ΡΠΆΠ΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ nachalo(vopros)
:
def fishki(): perviy_hod=nachalo("ΠΡ Ρ ΠΎΡΠΈΡΠ΅ Π±ΡΡΡ ΠΏΠ΅ΡΠ²ΡΠΌ, ΠΊΡΠΎ ΡΠ΄Π΅Π»Π°Π΅Ρ Ρ ΠΎΠ΄ \ (ΠΈΠ³ΡΠ°ΡΡ ΠΊΡΠ΅ΡΡΠΈΠΊΠ°ΠΌΠΈ)? ") if perviy_hod=='Π΄Π°': print('ΠΠΊΠ΅ΠΉ, ΡΡ ΠΈΠ³ΡΠ°Π΅ΡΡ ΠΊΡΠ΅ΡΡΠΈΠΊΠ°ΠΌΠΈ!') human=Π₯ comp=O else: print('ΠΠ, Ρ Π΄Π΅Π»Π°Ρ ΠΏΠ΅ΡΠ²ΡΠΉ ΠΊΡΠ΅ΡΡΠΈΠΊΠ°ΠΌΠΈ') human=O comp=Π₯ return human, comp
Π ΡΡΠΈΡ
Π΄Π²ΡΡ
ΡΡΠ½ΠΊΡΠΈΡΡ
ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΈΠΌΠ΅Π½Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
Π₯
ΠΈ O
, ΡΡΠΎΠ±Ρ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΈΡ
ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» Π² ΠΈΠ³ΡΠ΅, Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π²Π²Π΅ΡΡΠΈ ΡΡΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π½Π° Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠΌ ΡΡΠΎΠ²Π½Π΅. Π’ΠΎ Π΅ΡΡΡ ΠΎΠ±ΡΡΡΠ½ΠΈΡΡ, ΡΡΠΎ Π·Π½Π°ΡΠΈΡ X
ΠΈ O
:
ΠΠ»ΠΎΠ±Π°Π»ΡΠ½ΠΎ Π·Π°Π΄Π°Π΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅: X='X' O='0'
ΠΠ°Π»Π΅Π΅ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ΄Π΅Ρ ΡΠΏΡΠ°ΡΠΈΠ²Π°ΡΡ ΠΎ ΡΠΎΠΌ, ΠΊΡΠ΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Ρ ΠΎΡΠ΅Ρ ΠΏΠΎΡΡΠ°Π²ΠΈΡΡ ΡΠ²ΠΎΡ ΡΠΈΡΠΊΡ. ΠΠΎΠ»Π΅ Π±ΡΠ΄Π΅Ρ 3Ρ 3 ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΠΏΠΎΠ»Ρ ΡΡΠ»ΠΎΠ²Π½ΠΎ Π΄Π°Π΅ΡΡΡ ΡΠ²ΠΎΠΉ Π½ΠΎΠΌΠ΅Ρ ΠΎΡ 0 Π΄ΠΎ 8. Π’ΠΎ Π΅ΡΡΡ Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΡΠ΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²Π²Π΅Π΄Π΅Ρ Π½ΠΎΠΌΠ΅Ρ ΠΊΠ»Π΅ΡΠΊΠΈ Π΄Π»Ρ ΡΠ²ΠΎΠ΅Π³ΠΎ Ρ ΠΎΠ΄Π°.
def hod(vopros,low,high): otvet=None while otvet not in range(low,high): otvet=int(input(vopros)) return otvet
Π‘Π΄Π΅Π»Π°Π΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΠΈΠ³ΡΠΎΠ²ΡΠ΅ ΠΏΠΎΠ»Ρ:
- ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π΄Π²Π΅ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ:
RAZMER_DOSKI
ΠΈHODI
RAZMER_DOSKI
=9HODI
=' '
Π€ΡΠ½ΠΊΡΠΈΡ, ΡΠΎΠ·Π΄Π°ΡΡΠ°Ρ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· Π½ΠΎΠ²ΡΡ Π΄ΠΎΡΠΊΡ Ρ Ρ ΠΎΠ΄Π°ΠΌΠΈ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ:
def new_doska(): doska=[] for i in range(RAZMER-DOSKI): doska.append(HODI) return doska
Π’Π΅ΠΏΠ΅ΡΡ Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π΄ΠΎΡΠΊΡ Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ ΠΎΠ΄Π°:
def pokaz_doski(doska): print('\n', board[0], '|', board[1], '|', board [2]) print('---------') print('\n', board[3], '|', board[4], '|', board [5]) print('---------') print('\n', board[6], '|', board[7], '|', board [8], '\n')
ΠΠ°ΠΌ Π΅ΡΠ΅ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ, ΠΊΡΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΉΡΠΈ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ Ρ ΠΏΠ΅ΡΠ΅Π±ΠΎΡΠΎΠΌ Π²ΡΠ΅Ρ ΠΏΡΡΡΡΡ ΠΊΠ»Π΅ΡΠΎΠΊ, ΡΡΠΎΠ±Ρ Π²ΡΠ΅ Π½Π΅Π·Π°Π½ΡΡΡΠ΅ ΠΌΠ΅ΡΡΠ° Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈΡΡ Π² ΡΠΏΠΈΡΠΎΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈ Π΅ΡΡΡ βΠ΄ΠΎΡΡΡΠΏΠ½ΡΠ΅ Ρ ΠΎΠ΄Ρβ:
def dostupnie_hodi(doska): dostupnie_hodi=[] for i in range(RAZMER_DOSKI): if doska(i)== HODI: dostupnie_hodi.append(i) return dostupnie_hodi
ΠΡΠ΄Π΅Π»ΡΠ½ΠΎ ΡΠ΄Π΅Π»Π°Π΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΠΏΠΎΠ±Π΅Π΄ΠΈΡΠ΅Π»Ρ. ΠΡΠ»ΠΈ ΠΏΠΎΠ±Π΅Π΄ΠΈΡ ΠΈΠ³ΡΠΎΠΊ, ΡΡΠ°Π²ΡΡΠΈΠΉ ΠΊΡΠ΅ΡΡΠΈΠΊΠΈ, ΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ Π²ΡΠ΄Π°ΡΡ X
, Π΅ΡΠ»ΠΈ ΠΏΠΎΠ±Π΅Π΄ΠΈΡΠ΅Π»Ρ ΠΈΠ³ΡΠ°Π» Π½ΠΎΠ»ΠΈΠΊΠ°ΠΌΠΈ β 0
, Π½ΠΈΡΡΡ Π·Π°Π΄Π°Π΅ΡΡΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠΉ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠΎΠΉ NICHYA='ΠΠΈΡΡΡ'
, Π΅ΡΠ»ΠΈ ΠΈΠ³ΡΠ° Π΅ΡΠ΅ Π½Π΅ Π΄ΠΎΡΠ»Π° Π΄ΠΎ ΠΊΠΎΠ½ΡΠ°, ΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ Π²ΡΠ΄Π°ΡΡ None
. ΠΡΡΡ ΡΠΏΠΎΡΠΎΠ± ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΠΎΠ±Π΅Π΄Ρ ΡΠ΅ΡΠ΅Π· ΠΏΠ΅ΡΠ΅Π±ΠΎΡ Π²ΡΠ΅Ρ
Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ
Π½Π°Π±ΠΎΡΠΎΠ² ΠΈΠ· ΡΡΠ΅Ρ
ΠΊΠ»Π΅ΡΠΎΠΊ, ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΡΡ
ΠΈΠ³ΡΠΎΠΊ ΡΡΠΈΡΠ°Π΅ΡΡΡ ΠΏΠΎΠ±Π΅Π΄ΠΈΡΠ΅Π»Π΅ΠΌ:
def winner(doska): VAR_POBED=((0,1,2), (3,4,5), (6,7,8), (0,3,6), (1,4,7), (2,5,8), (0,4,8), (2,4,6)) for i in varianti_pobed: if doska[i[0]]==doska[i[1]]==doska[i[2]]!=HODI: winner=doska[i[0]] return winner if HODI not in doska: return NICHYA return None
Π‘Π»Π΅Π΄ΡΡΡΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΡΡΠΈΡΡΠ²Π°Π΅Ρ Ρ ΠΎΠ΄Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π½ΡΠΆΠ½ΠΎ ΡΠ½Π°ΡΠ°Π»Π° ΠΏΠΎΠ½ΡΡΡ, ΠΊΡΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΉΡΠΈ, Π·Π°ΡΠ΅ΠΌ ΠΎΠΆΠΈΠ΄Π°Π΅ΡΡΡ Π²Π²ΠΎΠ΄ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠΈΡΠ»Π° ΠΈΠ· Π΄ΠΎΡΡΡΠΏΠ½ΡΡ . Π€ΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π΄ΠΎΡΠΊΡ ΠΈ ΡΠΈΠΏ ΡΠΈΡΠ΅ΠΊ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. Π ΠΈΡΠΎΠ³Π΅ ΡΠ°Π±ΠΎΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π΄Π΅Π»Π°Π΅Ρ Ρ ΠΎΠ΄:
def human_hod(doska,human): dostupnie=dostupnie_hodi(doska) hod=None while hod not in dostupnie: hod=hod('Π’Π²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ Ρ ΠΎΠ΄ΠΈΡΡ. ΠΠ°ΠΏΠΈΡΠΈ Π½ΠΎΠΌΠ΅Ρ ΠΏΠΎΠ»Ρ 0-8: ',\ 0,RAZMER_DOSKI) if hod not in dostupnie: print('ΠΠΎΠ»Π΅ Π·Π°Π½ΡΡΠΎ. ΠΠ°ΠΏΠΈΡΠΈ Π΄ΡΡΠ³ΠΎΠΉ Π½ΠΎΠΌΠ΅Ρ: ') print('Π‘ΡΠΏΠ΅Ρ!') return hod
ΠΡΠΈΡΠ»ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ°ΠΌΠΎΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎΠΉ Π΄Π»Ρ ΠΌΠ΅Π½Ρ ΡΡΠ½ΠΊΡΠΈΠΈ β ΡΡΠΎ Ρ ΠΎΠ΄Ρ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°. ΠΡΠΆΠ½ΠΎ, ΡΡΠΎΠ±Ρ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ Π΄Π΅Π»Π°Π» βΡ ΠΎΡΠΎΡΠΈΠ΅β Ρ ΠΎΠ΄Ρ, ΡΡΠ°ΡΠ°Π»ΡΡ Π²ΡΠΈΠ³ΡΠ°ΡΡ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. Π₯ΠΎΠ΄ΠΈΡΡ Π½Π°ΡΠ³Π°Π΄ ΠΌΠΎΠΆΠ½ΠΎ, Π΅ΡΠ»ΠΈ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ Π±ΡΠ΄Π΅Ρ Π²ΡΠ±ΠΈΡΠ°ΡΡ Π»ΡΠ±ΠΎΠ΅ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ Π½Π° ΠΏΠΎΠ»Π΅. ΠΠΎ ΡΠΎΠ³Π΄Π° Π΅ΠΌΡ Π±ΡΠ΄Π΅Ρ ΡΡΡΠ΄Π½ΠΎ Π²ΡΠΈΠ³ΡΠ°ΡΡ.
Π§ΡΠΎΠ±Ρ Π½Π΅ βΠΈΡΠΏΠΎΡΡΠΈΡΡβ ΠΈΡΡ ΠΎΠ΄Π½ΡΡ Π΄ΠΎΡΠΊΡ, ΠΎΠΏΡΡΠ½ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ ΡΠΎΠ²Π΅ΡΡΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π²Π½ΡΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ βΠΊΠΎΠΏΠΈΡβ Π΄ΠΎΡΠΊΠΈ, Π² ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ ΠΈ Π±ΡΠ΄Π΅ΠΌ Π²Π½ΠΎΡΠΈΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ:
def comp_hod(doska,comp,human): doska=doska[:]
Π§ΡΠΎΠ±Ρ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ Π½Π΅ Ρ ΠΎΠ΄ΠΈΠ» βΠΎΡ Π±Π°Π»Π΄Ρβ, ΡΡΡΠ΅ΠΌ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ:
- βΠ»ΡΡΡΠ΅Π΅β ΠΏΠΎΠ»Π΅ β ΠΏΠΎ ΡΠ΅Π½ΡΡΡ;
- Π΅ΡΠ»ΠΈ ΡΠ΅Π½ΡΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΏΠΎΠ»Π΅ ΡΠΆΠ΅ Π·Π°Π½ΡΡΠΎ, ΡΠΎ βΠ»ΡΡΡΠΈΠΌΠΈβ ΡΡΠΈΡΠ°ΡΡΡΡ ΡΠ³Π»ΠΎΠ²ΡΠ΅ ΠΏΠΎΠ»Ρ;
- ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ Ρ ΠΎΠ΄ΠΈΡ Π² βΠ»ΡΡΡΠ΅Π΅β ΠΈΠ· ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΡΡ ΠΌΠ΅ΡΡ Π½Π° ΠΏΠΎΠ»Π΅.
ΠΡΡΡΠΈΠ΅ ΠΏΠΎΠ»Ρ Π·Π°Π΄Π°ΡΡΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠΎΠΉ Π²Π½ΡΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ:
BEST_HODI=(4,0,2,6,8,1,3,5,7)
Π ΠΈΡΠΎΠ³Π΅ Π²ΡΡ ΡΡΠ½ΠΊΡΠΈΡ Ρ ΠΎΠ΄ΠΎΠ² ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ° ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ ΡΠ°ΠΊΠΎΠΉ:
def comp_hod(doska,comp,human): doska=doska[:] BEST_HODI=(4,0,2,6,8,1,3,5,7) print('ΠΠΎΠΉ Ρ ΠΎΠ΄: ') for i in dostupnie_hodi(doska): doska[i]=comp if winner(doska)==comp: print(hod) return hod doska[i]=HODI for j in dostupnie_hodi(doska): doska[j]=human if winner(doska)==human: print(hod) return hod doska[j]=HODI for k in dostupnie_hodi(doska): print(k) return k
ΠΡΠΆΠ½Π° Π΅ΡΠ΅ ΠΎΠ΄Π½Π° ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ΄Π΅Ρ Π΄Π°Π²Π°ΡΡ ΡΠ΄Π΅Π»Π°ΡΡ Ρ ΠΎΠ΄ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌΡ ΠΈΠ³ΡΠΎΠΊΡ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡ ΠΊΠ°ΠΊΠΈΠΌΠΈ ΡΠΈΡΠΊΠ°ΠΌΠΈ Π±ΡΠ» ΡΠ΄Π΅Π»Π°Π½ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ Ρ ΠΎΠ΄ ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Ρ Ρ ΠΎΠ΄ Π΄ΡΡΠ³ΠΈΠΌ ΡΠΈΡΠΊΠ°ΠΌ:
def next_hod(hod): if hod==X: return O else: return X
ΠΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π΅ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΡΠ²ΠΈΡ ΠΏΠΎΠ±Π΅Π΄ΠΈΡΠ΅Π»Ρ ΠΈ ΠΏΠΎΠ·Π΄ΡΠ°Π²ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Ρ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΠ΅ΠΌ ΠΈΠ³ΡΡ. ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠ°ΠΌΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ ΠΈΠ³ΡΡ:
def pozdrav_pobeditela(pobeditel,comp,human): if pobeditel!=NICHYA: print('Π‘ΠΎΠ±ΡΠ°Π½Π° Π»ΠΈΠ½ΠΈΡ ', pobeditel) else: print(NICHYA) if pobeditel==comp: print('/n ΠΠΎΠΌΠΏΡΡΡΠ΅Ρ Π²ΡΠΈΠ³ΡΠ°Π»!') elif pobeditel==human: print('Π’Ρ ΠΏΠΎΠ±Π΅Π΄ΠΈΠ»!') elif pobeditel==NICHYA: print(NICHYA)
ΠΠΎΠ³Π΄Π° Ρ Π½Π°Ρ Π΅ΡΡΡ Π²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, Π½ΡΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°ΡΡ ΠΎΠ±ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ main()
, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡ Π²ΡΠ΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π² Π΅Π΄ΠΈΠ½ΠΎΠ΅ ΡΠ΅Π»ΠΎΠ΅:
def main(): instrukciya() comp,human=fishki() hod=X doska=new_doska() pokaz_doski(doska) while not winner(doska): if i==human: hod=human_hod(doska,human) doska[hod]=human else: hod=comp_hod(doska,comp,human) doska[hod]=comp pokaz_doski(doska) i=next_hod(hod) pobeditel=winner(doska) pozdrav_pobeditela(pobeditel,comp,human)
ΠΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Ρ ΠΈΠ³ΡΠΎΠΉ βΠΡΠ΅ΡΡΠΈΠΊΠΈ-ΠΠΎΠ»ΠΈΠΊΠΈβ, Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π²ΡΠ΅Π³ΠΎ Π΄Π²Π΅ ΡΡΡΠΎΠΊΠΈ ΠΊΠΎΠ΄Π°:
main() input('\n ΠΠ°ΠΆΠΌΠΈ Entr, ΡΡΠΎΠ±Ρ Π²ΡΠΉΡΠΈ')
ΠΠ°ΠΏΡΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΠΎΠΊΠ°Π·Π°Π», ΡΡΠΎ ΠΈΠ³ΡΠ° Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΊΠ°ΠΊ Π½Π°Π΄ΠΎ. ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ Π»ΠΎΠ³ΠΈΠΊΠ° ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π²Π΅ΡΠ½Π°Ρ, Π² ΡΠ°ΠΌΠΈΡ ΡΡΠ½ΠΊΡΠΈΡΡ Π³Π΄Π΅-ΡΠΎ Π΄ΠΎΠΏΡΡΠ΅Π½Ρ ΠΎΡΠΈΠ±ΠΊΠΈ. ΠΡΠΆΠ½ΠΎ ΠΈΡ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ.
ΠΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΡΠΈΠ±ΠΎΠΊ Π² ΠΈΠ³ΡΠ΅ βΠΡΠ΅ΡΡΠΈΠΊΠΈ-Π½ΠΎΠ»ΠΈΠΊΠΈβ.
Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈΠ³ΡΡ ΠΈ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΎΠΊΠ°Π·Π°Π»ΠΎΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΡΡΠ΄Π½ΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅ΠΉ, ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ βΠ½Π° Π³Π»Π°Π·β.Β ΠΠ°ΠΊ ΠΈΡΠΊΠ°ΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅? ΠΠ°Π²Π΅ΡΠ½ΠΎΠ΅, Π»ΡΡΡΠΈΠΉ ΡΠΏΠΎΡΠΎΠ± β ΡΡΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°Π±ΠΎΡΡ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ. ΠΠ°ΠΏΡΡΡΠΈΠΌ ΠΊΠ°ΠΆΠ΄ΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, Π³Π΄Π΅ Π΅ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ:
Π€ΡΠ½ΠΊΡΠΈΡ instrukciya()
ΡΠ°Π±ΠΎΡΠ°Π΅Ρ:
ΠΡΠΈΠ²Π΅Ρ! ΠΡΠΎ ΠΈΠ³ΡΠ° "ΠΡΠ΅ΡΡΠΈΠΊΠΈ-Π½ΠΎΠ»ΠΈΠΊΠΈ". Π§ΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ Ρ ΠΎΠ΄, Π²Π²Π΅Π΄ΠΈ Π½ΠΎΠΌΠ΅Ρ ΠΊΠ»Π΅ΡΠΊΠΈ, ΠΊΡΠ΄Π° Ρ ΠΎΡΠ΅ΡΡ ΠΏΠΎΡΡΠ°Π²ΠΈΡΡ ΡΠ²ΠΎΠΉ ΡΠΈΠΌΠ²ΠΎΠ»: 0 | 1 | 2 --------- 3 | 4 | 5 --------- 6 | 7 | 8 >>>
ΠΠ°ΠΏΡΡΠΊΠ°Π΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ fishki()
, ΠΈ Ρ Π½Π΅ΠΉ Π²ΡΠ΅ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅:
ΠΡ Ρ ΠΎΡΠΈΡΠ΅ Π±ΡΡΡ ΠΏΠ΅ΡΠ²ΡΠΌ, ΠΊΡΠΎ ΡΠ΄Π΅Π»Π°Π΅Ρ Ρ ΠΎΠ΄ (ΠΈΠ³ΡΠ°ΡΡ ΠΊΡΠ΅ΡΡΠΈΠΊΠ°ΠΌΠΈ)? Π΄Π° ΠΠΊΠ΅ΠΉ, ΡΡ ΠΈΠ³ΡΠ°Π΅ΡΡ ΠΊΡΠ΅ΡΡΠΈΠΊΠ°ΠΌΠΈ! >>>
Π ΡΡΠ½ΠΊΡΠΈΠΈ hod(low,high)
Ρ ΡΠ΅ΡΠΈΠ»Π° Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ Π²ΠΎΠΏΡΠΎΡ, ΠΈ Π΅Π΅ Π·Π°ΠΏΡΡΠΊ ΡΠΎΠΆΠ΅ ΠΏΡΠΎΡΠ΅Π» ΡΡΠΏΠ΅ΡΠ½ΠΎ ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ 0-8 hod(0,8)
:
ΠΠ΅Π»Π°ΠΉ ΡΠ²ΠΎΠΉ Ρ ΠΎΠ΄ - Π½Π°ΠΏΠΈΡΠΈ Π½ΠΎΠΌΠ΅Ρ ΠΏΠΎΠ»Ρ (0-8): 2 >>>
ΠΠ°ΠΏΡΡΠΊ ΡΡΠ½ΠΊΡΠΈΠΈ new_doska()
ΠΎΡΠΈΠ±ΠΎΠΊ Π½Π΅ Π²ΡΠ΄Π°Π», Π½ΠΎ ΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΡΠΎΠΆΠ΅, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ ΡΡΠΎΡ Π±Π»ΠΎΠΊ ΠΏΡΡΡΠΎΠΉ.
Π‘ΠΏΡΡΡΡ Π΅ΡΠ΅ ΠΏΠ°ΡΡ ΡΠ°ΡΠΎΠ² Π±Π»ΡΠΆΠ΄Π°Π½ΠΈΠΉ ΠΏΠΎ ΠΊΠΎΠ΄Ρ, ΠΏΠΎΠΈΡΠΊΠ° ΠΎΡΠΈΠ±ΠΎΠΊ, Π·Π°ΠΏΡΡΠΊΠΎΠ² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ Π³ΡΡΠΏΠΏ ΡΡΠ½ΠΊΡΠΈΠΉ, Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ»Π°, ΡΡΠΎ Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΌΠ΅ΡΡΠ°Ρ Π·Π½Π°ΠΊ βΠΊΡΠ΅ΡΡΠΈΠΊΠ°β X Π±ΡΠ» Π½Π°ΠΏΠΈΡΠ°Π½ ΡΠ°Π·Π½ΡΠΌΠΈ ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΊΠΎΠ΅-Π³Π΄Π΅ ΠΊΡΠ΅ΡΡΠΈΠΊ ΡΡΠΎΡΠ» Π² ΠΊΠ°Π²ΡΡΠΊΠ°Ρ . ΠΡΠ΅ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠ΅Π»ΠΎΡΠΈ Π±ΡΠ»ΠΈ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½Ρ. ΠΠΎΠ½Π΅ΡΠ½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΊΠΎΠ΄Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ (ΠΊΠΎΡΠΎΡΠ°Ρ Π·Π°ΡΠ°Π±ΠΎΡΠ°Π»Π° ΠΈ Π²ΡΠΈΠ³ΡΠ°Π»Π° Ρ ΠΌΠ΅Π½Ρ!) Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ:
X='X' O='0' RAZMER_DOSKI=9 HODI=' ' NICHYA='ΠΠΈΡΡΡ' def instrukciya(): print(''' ΠΡΠΈΠ²Π΅Ρ! ΠΡΠΎ ΠΈΠ³ΡΠ° "ΠΡΠ΅ΡΡΠΈΠΊΠΈ-Π½ΠΎΠ»ΠΈΠΊΠΈ". Π§ΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ Ρ ΠΎΠ΄, Π²Π²Π΅Π΄ΠΈ Π½ΠΎΠΌΠ΅Ρ ΠΊΠ»Π΅ΡΠΊΠΈ, ΠΊΡΠ΄Π° Ρ ΠΎΡΠ΅ΡΡ ΠΏΠΎΡΡΠ°Π²ΠΈΡΡ ΡΠ²ΠΎΠΉ ΡΠΈΠΌΠ²ΠΎΠ»: 0 | 1 | 2 --------- 3 | 4 | 5 --------- 6 | 7 | 8 ''') def nachalo(vopros): otvet=None while otvet not in ('Π΄Π°','Π½Π΅Ρ'): otvet=input(vopros).lower() return otvet def fishki(): perviy_hod=nachalo("ΠΡ Ρ ΠΎΡΠΈΡΠ΅ Π±ΡΡΡ ΠΏΠ΅ΡΠ²ΡΠΌ, ΠΊΡΠΎ ΡΠ΄Π΅Π»Π°Π΅Ρ Ρ ΠΎΠ΄ \ (ΠΈΠ³ΡΠ°ΡΡ ΠΊΡΠ΅ΡΡΠΈΠΊΠ°ΠΌΠΈ)? ") if perviy_hod=='Π΄Π°': print('ΠΠΊΠ΅ΠΉ, ΡΡ ΠΈΠ³ΡΠ°Π΅ΡΡ ΠΊΡΠ΅ΡΡΠΈΠΊΠ°ΠΌΠΈ!') human=X comp=O else: print('ΠΠ, Ρ Π΄Π΅Π»Π°Ρ ΠΏΠ΅ΡΠ²ΡΠΉ Ρ ΠΎΠ΄ ΠΊΡΠ΅ΡΡΠΈΠΊΠ°ΠΌΠΈ') human=O comp=X return comp, human def hod_number(low,high): otvet=None while otvet not in range(low,high): otvet=int(input("ΠΠ΅Π»Π°ΠΉ ΡΠ²ΠΎΠΉ Ρ ΠΎΠ΄ - Π½Π°ΠΏΠΈΡΠΈ Π½ΠΎΠΌΠ΅Ρ ΠΏΠΎΠ»Ρ (0-8): ")) return otvet def new_doska(): doska=[] for i in range(RAZMER_DOSKI): doska.append(HODI) return doska def pokaz_doski(doska): print('\n', doska[0], '|', doska[1], '|', doska [2]) print('---------') print('\n' , doska[3], '|', doska[4], '|', doska [5]) print('---------') print('\n', doska[6], '|', doska[7], '|', doska [8], '\n') def dostupnie_hodi(doska): dostupnie_hodi=[] for i in range(RAZMER_DOSKI): if doska[i]== HODI: dostupnie_hodi.append(i) return dostupnie_hodi def winner(doska): VAR_POBED=((0,1,2), (3,4,5), (6,7,8), (0,3,6), (1,4,7), (2,5,8), (0,4,8), (2,4,6)) for i in VAR_POBED: if doska[i[0]]==doska[i[1]]==doska[i[2]]!=HODI: winner=doska[i[0]] return winner if HODI not in doska: return NICHYA return None def human_hod(doska,human): dostupnie=dostupnie_hodi(doska) hod=None while hod not in dostupnie: hod=hod_number(0,RAZMER_DOSKI) if hod not in dostupnie: print('ΠΠΎΠ»Π΅ Π·Π°Π½ΡΡΠΎ. ΠΠ°ΠΏΠΈΡΠΈ Π΄ΡΡΠ³ΠΎΠΉ Π½ΠΎΠΌΠ΅Ρ: ') print('Π‘ΡΠΏΠ΅Ρ!') return hod def comp_hod(doska,comp,human): doska=doska[:] BEST_HODI=(4,0,2,6,8,1,3,5,7) print('ΠΠΎΠΉ Ρ ΠΎΠ΄: ') for i in dostupnie_hodi(doska): doska[i]=comp if winner(doska)==comp: print(i) return i doska[i]=HODI for j in dostupnie_hodi(doska): doska[j]=human if winner(doska)==human: print(j) return j doska[j]=HODI for k in dostupnie_hodi(doska): print(k) return k def next_ochered(ochered): if ochered==X: return O else: return X def pozdrav_pobeditela(pobeditel,comp,human): if pobeditel!=NICHYA: print('Π‘ΠΎΠ±ΡΠ°Π½Π° Π»ΠΈΠ½ΠΈΡ ', pobeditel) else: print(NICHYA) if pobeditel==comp: print('ΠΠΎΠΌΠΏΡΡΡΠ΅Ρ Π²ΡΠΈΠ³ΡΠ°Π»!') elif pobeditel==human: print('Π’Ρ ΠΏΠΎΠ±Π΅Π΄ΠΈΠ»!') elif pobeditel==NICHYA: print(NICHYA) def main(): instrukciya() comp,human=fishki() ochered=X doska=new_doska() pokaz_doski(doska) while not winner(doska): if ochered==human: hod=human_hod(doska,human) doska[hod]=human else: hod=comp_hod(doska,comp,human) doska[hod]=comp pokaz_doski(doska) ochered=next_ochered(ochered) pobeditel=winner(doska) pozdrav_pobeditela(pobeditel,comp,human) main() input('\n ΠΠ°ΠΆΠΌΠΈ Entr, ΡΡΠΎΠ±Ρ Π²ΡΠΉΡΠΈ')
ΠΠΎΠΉ ΠΏΠ΅ΡΠ²ΡΠΉ ΠΌΠ°ΡΡ Π² ΠΊΡΠ΅ΡΡΠΈΠΊΠΈ-Π½ΠΎΠ»ΠΈΠΊΠΈ Ρ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠΎΠΌ Π²ΡΠ³Π»ΡΠ΄Π΅Π» ΡΠ°ΠΊ:
ΠΡΠΈΠ²Π΅Ρ! ΠΡΠΎ ΠΈΠ³ΡΠ° "ΠΡΠ΅ΡΡΠΈΠΊΠΈ-Π½ΠΎΠ»ΠΈΠΊΠΈ". Π§ΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ Ρ ΠΎΠ΄, Π²Π²Π΅Π΄ΠΈ Π½ΠΎΠΌΠ΅Ρ ΠΊΠ»Π΅ΡΠΊΠΈ, ΠΊΡΠ΄Π° Ρ ΠΎΡΠ΅ΡΡ ΠΏΠΎΡΡΠ°Π²ΠΈΡΡ ΡΠ²ΠΎΠΉ ΡΠΈΠΌΠ²ΠΎΠ»: 0 | 1 | 2 --------- 3 | 4 | 5 --------- 6 | 7 | 8 ΠΡ Ρ ΠΎΡΠΈΡΠ΅ Π±ΡΡΡ ΠΏΠ΅ΡΠ²ΡΠΌ, ΠΊΡΠΎ ΡΠ΄Π΅Π»Π°Π΅Ρ Ρ ΠΎΠ΄ (ΠΈΠ³ΡΠ°ΡΡ ΠΊΡΠ΅ΡΡΠΈΠΊΠ°ΠΌΠΈ)? Π΄Π° ΠΠΊΠ΅ΠΉ, ΡΡ ΠΈΠ³ΡΠ°Π΅ΡΡ ΠΊΡΠ΅ΡΡΠΈΠΊΠ°ΠΌΠΈ! | | --------- | | --------- | | ΠΠ΅Π»Π°ΠΉ ΡΠ²ΠΎΠΉ Ρ ΠΎΠ΄ - Π½Π°ΠΏΠΈΡΠΈ Π½ΠΎΠΌΠ΅Ρ ΠΏΠΎΠ»Ρ (0-8): 4 Π‘ΡΠΏΠ΅Ρ! | | --------- | X | --------- | | ΠΠΎΠΉ Ρ ΠΎΠ΄: 0 0 | | --------- | X | --------- | | ΠΠ΅Π»Π°ΠΉ ΡΠ²ΠΎΠΉ Ρ ΠΎΠ΄ - Π½Π°ΠΏΠΈΡΠΈ Π½ΠΎΠΌΠ΅Ρ ΠΏΠΎΠ»Ρ (0-8): 5 Π‘ΡΠΏΠ΅Ρ! 0 | | --------- | X | X --------- | | ΠΠΎΠΉ Ρ ΠΎΠ΄: 3 0 | | --------- 0 | X | X --------- | | ΠΠ΅Π»Π°ΠΉ ΡΠ²ΠΎΠΉ Ρ ΠΎΠ΄ - Π½Π°ΠΏΠΈΡΠΈ Π½ΠΎΠΌΠ΅Ρ ΠΏΠΎΠ»Ρ (0-8): 2 Π‘ΡΠΏΠ΅Ρ! 0 | | X --------- 0 | X | X --------- | | ΠΠΎΠΉ Ρ ΠΎΠ΄: 6 0 | | X --------- 0 | X | X --------- 0 | | Π‘ΠΎΠ±ΡΠ°Π½Π° Π»ΠΈΠ½ΠΈΡ 0 ΠΠΎΠΌΠΏΡΡΡΠ΅Ρ Π²ΡΠΈΠ³ΡΠ°Π»! ΠΠ°ΠΆΠΌΠΈ Entr, ΡΡΠΎΠ±Ρ Π²ΡΠΉΡΠΈ
Β
ΠΠ³ΡΠ°Π΅ΠΌ Π² ΠΡΠ΅ΡΡΠΈΠΊΠΈ-ΠΠΎΠ»ΠΈΠΊΠΈ Ρ Python ΠΈ GTK / Π₯Π°Π±Ρ
ΠΡΠ΅Π΄ΠΈΡΠ»ΠΎΠ²ΠΈΠ΅
ΠΠΎΠ²ΡΠΉ Π±Π»ΠΎΠ³ GTK+ ΠΏΠΎΡΠ°Π΄ΠΎΠ²Π°Π» ΡΡΠ°ΡΡΡΠΉ Π΄Π»Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΡ ΠΈ Ρ ΡΠ΅ΡΠΈΠ» ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ ΡΡΠΎ-ΡΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΠΎΠ΅, ΡΠ΅ΠΌ C++/C. Python ΠΎΠΊΠ°Π·Π°Π»ΡΡ ΠΊΠ°ΠΊ Π½Π΅Π»ΡΠ·Ρ ΠΊΡΡΠ°ΡΠΈ. ΠΠ±ΡΡΠΌ ΠΊΠΎΠ΄Π° Π½Π° Python Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ GTK Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΌΠ΅Π½ΡΡΠ΅ ΡΠ΅ΠΌ Π½Π° C++, ΡΡΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ ΡΠ°Π΄ΠΎΠ²Π°ΡΡ.
PyGTK
PyGTK β Π±ΠΈΠ½Π΄ΠΈΠ½Π³ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ GTK Π΄Π»Ρ ΡΠ·ΡΠΊΠ° Python, PyGTK ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ ΠΎΡΠΊΡΡΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°Ρ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ IM Gajim). ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΡΠ΅Π½Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Π° Π΄Π»Ρ Python ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ², ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΏΡΠΎΡΡΠ° Π² ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΈ ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠΊΡΡΠ²Π°Π΅Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ GTK.
ΠΠΎΠ΄ ΠΊΠ°ΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΡΠΈΠΌΠ΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
ΠΠ»Ρ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ PyGTK Ρ ΡΠ΅ΡΠΈΠ» Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ β ΠΈΠ³ΡΡ ΠΡΠ΅ΡΡΠΈΠΊΠΈ-ΠΠΎΠ»ΠΈΠΊΠΈ.
ΠΠΊΠ½ΠΎ ΠΈΠ³ΡΡ Π±ΡΠ΄Π΅Ρ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΡΠΌ β ΠΊΠ²Π°Π΄ΡΠ°Ρ ΠΈΠ· ΠΊΠ½ΠΎΠΏΠΎΠΊ 3×3.
ΠΠΊΠ½ΠΎ ΠΈΠ³ΡΡ:
ΠΡΠ°ΠΊ ΠΏΡΠΈΡΡΡΠΏΠΈΠΌ ΠΊ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ. Π ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π΅ΡΡΡ ΠΏΠ°ΡΠ° ΠΊΠ»Π°ΡΡΠΎΠ²: XO_Field ΠΈ XO_Win, ΠΏΠ΅ΡΠ²ΡΠΉ Ρ ΡΠ°Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΏΠΎΠ»Π΅, Π²ΡΠΎΡΠΎΠΉ ΡΠΎΠ·Π΄Π°ΡΡ GUI Π΄Π»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΡΠΎΠ±ΡΡΠΈΡ.
Π― ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» Π΄Π»Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΌΠΎΠ΄ΡΠ»Ρ pygtk, ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠΉ ΠΈΠ· ΠΏΠ°ΠΊΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ° Π² Ubuntu, Π½Π° Π΄ΡΡΠ³ΠΈΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ ΡΡΠΎΠΈΡ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΏΠ°ΠΊΠ΅ΡΠ°ΠΌΠΈ ΠΈΠ»ΠΈ python easy-install, Π° Π΄Π»Ρ Windows Π΅ΡΡΡ ΠΈΠ½ΡΡΠ°Π»Π»ΡΡΠΎΡ.
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΌΠΎΠ΄ΡΠ»Ρ pygtk Π²Π΅ΡΡΠΈΠΈ 2.0 ΠΈΠ»ΠΈ ΡΡΠ°ΡΡΠ΅:
import pygtk
pygtk.require('2.0')
import gtk
Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΏΡΠΎΡΡΠΎΠ΅ ΠΎΠΊΠ½ΠΎ, ΠΏΠΎ Π·Π°ΠΊΡΡΡΠΈΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π±ΡΠ΄Π΅ΠΌ ΠΏΡΠ΅ΡΡΠ²Π°ΡΡ ΠΈ ΡΠΈΠΊΠ» ΡΠΎΠ±ΡΡΠΈΠΉ GTK. Π€ΡΠ½ΠΊΡΠΈΡ destroy Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π° ΡΡΡΡ ΠΏΠΎΠ·ΠΆΠ΅.
self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
self.window.connect("destroy", self.destroy)
self.window.set_title("ΠΡΠ΅ΡΡΠΈΠΊΠΈ-ΠΠΎΠ»ΠΈΠΊΠΈ.py!")
self.window.set_border_width(10)
self.window.set_size_request(400,400)
ΠΠ»Ρ ΠΎΠΊΠ½Π° Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΎΠΉ ΠΈΠ· ΡΡΡΡ
ΡΡΡΠΎΠΊ Ρ Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½ΠΎΠΉ.
Π’Π°ΠΊ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π±ΡΠ΄ΡΡ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Ρ ΠΊΠ°ΠΊ ΡΠ°Π· Π² Π²ΠΈΠ΄Π΅ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ° 3×3. ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· ΠΊΠ½ΠΎΠΏΠΎΠΊ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΡΠΎΠ±ΡΡΠΈΡ Β«clickedΒ», ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΡ
ΠΎΠΆ Π½Π° ΡΠΈΠ³Π½Π°Π»Ρ ΠΈ ΡΠ»ΠΎΡΡ Π² Qt.
self.vbox = gtk.VBox(False,0)
self.window.add(self.vbox)
for i in range(3):
box = gtk.HBox(False,0)
self.boxes.append(box)
for j in range(3):
self.buttons[i].append(self.create_button(box))
self.buttons[i][j].connect("clicked",self.on_btn_click,i,j)
self.vbox.pack_start(box,True,True,0)
box.show()
Π€ΡΠ½ΠΊΡΠΈΡ, ΡΠΎΠ·Π΄Π°ΡΡΠ°Ρ ΠΊΠ½ΠΎΠΏΠΊΡ:
def create_button(self,box):
button = gtk.Button(self.field.chr)
box.pack_start(button,True,True,0)
button.show()
return button
ΠΠ°ΠΏΡΡΠΊ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π° ΡΠΎΠ±ΡΡΠΈΠΉ GTK ΠΈ ΡΠ½ΠΈΡΡΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠΊΠ½Π°:
def main(self):
gtk.main()
def destroy(self, widget, data=None):
gtk.main_quit()
ΠΠΎ Π½Π°ΠΆΠ°ΡΠΈΡ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π½Π°ΠΊΠ° Π² ΡΠΊΠ°Π·Π°Π½Π½ΡΡ ΠΏΠΎΠ·ΠΈΡΠΈΡ ΠΈ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ Ρ ΠΎΠ΄Π° ΠΊ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌΡ ΠΈΠ³ΡΠΎΠΊΡ, Π΅ΡΠ»ΠΈ Π΅ΡΡ Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½ ΠΏΠΎΠ±Π΅Π΄ΠΈΡΠ΅Π»Ρ. ΠΡΠ»ΠΈ ΠΈΠ³ΡΠ° Π·Π°Π²Π΅ΡΡΠ΅Π½Π°, ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΎΠΊΠ½Π°.
Π‘Π°ΠΌΠ° ΠΈΠ³ΡΠ° Π² ΠΡΠ΅ΡΡΠΈΠΊΠΈ-ΠΠΎΠ»ΠΈΠΊΠΈ ΠΈ Π΅Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΡΠΈΠ²ΠΈΠ°Π»ΡΠ½Π°, ΡΡΡΠ»ΠΊΠ° Π½Π° ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π° Π½ΠΈΠΆΠ΅. ΠΠΎΠ»ΡΡΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΠ΅Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ°ΠΌ ΡΠΈΠΊΠ» ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Python Π² ΡΠ²ΡΠ·ΠΊΠ΅ Ρ GTK, ΡΠ°ΠΊ Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ±ΠΎΡΡΠΈΠΊ ΠΌΡΡΠΎΡΠ° ΠΏΡΠΈ ΡΠ±ΠΎΡΠΊΠ΅ ΡΡΡΠ»ΠΎΠΊ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡΡ GTK ΡΠ°ΠΊΠΆΠ΅ Π²ΡΠ·ΡΠ²Π°Π΅Ρ Π΄Π΅ΡΡΡΡΠΊΡΠΎΡΡ Π΄Π»Ρ Π½ΠΈΡ , ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ UI ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΡΠ»ΠΎΠΊ Π½Π° ΡΠ΅ΡΡΡΡΡ.
P.S.
ΠΡΡΡΠΈΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ Π±ΡΠ»ΠΎ Π±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ GtkTable (ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Π΄Π»Ρ Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ² ΠΏΠΎ ΡΠ΅ΡΠΊΠ΅) Ρ 3 ΡΡΡΠΎΠΊΠ°ΠΌΠΈ ΠΈ 3 ΡΡΠΎΠ»Π±ΡΠ°ΠΌΠΈ, Π½ΠΎ ΠΊΠ°ΠΊ-ΡΠΎ Π²ΡΠΏΠΎΠΌΠ½ΠΈΠ» ΠΎ Π½ΡΠΌ ΠΏΠΎΠ·Π΄Π½ΠΎ.
Π‘ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ API GTK ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅ΡΡΡ, ΠΊΠ°ΠΊ Π±ΡΠ»ΠΎ Π·Π°ΠΌΠ΅ΡΠ΅Π½ΠΎ Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ
, Π΅ΡΡΡ ΡΠΆΠ΅ Π±ΠΈΠ½Π΄ΠΈΠ½Π³ Π΄Π»Ρ gtk 3. Π‘ΡΠΎΠΈΡ ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎ ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄ΠΈΡΡ Π½Π° Π½Π΅Π³ΠΎ, Π½ΠΎ Π½Π΅ Π΄ΠΎ ΠΊΠΎΠ½ΡΠ° ΡΡΠ΅Π½ Π²ΠΎΠΏΡΠΎΡ Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ gtk 3 Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°Ρ
, ΠΎΡΠ»ΠΈΡΠ½ΡΡ
ΠΎΡ linux.
ΠΠ΅ΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΏΡΠΈΠΌΠ΅ΡΠ°
ΠΡΡΠΎΡΠ½ΠΈΠΊΠΈ
- PyGTK Π½Π° Wiki
- Π‘Π°ΠΉΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° PyGTK
- Π ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠ΅ ΠΈ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ°Ρ
ΠΠ»Π°Π²Π° 10.1 ΠΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΈΠ³ΡΡ Β«ΠΡΠ΅ΡΡΠΈΠΊΠΈ-ΠΠΎΠ»ΠΈΠΊΠΈΒ».
ΠΠ°ΠΊ Π²ΡΠ΅Π³Π΄Π°, Ρ Π½Π°ΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΡΠΎΠ²Π΅ΡΡΡ Π½Π°Π±ΠΈΡΠ°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ. ΠΡΠΎ ΠΈ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ° ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ Π²Ρ Π±ΡΠ΄Π΅ΡΠ΅ Π»ΡΡΡΠ΅. ΠΠΏΡΠΎΡΠ΅ΠΌ, Π²Ρ Π²ΡΠ΅Π³Π΄Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΊΠ°ΡΠ°ΡΡ ΠΎΠ±ΡΠ°Π·Π΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅ Β«ΠΠ°Π³ΡΡΠ·ΠΊΠΈΒ«.
ΠΡΠ°ΠΊ, ΠΎΡΠΊΡΠΎΠΉΡΠ΅ Π½ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ° Python Shell, Π½Π°Π±Π΅ΡΠΈΡΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ Π½ΠΈΠΆΠ΅ ΠΊΠΎΠ΄ ΠΈ ΡΠΎΡ ΡΠ°Π½ΠΈΡΠ΅ Π² ΡΠ°ΠΉΠ»Π΅ Ρ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ βTicTacToe.pyβ ΠΠΏΡΠΎΡΠ΅ΠΌ, ΡΠ°ΠΉΠ» ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°Π·Π²Π°ΡΡ ΠΊΠ°ΠΊ Π·Π°Ρ ΠΎΡΠΈΡΠ΅. ΠΠΎ Π΅ΡΠ»ΠΈ Π²Ρ ΠΏΠΎΡΠΎΠΌ ΡΠ΅ΡΠΈΡΠ΅ ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π² *.exe β ΡΠΎΡΠΌΠ°Ρ, ΡΠΎ ΠΌΠΎΠ³ΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌΠΈ ΠΊΠΈΡΠΈΠ»Π»ΠΈΡΡ Π² Π½Π°Π·Π²Π°Π½ΠΈΠΈ.
1. #ΠΡΠ΅ΡΡΠΈΠΊΠΈ-ΠΠΎΠ»ΠΈΠΊΠΈ 2. 3. import random 4. 5. def drawBoard(board): 6. #ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ ΡΠΈΡΡΠ΅Ρ ΠΈΠ³ΡΠΎΠ²ΡΡ Π΄ΠΎΡΠΊΡ Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π½ΡΠΌΠΈ Ρ ΠΎΠ΄Π°ΠΌΠΈ 7. 8. #"ΠΠΎΡΠΊΠ°" ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΏΠΈΡΠΊΠΎΠΌ ΠΈΠ· 10 ΡΡΡΠΎΠΊ ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΈΡΡΡΡ Π΄ΠΎΡΠΊΡ Π² ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΠΎΠΉ Π³ΡΠ°ΡΠΈΠΊΠ΅ 9. print(' | |') 10. print(' ' + board[7] + ' | ' + board[8] + ' | ' + board[9]) 11. print(' | |') 12. print('---+---+---') 13. print(' | |') 14. print(' ' + board[4] + ' | ' + board[5] + ' | ' + board[6]) 15. print(' | |') 16. print('---+---+---') 17. print(' | |') 18. print(' ' + board[1] + ' | ' + board[2] + ' | ' + board[3]) 19. print(' | |') 20. 21. def inputPlayerLetter(): 22. #ΠΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΠ³ΡΠΎΠΊΡ Π²ΡΠ±ΡΠ°ΡΡ ΡΠΈΠΌΠ²ΠΎΠ», ΠΊΠΎΡΠΎΡΡΠΌ ΠΎΠ½ Ρ ΠΎΡΠ΅Ρ ΠΈΠ³ΡΠ°ΡΡ 23. #ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ Ρ Π±ΡΠΊΠ²ΠΎΠΉ ΠΈΠ³ΡΠΎΠΊΠ° Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΈ Π±ΡΠΊΠ²ΠΎΠΉ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ° Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π²ΡΠΎΡΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° 24. letter = '' 25. while not (letter == 'Π₯' or letter == 'Π'): 26. print('ΠΠ°ΠΊΠΈΠΌ Π·Π½Π°ΠΊΠΎΠΌ Π²Ρ Π±ΡΠ΄Π΅ΡΠ΅ ΠΈΠ³ΡΠ°ΡΡ? (Π₯ ΠΈΠ»ΠΈ Π)') 27. letter = input().upper() 28. 29. #ΠΠ΅ΡΠ²ΡΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ° Π²ΡΠ΅Π³Π΄Π° Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π·Π½Π°ΠΊ ΠΈΠ³ΡΠΎΠΊΠ°. 30. if letter == 'Π₯': 31. return ['Π₯', 'Π'] 32. else: 33. return ['Π', 'Π₯'] 34. 35. def whoGoesFirst(): 36. #Π‘Π»ΡΡΠ°ΠΉΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ, ΠΊΡΠΎ Π±ΡΠ΄Π΅Ρ Ρ ΠΎΠ΄ΠΈΡΡ ΠΏΠ΅ΡΠ²ΡΠΌ 37. if random.randint(0, 1) == 0: 38. return 'ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ' 39. else: 40. return 'ΠΈΠ³ΡΠΎΠΊ' 41. 42. def playAgain(): 43. #ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ True, Π΅ΡΠ»ΠΈ ΠΈΠ³ΡΠΎΠΊ Ρ ΠΎΡΠ΅Ρ ΡΡΠ³ΡΠ°ΡΡ Π΅ΡΠ΅ ΡΠ°Π·. ΠΠ½Π°ΡΠ΅ False. 44. print('ΠΡ Ρ ΠΎΡΠΈΡΠ΅ ΡΡΠ³ΡΠ°ΡΡ Π΅ΡΠ΅ ΡΠ°Π·? (Π΄Π° ΠΈΠ»ΠΈ Π½Π΅Ρ)') 45. return input().lower().startswith('Π΄') 46. 47. def makeMove(board, letter, move): 48. board[move] = letter 49. 50. def isWinner(bo, le): 51. #Π€ΡΠ½ΠΊΡΠΈΡ ΡΡΠΈΡΡΠ²Π°Π΅Ρ ΠΏΠΎΠ·ΠΈΡΠΈΡ Π½Π° Π΄ΠΎΡΠΊΠ΅ ΠΈ ΡΠ΅ΠΊΡΠΈΠΉ Ρ ΠΎΠ΄ ΠΈΠ³ΡΠΎΠΊΠ°. ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ True, Π΅ΡΠ»ΠΈ ΠΈΠ³ΡΠΎΠΊ Π²ΡΠΈΠ³ΡΠ°Π» 52. #ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ bo Π²ΠΌΠ΅ΡΡΠΎ Π΄ΠΎΡΠΊΠΈ ΠΈ le Π²ΠΌΠ΅ΡΡΠΎ ΠΏΠΎΠ»Π½ΡΡ ΠΈΠΌΠ΅Π½ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ 53. return ((bo[7] == le and bo[8] == le and bo[9] == le) or #ΠΠ΅ΡΡ Π½ΡΡ Π»ΠΈΠ½ΠΈΡ 54. (bo[4] == le and bo[5] == le and bo[6] == le) or #Π‘ΡΠ΅Π΄Π½ΡΡ Π»ΠΈΠ½ΠΈΡ 55. (bo[1] == le and bo[2] == le and bo[3] == le) or #ΠΠΈΠΆΠ½ΡΡ Π»ΠΈΠ½ΠΈΡ 56. (bo[7] == le and bo[4] == le and bo[1] == le) or #ΠΠ΅Π²Π°Ρ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½Π°Ρ Π»ΠΈΠ½ΠΈΡ 57. (bo[8] == le and bo[5] == le and bo[2] == le) or #Π¦Π΅Π½ΡΡΠ°Π»ΡΠ½Π°Ρ Π²Π΅ΡΡΠΈΠΊΠ°Π»Ρ 58. (bo[9] == le and bo[6] == le and bo[3] == le) or #ΠΠ΅ΡΡ Π½ΡΡ Π»ΠΈΠ½ΠΈΡ 59. (bo[7] == le and bo[5] == le and bo[3] == le) or #ΠΠΈΠ°Π³ΠΎΠ½Π°Π»Ρ 60. (bo[9] == le and bo[5] == le and bo[1] == le)) #ΠΠΈΠ°Π³ΠΎΠ½Π°Π»Ρ 61. 62. def getBoardCopy(board): 63. #Π‘Π΄Π΅Π»Π°Π΅ΠΌ ΠΊΠΎΠΏΠΈΡ ΠΈΠ³ΡΠΎΠ²ΠΎΠΉ Π΄ΠΎΡΠΊΠΈ ΠΈ Π²Π΅ΡΠ½Π΅ΠΌ Π΅Ρ 64. dupeBoard = [] 65. 66. for i in board: 65. dupeBoard.append(i) 67. 68. return dupeBoard 69. 70. def isSpaceFree(board, move): 71. #ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ True Π΅ΡΠ»ΠΈ Ρ ΠΎΠ΄ Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ 72. return board[move] == ' ' 73. 74. def getPlayerMove(board): 75. #ΠΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΠ³ΡΠΎΠΊΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Ρ ΠΎΠ΄ 76. move = '' 77. while move not in '1 2 3 4 5 6 7 8 9'.split() or not isSpaceFree(board, int(move)): 78. print('ΠΠ°Ρ Ρ ΠΎΠ΄ (1-9):') 79. move = input() 80. return int(move) 81. 82. def chooseRandomMoveFromList(board, movesList): 83. #ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠΉ Ρ ΠΎΠ΄ ΠΈΠ· ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ Ρ ΠΎΠ΄ΠΎΠ² 84. #ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ None Π΅ΡΠ»ΠΈ Ρ ΠΎΠ΄ΠΎΠ² Π½Π΅Ρ 85. possibleMoves = [] 86. for i in movesList: 87. if isSpaceFree(board, i): 88. possibleMoves.append(i) 89. 90. if len(possibleMoves) != 0: 91. return random.choice(possibleMoves) 92. else: 93. return None 94. 95. def getComputerMove(board, computerLetter): 96. #ΠΠΎΠ»ΡΡΠ°Π΅Ρ ΠΊΠΎΠΏΠΈΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ Π΄ΠΎΡΠΊΠΈ ΠΈ Π±ΡΠΊΠ²Ρ, ΠΊΠΎΡΠΎΡΠΎΠΉ Ρ ΠΎΠ΄ΠΈΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ. ΠΡΡ ΠΎΠ΄Ρ ΠΈΠ· ΡΡΠΎΠ³ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΊΡΠ΄Π° Π΄Π²ΠΈΠ³Π°ΡΡΡΡ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Ρ ΠΎΠ΄ 97. if computerLetter == 'Π₯': 98. playerLetter = 'Π' 99. else: 100. playerLetter = 'Π₯' 101. 102. #ΠΠ΄Π΅ΡΡ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΠ "ΠΡΠ΅ΡΡΠΈΠΊΠΈ-ΠΠΎΠ»ΠΈΠΊΠΈ" 103. #ΠΠ΅ΡΠ²ΡΠΌ ΡΠ°Π³ΠΎΠΌ Π±ΡΠ΄Π΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΠΎΠ±Π΅Π΄Ρ Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ Ρ ΠΎΠ΄Ρ 104. for i in range(1, 10): 105. copy = getBoardCopy(board) 106. if isSpaceFree(copy, i): 107. makeMove(copy, computerLetter, i) 108. if isWinner(copy, computerLetter): 109. return i 110 111. #ΠΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ, ΠΌΠΎΠΆΠ΅Ρ Π»ΠΈ ΠΈΠ³ΡΠΎΠΊ Π²ΡΠΈΠ³ΡΠ°ΡΡ Π½Π° ΡΠ»Π΅Π΄ΡΡΠ΅ΠΌ Ρ ΠΎΠ΄Ρ, ΡΡΠΎΠ±Ρ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ 112. for i in range(1, 10): 113. copy = getBoardCopy(board) 114. if isSpaceFree(copy, i): 115. makeMove(copy, playerLetter, i) 116. if isWinner(copy, playerLetter): 117. return i 118. 119. #ΠΠΎΠΏΡΡΠ°Π΅ΠΌΡΡ Π·Π°Π½ΡΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ³Π»ΠΎΠ², Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½Ρ 119. move = chooseRandomMoveFromList(board, [1, 3, 7, 9]) 120. if move != None: 121. return move 122. 123. #ΠΠ°Π½ΠΈΠΌΠ°Π΅ΠΌ ΡΠ΅Π½ΡΡ, Π΅ΡΠ»ΠΈ ΠΎΠ½ ΡΠ²ΠΎΠ±ΠΎΠ΄Π΅Π½ 124. if isSpaceFree(board, 5): 125. return 5 126. 127. #ΠΠ°Π½ΠΈΠΌΠ°Π΅ΠΌ ΠΎΠ΄Π½Ρ ΠΈΠ· Π±ΠΎΠΊΠΎΠ²ΡΡ ΠΊΠ»Π΅ΡΠΎΠΊ 128. return chooseRandomMoveFromList(board, [2, 4, 6, 8]) 129. 130. def isBoardFull(board): 131. #ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌ True, Π΅ΡΠ»ΠΈ Π²ΡΠ΅ ΠΊΠ»Π΅ΡΠΊΠΈ Π½Π° Π΄ΠΎΡΠΊΠ΅ Π±ΡΠ»ΠΈ Π·Π°Π½ΡΡΡ. ΠΠ½Π°ΡΠ΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌ False 132. for i in range(1, 10): 133. if isSpaceFree(board, i): 134. return False 135. return True 136 137. 138. print ('ΠΠ°Π²Π°ΠΉ ΡΡΠ³ΡΠ°Π΅ΠΌ Π² "ΠΡΠ΅ΡΡΠΈΠΊΠΈ-ΠΠΎΠ»ΠΈΠΊΠΈ"!') 139 140. while True: 141. #Π‘Π±ΡΠ°ΡΡΠ²Π°Π΅ΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΈΠ³ΡΠΎΠ²ΠΎΠΉ Π΄ΠΎΡΠΊΠΈ 142. theBoard = [' ']*10 143. playerLetter, computerLetter = inputPlayerLetter() 144. turn = whoGoesFirst() 145. print ('ΠΠ΅ΡΠ²ΡΠΌ Π±ΡΠ΄Π΅Ρ Ρ ΠΎΠ΄ΠΈΡΡ '+turn +'\n') 146. gameIsPlaying = True 147. 148. while gameIsPlaying: 149. if turn == 'ΠΈΠ³ΡΠΎΠΊ': 150. #Π₯ΠΎΠ΄ ΠΈΠ³ΡΠΎΠΊΠ° 151. drawBoard(theBoard) 152. move = getPlayerMove(theBoard) 153. makeMove(theBoard, playerLetter, move) 154. 155. if isWinner(theBoard, playerLetter): 156. drawBoard(theBoard) 157. print ('ΠΠΎΠ·Π΄ΡΠ°Π²Π»ΡΡ!!! ΠΡ ΠΏΠΎΠ±Π΅Π΄ΠΈΠ»ΠΈ Π² ΠΈΠ³ΡΠ΅!') 158. gameIsPlaying = False 159. else: 160. if isBoardFull(theBoard): 161. drawBoard(theBoard) 162. print('ΠΠΈΡΡΡ. Π ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ°Π· ΠΈΠ³ΡΠ°ΠΉ Π»ΡΡΡΠ΅') 163. break 164. else: 165. turn = 'ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ' 166. 167. else: 168. #Π₯ΠΎΠ΄ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ° 169. move = getComputerMove(theBoard, computerLetter) 170. makeMove(theBoard, computerLetter, move) 171. if isWinner(theBoard, computerLetter): 172. drawBoard(theBoard) 173. print('ΠΠΎΠΌΠΏΡΡΡΠ΅Ρ ΠΏΠΎΠ±Π΅Π΄ΠΈΠ»! ΠΡ ΠΏΠΎΠΈΠ³ΡΠ°Π»ΠΈ...') 174. gameIsPlaying = False 175. else: 176. if isBoardFull(theBoard): 177. drawBoard(theBoard) 178. print('ΠΠΈΡΡΡ. Π ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ°Π· ΠΈΠ³ΡΠ°ΠΉ Π»ΡΡΡΠ΅') 179. break 180. else: 181. turn = 'ΠΈΠ³ΡΠΎΠΊ' 182. 183. if not playAgain(): 185 break
ΠΠ±ΡΡΠ΄ΠΈΡΡ Π½Π° ΡΠΎΡΡΠΌΠ΅.
ΠΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ ΡΡΡΠ»ΠΊΠΎΠΉ:
ΠΠΎΠ½ΡΠ°Π²ΠΈΠ»ΠΎΡΡ ΡΡΠΎ:
ΠΡΠ°Π²ΠΈΡΡΡ ΠΠ°Π³ΡΡΠ·ΠΊΠ°…
ΠΠΎΡ ΠΎΠΆΠ΅Π΅
ΠΠ»Π°Π²Π° 10. ΠΠ³ΡΠ° Β«ΠΡΠ΅ΡΡΠΈΠΊΠΈ-ΠΠΎΠ»ΠΈΠΊΠΈΒ» Π½Π° Python 3
Π’Π΅ΠΌΡ, ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΠΌΡΠ΅ Π² ΡΡΠΎΠΉ Π³Π»Π°Π²Π΅:
- ΠΡΠΊΡΡΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΈΠ½ΡΠ΅Π»Π»Π΅ΠΊΡ
- Π‘ΠΏΠΈΡΠΎΠΊ ΡΡΡΠ»ΠΎΠΊ
- Short-Circuit Evaluation (ΠΏΠ΅ΡΠ΅Π²Π΅Π΄Ρ ΠΊΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ°Π·Π±Π΅ΡΡΡΡ ΡΡΠΎ ΡΡΠΎ π )
- ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ None (ΠΏΡΡΡΠΎΠ΅)
Π ΡΡΠΎΠΉ Π³Π»Π°Π²Π΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΈΠ³ΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π·Π½Π°ΠΊΠΎΠΌΠ° Π²ΡΠ΅ΠΌ ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ β Β«ΠΡΠ΅ΡΡΠΈΠΊΠΈ-Π½ΠΎΠ»ΠΈΠΊΠΈΒ». ΠΠ°ΠΌ ΠΏΡΠ΅Π΄ΡΡΠΎΠΈΡ ΡΡΠ³ΡΠ°ΡΡ Π² Π½Π΅Π΅ ΠΏΡΠΎΡΠΈΠ² Π½Π΅ΡΠ»ΠΎΠΆΠ½ΠΎΠ³ΠΎ ΠΈΡΠΊΡΡΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅Π»Π»Π΅ΠΊΡΠ°. ΠΡΠΊΡΡΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΈΠ½ΡΠ΅Π»Π»Π΅ΠΊΡ (Π΄Π°Π»Π΅Π΅ ΠΏΠΎ ΡΠ΅ΠΊΡΡΡ β ΠΠ), ΡΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΡΠ΅Π½ΠΈΠ²Π°Π΅Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΈΠ³ΡΠΎΠΊΠ° ΠΈ Π½Π° ΠΈΡ ΠΎΡΠ½ΠΎΠ²Π΅ Π²ΡΠ±ΠΈΡΠ°Π΅Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΡΠ°ΠΊΡΠΈΠΊΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ. Π ΡΡΠΎΠΉ ΠΈΠ³ΡΠ΅ Π½Π΅ Π±ΡΠ΄Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΡΠ»ΠΎΠΆΠ½ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΉ. ΠΠ° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅, ΠΠ Β«ΠΡΠ΅ΡΡΠΈΠΊΠΈ-Π½ΠΎΠ»ΠΈΠΊΠΈΒ», ΡΡΠΎ Π²ΡΠ΅Π³ΠΎ Π»ΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΡΠΎΠΊ ΠΊΠΎΠ΄Π°.
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° Π²ΡΠΏΠΎΠΌΠ½ΠΈΠΌ, ΠΊΠ°ΠΊ Π² Β«ΠΡΠ΅ΡΡΠΈΠΊΠΈ-Π½ΠΎΠ»ΠΈΠΊΠΈΒ» ΠΈΠ³ΡΠ°ΡΡ Π΄Π²Π° ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠ°. ΠΠ° Π»ΠΈΡΡΠ΅ Π±ΡΠΌΠ°Π³ΠΈ ΡΠ°ΡΡΠ΅ΡΡΠΈΠ²Π°Π΅ΡΡΡ ΠΏΠΎΠ»Π΅,Β ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ 3Ρ 3 ΠΊΠ»Π΅ΡΠΊΠΈ. ΠΠ΄ΠΈΠ½ ΠΈΠ³ΡΠΎΠΊ β Π₯, Π²ΡΠΎΡΠΎΠΉ β Π.Β ΠΠ³ΡΠΎΠΊΠΈ ΠΏΠΎ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ ΡΡΠ°Π²ΡΡ ΡΠ²ΠΎΠΈ ΡΠΈΠΌΠ²ΠΎΠ»Ρ (Π₯ ΠΈΠ»ΠΈ Π). ΠΠΎΠ±Π΅Π΄ΠΈΡΠ΅Π»Π΅ΠΌ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΡΠΎΡ, ΠΊΠΎΠΌΡ ΡΠ΄Π°ΡΡΡΡ Π²ΡΡΡΡΠΎΠΈΡΡ ΡΡΠΈ ΡΠ²ΠΎΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»Π° Π² ΡΡΠ΄ ΠΏΠΎ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΠΈ, Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΠΈ ΠΈΠ»ΠΈ Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΠΈ. ΠΡΠ»ΠΈ ΡΡΠΎ Π½Π΅ ΡΠ΄Π°Π΅ΡΡΡ ΡΠ΄Π΅Π»Π°ΡΡ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΈΠ· ΠΈΠ³ΡΠΎΠΊΠΎΠ², Π° ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΡΡ ΠΊΠ»Π΅ΡΠΎΠΊ Π½Π΅ ΠΎΡΡΠ°Π»ΠΎΡΡ, ΡΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ ΠΈΠ³ΡΡ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π½ΠΈΡΡΡ.
ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΠ Β«ΠΡΠ΅ΡΡΠΈΠΊΠΈ-Π½ΠΎΠ»ΠΈΠΊΠΈΒ», Π·Π° Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡΠΌΠΈ, Π±ΡΠ΄Π΅Ρ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠ΅Ρ Π·Π½Π°Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΠΏΡΠΈΠΎΠ±ΡΠ΅Π»ΠΈ, ΠΈΠ·ΡΡΠ°Ρ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠ΅ Π³Π»Π°Π²Ρ. ΠΠ°Π²Π°ΠΉΡΠ΅ Π½Π°ΡΠ½Π΅ΠΌ ΠΈΠ·ΡΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Ρ ΠΎΠ΄ΠΈΠ½ΠΎΡΠ½ΠΎΠ³ΠΎ Π·Π°ΠΏΡΡΠΊΠ° ΠΈΠ³ΡΡ Β«ΠΡΠ΅ΡΡΠΈΠΊΠΈ-Π½ΠΎΠ»ΠΈΠΊΠΈΒ».
ΠΠ΄ΠΈΠ½ΠΎΡΠ½ΡΠΉ Π·Π°ΠΏΡΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Β«ΠΡΠ΅ΡΡΠΈΠΊΠΈ-Π½ΠΎΠ»ΠΈΠΊΠΈΒ».
Π ΠΈΡ 10-1. ΠΠ΄ΠΈΠ½ΠΎΡΠ½ΡΠΉ Π·Π°ΠΏΡΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Β«ΠΡΠ΅ΡΡΠΈΠΊΠΈ-ΠΠΎΠ»ΠΈΠΊΠΈΒ» Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ Windows 7.
ΠΠ±ΡΡΠ΄ΠΈΡΡ Π½Π° ΡΠΎΡΡΠΌΠ΅.
ΠΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ ΡΡΡΠ»ΠΊΠΎΠΉ:
ΠΠΎΠ½ΡΠ°Π²ΠΈΠ»ΠΎΡΡ ΡΡΠΎ:
ΠΡΠ°Π²ΠΈΡΡΡ ΠΠ°Π³ΡΡΠ·ΠΊΠ°…
ΠΠΎΡ ΠΎΠΆΠ΅Π΅
Tic tac toe ΠΊΡΠ΅ΡΡΠΈΠΊΠΈ-Π½ΠΎΠ»ΠΈΠΊΠΈ
import numpy as np import random from operator import itemgetter board = np.array([['_', '_', '_'], ['_', '_', '_'], ['_', '_', '_']], dtype=str) SIGN = {0: 'X', 1: 'O'} MATRIX = np.array([[0,1,2], [3,4,5], [6,7,8]]) def board_print(board): """ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅Ρ ΠΏΠΎΠ»Π΅ Ρ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΡΠΌΠΈ ΠΊΠ»Π΅ΡΠΊΠ°ΠΌΠΈ""" print('--------------') print('| {} | {} | {} |'.format(board[0,0], board[0,1], board[0,2])) print('| {} | {} | {} |'.format(board[1,0], board[1,1], board[1,2])) print('| {} | {} | {} |'.format(board[2,0], board[2,1], board[2,2])) print('--------------') def choice_sign(): """ΠΡΠ±ΠΎΡ ΠΊΡΠ΅ΡΡΠΈΠΊΠ° ΠΈΠ»ΠΈ Π½ΠΎΠ»ΠΈΠΊΠ°""" sign = input("""ΠΡΠ±Π΅ΡΠΈΡΠ΅ ΡΠ²ΠΎΠΉ Π·Π½Π°ΠΊ: 0 - ΠΊΡΠ΅ΡΡΠΈΠΊ, 1 - Π½ΠΎΠ»ΠΈΠΊ)\n""") user_sign = SIGN[int(sign)] comp_sign = SIGN[0] if int(sign) == 1 else SIGN[1] return user_sign, comp_sign def choice_step(): """ΠΡΠ±ΠΎΡ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Ρ ΠΎΠ΄Π°, 0 - ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ, 1 -ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ""" step = random.randint(0,1) if step == 0: print('ΠΠΎΠ·Π΄ΡΠ°Π²Π»ΡΡ, ΠΡ Ρ ΠΎΠ΄ΠΈΡΠ΅ ΠΏΠ΅ΡΠ²ΡΠΌ!') return True else: print('ΠΠ΅ΡΠ²ΡΠΌ Π²ΡΠΏΠ°Π» ΡΠ°Π½Ρ Ρ ΠΎΠ΄ΠΈΡΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΡ') return False def choice_cell(board): """ΠΡΠ±ΠΈΡΠ°Π΅Ρ ΠΊΠ»Π΅ΡΠΊΡ Π΄Π»Ρ Ρ ΠΎΠ΄Π°""" board_print(board) print('ΠΡΠ±Π΅ΡΠΈΡΠ΅ ΡΡΡΠΎΠΊΡ ΠΈ ΡΡΠΎΠ»Π±Π΅Ρ, Π³Π΄Π΅ Π±ΡΠ΄Π΅Ρ ΡΡΠΎΡΡΡ Π²Π°Ρ Π·Π½Π°ΠΊ') while True: cell = input("""ΠΠ°ΠΌ Π½ΡΠΆΠ½ΠΎ Π²Π²Π΅ΡΡΠΈ Π΄Π²Π° ΡΠΈΡΠ»Π°. ΠΠ΅ΡΠ²ΠΎΠ΅ - ΡΡΡΠΎΠΊΠ°, Π²ΡΠΎΡΠΎΠ΅ - ΡΡΠΎΠ»Π±Π΅Ρ: 1 - ΠΏΠ΅ΡΠ²Π°Ρ ΡΡΡΠΎΠΊΠ° ΠΈΠ»ΠΈ ΡΡΠΎΠ»Π±Π΅Ρ 2 - Π²ΡΠΎΡΠ°Ρ ΡΡΡΠΎΠΊΠ° ΠΈΠ»ΠΈ ΡΡΠΎΠ»Π±ΡΠ΅ 3 - ΡΡΠ΅ΡΡΡ ΡΡΡΠΎΠΊΠ° ΠΈΠ»ΠΈ ΡΡΠΎΠ»Π±Π΅Ρ Π±ΡΠ΄ΡΡΠ΅ Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»ΡΠ½Ρ, ΡΡΠ΅ΠΉΠΊΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π·Π°Π½ΡΡΡ \n""") if len(cell) != 2: print('ΠΠ²Π΅Π΄ΠΈΡΠ΅ Π½Π΅ ΠΎΠ΄Π½ΠΎ, Π° Π΄Π²Π° ΡΠΈΡΠ»Π°') continue # Π² pythone Π½ΡΠΌΠ΅ΡΠ°ΡΠΈΡ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ 0 row = int(cell[0]) - 1 column = int(cell[1]) - 1 if row in range(0, 3) and \ column in range(0,3) and \ board[row, column] == '_': break else: print('ΠΠ΅Π²Π΅ΡΠ½ΠΎ Π²ΡΠ±ΡΠ°Π½Π° ΡΡΠ΅ΠΉΠΊΠ° ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»ΡΠ½ΠΎ') return row, column class GameState: def __init__(self, board, comp_sign, user_sign): self.board = board self.comp_sign = comp_sign self.user_sign = user_sign self.winning_combos = [((0,0), (0,1), (0,2)), ((1,0), (1,1), (1,2)), #(0,1,2) (3,4,5) ((2,0), (2,1), (2,2)), ((0,0), (1,0), (2,0)), #(6,7,8) (0,3,6) ((0,1), (1,1), (2,1)), ((0,2), (1,2), (2,2)), #(1,4,7) (2,5,8) ((0,0), (1,1), (2,2)), ((0,2), (1,1), (2,0))] #(0,4,8) (2,4,6) def get_winner(self): '''ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ None Π΅ΡΠ»ΠΈ ΠΈΠ³ΡΠ° Π²ΡΡ Π΅ΡΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΡΡΡ, ΠΈΠ½Π°ΡΠ΅ ΠΎΡΠ΅Π½ΠΊΠ° Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ° (1=ΠΏΠΎΠ±Π΅Π΄Π°, 0=Π½ΠΈΡΡΡ, -1=ΠΏΡΠΎΠΈΠ³ΡΡΡ)''' if np.count_nonzero(self.board == '_') == 0: #Π΅ΡΠ»ΠΈ Π½Π΅ ΠΎΡΡΠ°Π»ΠΎΡΡ ΠΏΡΡΡΡΡ ΠΏΠΎΠ»Π΅ΠΉ return 0 for combo in self.winning_combos: if (self.board[combo[0]] == self.comp_sign and self.board[combo[1]] == self.comp_sign and self.board[combo[2]] == self.comp_sign): return 1 if (self.board[combo[0]] == self.user_sign and self.board[combo[1]] == self.user_sign and self.board[combo[2]] == self.user_sign): return 1 return None def get_possible_moves(self): '''ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ ΡΡΠ΅ΠΉΠΊΠΈ Π΄Π»Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²''' return [index for index, square in np.ndenumerate(self.board) if square == '_'] def get_next_state(self, move, our_turn): '''ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΈΠ³ΡΡ ΠΏΠΎΡΠ»Π΅ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠ΅ΠΉΠΊΠΈ''' copy_array = np.copy(self.board) copy_array[move] = self.comp_sign if our_turn else self.user_sign return GameState(copy_array, self.comp_sign, self.user_sign) def play(game_state, our_turn): '''ΠΡΠ»ΠΈ ΠΈΠ³ΡΠ° Π·Π°ΠΊΠΎΠ½ΡΠ΅Π½Π°, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ (None, score), Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎ Π½Π°Ρ ΠΎΠ΄ΠΈΡ Π»ΡΡΡΠΈΠΉ Ρ ΠΎΠ΄ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π΅Π³ΠΎ ΠΈ ΡΡΡΡ''' score = game_state.get_winner() # ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ None, 0, 1, -1 if score != None: return None, score moves = ((move, play(game_state.get_next_state(move, our_turn), not our_turn)[1]) for move in game_state.get_possible_moves()) return (max if our_turn else min)(moves, key=itemgetter(1)) def main(): print('ΠΠ°ΡΠΈΠ½Π°Π΅ΠΌ ΠΈΠ³ΡΡ') user_sign, comp_sign = choice_sign() #ΠΈΠ³ΡΠΎΠΊ Π²ΡΠ±ΠΈΡΠ°Π΅Ρ Π·Π½Π°ΠΊ start_game_state = GameState(board, comp_sign, user_sign) if choice_step(): # ΠΈΠ³ΡΠΎΠΊ Π²ΡΠ±ΠΈΡΠ°Π΅Ρ ΠΊΡΠ΄Π° ΠΏΠΎΡΡΠ°Π²ΠΈΡΡ Π·Π½Π°ΠΊ # choice_cell Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΊΠΎΡΡΠ΅ΠΆ, Π° ΡΠ°ΠΌ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠ΅ΠΊΡΡΡΡ Π΄ΠΎΡΠΊΡ start_game_state.board[choice_cell(start_game_state.board)] = user_sign board_print(start_game_state.board) # ΠΡΠ΅Ρ Π»ΡΡΡΠΈΠΉ Ρ ΠΎΠ΄ ΠΈ ΠΎΡΠΊΠΈ move, score = play(start_game_state, True) start_game_state.board[move] = comp_sign while score != 1 or score != 0: if score == 0: word = 'TIE' elif score == 1: word = 'WIN' else: word = 'LOSS, who rigged the board?!?' print('X should go at index #', move, 'Which will always result in a ' + word) start_game_state.board[choice_cell(start_game_state.board)] = user_sign move, score = play(start_game_state, True) print('SCORE',score) #if score == -1: #break start_game_state.board[move] = comp_sign board_print(start_game_state.board) main()
ΠΠ΄ΡΠ°Π²ΡΡΠ²ΡΠΉΡΠ΅, ΠΏΠΎΠ΄ΡΠΊΠ°ΠΆΠΈΡΠ΅ ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, ΠΊΠ°ΠΊ Π΄ΠΎΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΈΠ³ΡΡ ΠΊΡΠ΅ΡΡΠΈΠΊΠΈ-Π½ΠΎΠ»ΠΈΠΊΠΈ, Π° ΡΠΎ Ρ ΠΌΠ΅Π½Ρ ΠΏΠΎΡΠ»Π΅ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΠΊΡΠ΅ΡΡΠΈΠΊΠ° Π²ΡΡ ΠΏΠΎΠ»Π΅ Π²Π΄ΡΡΠ³ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π½ΠΎΠ»ΠΈΠΊΠ°ΠΌΠΈ ((
ΠΡΠ΅ΡΡΠΈΠΊΠΈ-Π½ΠΎΠ»ΠΈΠΊΠΈ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Python — AskPython
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΡΠ°ΠΏΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΊΡΠ΅ΡΡΠΈΠΊΠΎΠ²-Π½ΠΎΠ»ΠΈΠΊΠΎΠ² Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ·ΡΠΊΠ° Python Ρ Π½ΡΠ»Ρ.
ΠΡΠ΅ΡΡΠΈΠΊΠΈ-Π½ΠΎΠ»ΠΈΠΊΠΈ
ΠΠ± ΠΈΠ³ΡΠ΅
ΠΡΠ΅ΡΡΠΈΠΊΠΈ-Π½ΠΎΠ»ΠΈΠΊΠΈ — ΡΡΠΎ ΠΈΠ³ΡΠ° Π΄Π»Ρ Π΄Π²ΡΡ
ΠΈΠ³ΡΠΎΠΊΠΎΠ², Π² ΠΊΠΎΡΠΎΡΡΡ ΠΈΠ³ΡΠ°ΡΡ Π½Π° ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΠΎΠΉ ΡΠ΅ΡΠΊΠ΅ 3 Γ 3. ΠΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ³ΡΠΎΠΊ ΠΏΠΎ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ ΡΡΠ΅ΠΉΠΊΡ Ρ ΡΠ΅Π»ΡΡ ΡΠ°Π·ΠΌΠ΅ΡΡΠΈΡΡ ΡΡΠΈ ΠΌΠ΅ΡΠΊΠΈ ΠΏΠΎ Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΠΈ, Π²Π΅ΡΡΠΈΠΊΠ°Π»ΠΈ ΠΈΠ»ΠΈ Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΠΈ. ΠΠ΄ΠΈΠ½ ΠΈΠ³ΡΠΎΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΊΡΠ΅ΡΡ 'X'
Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΌΠ°ΡΠΊΠ΅ΡΠ°, Π° Π΄ΡΡΠ³ΠΎΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π½ΡΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 'O'
.
Π¨Π°Π³ 1: ΠΠΈΠ·Π°ΠΉΠ½ ΠΊΡΠ΅ΡΡΠΈΠΊΠΎΠ²-Π½ΠΎΠ»ΠΈΠΊΠΎΠ²
ΠΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΠ³ΡΠ°ΡΡ Π² ΠΊΡΠ΅ΡΡΠΈΠΊΠΈ-Π½ΠΎΠ»ΠΈΠΊΠΈ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΠ΅ΡΠ²ΠΎΠ΅, ΡΡΠΎ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ, ΡΡΠΎ ΡΠΎΠ·Π΄Π°ΡΡ Π΄ΠΈΠ·Π°ΠΉΠ½ Π΄Π»Ρ Π½Π°ΡΠΈΡ ΠΊΡΠ΅ΡΡΠΈΠΊΠΎΠ²-Π½ΠΎΠ»ΠΈΠΊΠΎΠ².
ΠΡΠ΅ΡΡΠΈΠΊΠΈ-Π½ΠΎΠ»ΠΈΠΊΠΈ ΠΠΈΠ·Π°ΠΉΠ½
ΠΡΠ»ΠΈ ΠΈΠ³ΡΠΎΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡΠΌΠ΅ΡΠΈΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ΅ ΠΏΠΎΠ»Π΅, ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Π²Π΅ΡΡΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ Π½ΠΎΠΌΠ΅Ρ, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΡΠΉ Π² ΡΠ΅ΡΠΊΠ΅. ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΠΌΡ Ρ
ΠΎΡΠΈΠΌ Π·Π°Π½ΡΡΡ ΡΠ΅Π½ΡΡΠ°Π»ΡΠ½ΡΠΉ Π±Π»ΠΎΠΊ, ΡΠΎΠ³Π΄Π° ΠΌΡ Π²Π²Π΅Π΄Π΅ΠΌ 5
Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Π». ΠΡΡ ΡΠ΅ΡΠΊΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ:
# Π€ΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ ΠΏΠ΅ΡΠ°ΡΠΈ Tic Tac Toe def print_tic_tac_toe (Π·Π½Π°ΡΠ΅Π½ΠΈΡ): ΠΏΠ΅ΡΠ°ΡΡ ("\ ΠΏ") ΠΏΠ΅ΡΠ°ΡΡ ("\ t | |") print ("\ t {} | {} | {}".ΡΠΎΡΠΌΠ°Ρ (Π·Π½Π°ΡΠ΅Π½ΠΈΡ [0], Π·Π½Π°ΡΠ΅Π½ΠΈΡ [1], Π·Π½Π°ΡΠ΅Π½ΠΈΡ [2])) print ('\ t _____ | _____ | _____') ΠΏΠ΅ΡΠ°ΡΡ ("\ t | |") print ("\ t {} | {} | {}". ΡΠΎΡΠΌΠ°Ρ (Π·Π½Π°ΡΠ΅Π½ΠΈΡ [3], Π·Π½Π°ΡΠ΅Π½ΠΈΡ [4], Π·Π½Π°ΡΠ΅Π½ΠΈΡ [5])) print ('\ t _____ | _____ | _____') ΠΏΠ΅ΡΠ°ΡΡ ("\ t | |") print ("\ t {} | {} | {}". ΡΠΎΡΠΌΠ°Ρ (Π·Π½Π°ΡΠ΅Π½ΠΈΡ [6], Π·Π½Π°ΡΠ΅Π½ΠΈΡ [7], Π·Π½Π°ΡΠ΅Π½ΠΈΡ [8])) ΠΏΠ΅ΡΠ°ΡΡ ("\ t | |") ΠΏΠ΅ΡΠ°ΡΡ ("\ ΠΏ")
Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²ΡΡΠ΅ ΠΊΠΎΠ΄Π΅ ΡΡΠ½ΠΊΡΠΈΡ ΡΠΎΠ·Π΄Π°Π΅Ρ Π½Π°ΡΡ ΠΈΠ³ΡΡ Π² ΠΊΡΠ΅ΡΡΠΈΠΊΠΈ-Π½ΠΎΠ»ΠΈΠΊΠΈ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ, ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΠΌΠΈ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°. ΠΠ΄Π΅ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ
— ΡΡΠΎ ΡΠΏΠΈΡΠΎΠΊ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΡΡΠ°ΡΡΡ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΠ΅ΠΉΠΊΠΈ Π² ΡΠ΅ΡΠΊΠ΅.
Π¨Π°Π³ 2. Π‘ΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΡΡΡΠΊΡΡΡ Π΄Π°Π½Π½ΡΡ
Π ΠΎΡΠ½ΠΎΠ²Π΅ Π»ΡΠ±ΠΎΠΉ ΠΈΠ³ΡΡ Π»Π΅ΠΆΠΈΡ ΠΈΠ³ΡΠΎΠ²Π°Ρ ΠΌΠ΅Ρ Π°Π½ΠΈΠΊΠ°. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΡ ΠΈΠ³ΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΡΠΎΠ·Π΄Π°ΡΡ, Π·Π°Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°Π½Π½Π°Ρ ΠΌΠ΅Ρ Π°Π½ΠΈΠΊΠ° ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΎΡΡΠ°.
Π Π»ΡΠ±ΠΎΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π½Π°ΠΌ Π½ΡΠΆΠ½Ρ Π΄Π²Π΅ Π²Π°ΠΆΠ½ΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ:
- Π‘ΡΠ°ΡΡΡ ΡΠ΅ΡΠΊΠΈ — Π£ Π½Π°Ρ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΡΡΡΡΠΊΡΡΡΠ° Π΄Π°Π½Π½ΡΡ , Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Ρ ΡΠ°Π½ΠΈΡΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΠ΅ΠΉΠΊΠΈ, ΡΠΎ Π΅ΡΡΡ Π·Π°Π½ΡΡΠ° ΠΎΠ½Π° ΠΈΠ»ΠΈ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½Π°.
- Π₯ΠΎΠ΄Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ³ΡΠΎΠΊΠ° — ΠΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΊΠ°ΠΊΠΈΠΌ-ΡΠΎ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π·Π½Π°ΡΡ ΠΏΡΠΎΡΠ»ΡΠ΅ ΠΈ Π½Π°ΡΡΠΎΡΡΠΈΠ΅ Ρ
ΠΎΠ΄Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ³ΡΠΎΠΊΠ°, ΡΠΎ Π΅ΡΡΡ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ, Π·Π°Π½ΡΡΡΠ΅
'X'
ΠΈ'O'
.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΠΠ±Π΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠ°ΡΡΡ ΡΠ΅ΡΠΊΠΈ, Π½ΠΎ ΡΡΠ΅Π±ΠΎΠ²Π°Π»ΠΎΡΡ Π±Ρ ΠΏΠ΅ΡΠ΅ΡΠ΅ΠΊΠ°ΡΡ Π΅Π΅ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° Π½Π°ΠΌ Π½ΡΠΆΠ½Ρ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ ΠΈΠ³ΡΠΎΠΊΠ°. ΠΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π·Π²Π°ΡΡ ΠΊΠΎΠΌΠΏΡΠΎΠΌΠΈΡΡΠΎΠΌ ΠΌΠ΅ΠΆΠ΄Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΠΈ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡΡ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°. ΠΡΠΎ ΠΎΠ±ΡΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
# Π€ΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ ΠΎΠ΄ΠΈΠ½ΠΎΡΠ½ΠΎΠΉ ΠΈΠ³ΡΡ Tic Tac Toe def single_game (cur_player): # ΠΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΊΡΠ΅ΡΡΠΈΠΊΠΈ-Π½ΠΎΠ»ΠΈΠΊΠΈ values ββ= ['' Π΄Π»Ρ x Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ (9)] # Π‘ΠΎΡ ΡΠ°Π½ΡΠ΅Ρ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ, Π·Π°Π½ΡΡΡΠ΅ X ΠΈ O player_pos = {'X': [], 'O': []}
Π‘ΡΠ°ΡΡΡ ΡΠ΅ΡΠΊΠΈ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΡΠΏΠΈΡΠΊΠΎΠΌ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ ΡΡΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ,
-
''
— Π‘Π²ΠΎΠ±ΠΎΠ΄Π½Π°Ρ ΡΡΠ΅ΠΉΠΊΠ° -
'X'
— Π―ΡΠ΅ΠΉΠΊΠ°, Π·Π°Π½ΡΡΠ°Ρ ΠΈΠ³ΡΠΎΠΊΠΎΠΌ X -
'O'
— Π―ΡΠ΅ΠΉΠΊΠ°, Π·Π°Π½ΡΡΠ°Ρ ΠΈΠ³ΡΠΎΠΊΠΎΠΌ O
Π₯ΠΎΠ΄Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ³ΡΠΎΠΊΠ° ΡΠΎΡ
ΡΠ°Π½ΡΡΡΡΡ ΠΊΠ°ΠΊ ΡΠ»ΠΎΠ²Π°ΡΡ ΡΠΏΠΈΡΠΊΠ° ΡΠ΅Π»ΡΡ
ΡΠΈΡΠ΅Π».ΠΠ»ΡΡΠΈ: 'X'
ΠΈ 'O'
Π΄Π»Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΈΠ³ΡΠΎΠΊΠ°. Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΈΠΌ ΡΠΏΠΈΡΠΊΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ Π½ΠΎΠΌΠ΅ΡΠ°, ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½Π½ΡΠ΅ ΡΡΠ΅ΠΉΠΊΠ°ΠΌ ΡΠ΅ΡΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ½ΠΈ Π·Π°Π½ΠΈΠΌΠ°ΡΡ.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ
cur_player
Ρ ΡΠ°Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΈΠ³ΡΠΎΠΊΠ°, Π΄Π΅Π»Π°ΡΡΠ΅Π³ΠΎ Ρ ΠΎΠ΄, ΠΊΠ°ΠΊ Π²'X'
ΠΈΠ»ΠΈ'O'
.
Π¨Π°Π³ 3: ΠΈΠ³ΡΠΎΠ²ΠΎΠΉ ΡΠΈΠΊΠ»
Π ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ³ΡΠ΅ Π΅ΡΡΡ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΈΠ³ΡΠΎΠ²ΠΎΠΉ ΡΠΈΠΊΠ», ΠΊΠΎΡΠΎΡΡΠΉ Π΄Π»ΠΈΡΡΡ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΈΠ³ΡΠΎΠΊ Π½Π΅ Π²ΡΠΈΠ³ΡΠ°Π΅Ρ ΠΈΠ»ΠΈ ΠΈΠ³ΡΠ° Π½Π΅ Π·Π°ΠΊΠΎΠ½ΡΠΈΡΡΡ Π½ΠΈΡΡΠ΅ΠΉ.Π ΠΊΡΠ΅ΡΡΠΈΠΊΠΈ-Π½ΠΎΠ»ΠΈΠΊΠΈ ΠΊΠ°ΠΆΠ΄Π°Ρ ΠΈΡΠ΅ΡΠ°ΡΠΈΡ ΡΠΈΠΊΠ»Π° ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡ Ρ ΠΎΠ΄Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π΄Π΅Π»Π°Π΅Ρ Π»ΡΠ±ΠΎΠΉ ΠΈΠ³ΡΠΎΠΊ.
# Game Loop Π΄Π»Ρ ΠΎΠ΄ΠΈΠ½ΠΎΡΠ½ΠΎΠΉ ΠΈΠ³ΡΡ Tic Tac Toe Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ True: print_tic_tac_toe (Π·Π½Π°ΡΠ΅Π½ΠΈΡ)
Π¨Π°Π³ 4. ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π²Π²ΠΎΠ΄Π° ΠΈΠ³ΡΠΎΠΊΠ°
ΠΠ° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ ΠΈΠ³ΡΡ ΠΈΠ³ΡΠΎΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Π²Π΅ΡΡΠΈ ΡΠ²ΠΎΠΉ Ρ ΠΎΠ΄.
# ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ Π΄Π»Ρ Π²Π²ΠΎΠ΄Π° MOVE ΠΏΡΡΠ°ΡΡΡΡ: print ("ΠΠ³ΡΠΎΠΊ", cur_player, "ΠΏΠΎΠ²ΠΎΡΠΎΡ. ΠΠ°ΠΊΠΎΠΉ ΡΡΠΈΠΊ?:", end = "") ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΡΡ = int (Π²Ρ ΠΎΠ΄ ()) ΠΊΡΠΎΠΌΠ΅ ValueError: print (Β«ΠΠ΅Π²Π΅ΡΠ½ΡΠΉ Π²Π²ΠΎΠ΄ !!! ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ Π΅ΡΠ΅ ΡΠ°Π·Β») ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡ # ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠΈ Π΄Π»Ρ MOVE inout Π΅ΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ <1 ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅> 9: print (Β«ΠΠ΅Π²Π΅ΡΠ½ΡΠΉ Π²Π²ΠΎΠ΄ !!! ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ Π΅ΡΠ΅ ΡΠ°Π·Β») ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡ # ΠΡΠΎΠ²Π΅ΡΠΈΡΡ, Π½Π΅ Π·Π°Π½ΡΡ Π»ΠΈ ΡΡΠΈΠΊ Π΅ΡΠ»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ [move-1]! = '': print ("ΠΠ΅ΡΡΠΎ ΡΠΆΠ΅ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΎ.ΠΠΎΠΏΡΠΎΠ±ΡΠΉ ΡΠ½ΠΎΠ²Π°!!") ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡ
Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π±Π»ΠΎΠΊ try
Π½Π° ΡΠ»ΡΡΠ°ΠΉ, Π΅ΡΠ»ΠΈ ΠΈΠ³ΡΠΎΠΊ Π²Π²Π΅Π΄Π΅Ρ ΠΊΠ°ΠΊΠΎΠ΅-ΡΠΎ Π½Π΅ΠΏΡΠ΅Π΄Π½Π°ΠΌΠ΅ΡΠ΅Π½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. Π’Π°ΠΊΠΎΠ΅ ΡΠΎΠ±ΡΡΠΈΠ΅ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ ΠΈΠ³ΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΡ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ValueError
ΠΈ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ Π½Π°ΡΡ ΠΈΠ³ΡΡ.
ΠΠ°ΠΌ Π½ΡΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Π²Π΅Π΄Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡΠΈΠ΅ΠΉ, ΠΈ Π΅ΡΠ»ΠΈ ΡΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΠΏΠΎΠ·ΠΈΡΠΈΡ, ΠΎΠ½Π° ΡΠΆΠ΅ Π·Π°Π½ΡΡΠ°?
Π¨Π°Π³ 5: ΠΠ±Π½ΠΎΠ²ΠΈΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ
Π‘ΠΎΠ³Π»Π°ΡΠ½ΠΎ Π²Π²ΠΎΠ΄Ρ ΠΈΠ³ΡΠΎΠΊΠ°, Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π΄Π»Ρ Π±Π΅ΡΠΏΠ΅ΡΠ΅Π±ΠΎΠΉΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ ΠΈΠ³ΡΡ.
# ΠΠ±Π½ΠΎΠ²ΠΈΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ± ΠΈΠ³ΡΠ΅ # ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΡΡΠ°ΡΡΡΠ° ΡΠ΅ΡΠΊΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ [move-1] = cur_player # ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ·ΠΈΡΠΈΠΉ ΠΈΠ³ΡΠΎΠΊΠΎΠ² player_pos [cur_player] .append (ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΡΡ)
Π‘ΠΏΠΈΡΠΎΠΊ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ
ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅Ρ ΡΡΠ΅ΠΉΠΊΡ, Π·Π°Π½ΡΡΡΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΡΠ΅ΠΊΡΡΠΈΠΌ ΠΈΠ³ΡΠΎΠΊΠΎΠΌ. ΠΠΎΠ·ΠΈΡΠΈΡ ΠΈΠ³ΡΠΎΠΊΠ° Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΠΏΠΎΠ·ΠΈΡΠΈΡ, ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ Π·Π°Π½ΡΡΡΡ ΡΠ΅ΠΊΡΡΠΈΠΌ ΠΈΠ³ΡΠΎΠΊΠΎΠΌ.
ΠΠΎΡΠ»Π΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΠΏΠΈΡΠΊΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ
ΠΈ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ print_tic_tac_toe ()
ΡΠ΅ΡΠΊΠ° Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
ΠΡΠ΅ΡΡΠΈΠΊΠΈ-Π½ΠΎΠ»ΠΈΠΊΠΈ ΠΏΠΎΡΠ»Π΅ 5 Ρ
ΠΎΠ΄ΠΎΠ².
ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ Ρ
ΠΎΠ΄: Β«XΒ» Π½Π° 2
Π¨Π°Π³ 6: ΠΡΠΎΠ²Π΅ΡΡΡΠ΅ Π²ΡΠΈΠ³ΡΡΡ ΠΈΠ»ΠΈ Π½ΠΈΡΡΡ
ΠΠΎΡΠ»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ ΠΎΠ΄Π° ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ, Π²ΡΠΈΠ³ΡΠ°Π» Π»ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΈΠ³ΡΠΎΠΊ ΠΏΠ°ΡΡΠΈΡ ΠΈΠ»ΠΈ ΠΈΠ³ΡΠ° Π±ΡΠ»Π° ΡΠ΄Π΅Π»Π°Π½Π° Π²Π½ΠΈΡΡΡ. ΠΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΏΠΎ:
ΠΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΉ:
# ΠΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π²ΡΠΈΠ³ΡΡΡΠ° Π΅ΡΠ»ΠΈ check_win (player_pos, cur_player): print_tic_tac_toe (Π·Π½Π°ΡΠ΅Π½ΠΈΡ) print ("ΠΠ³ΡΠΎΠΊ", cur_player, "Π²ΡΠΈΠ³ΡΠ°Π» ΠΈΠ³ΡΡ !!") ΠΏΠ΅ΡΠ°ΡΡ ("\ ΠΏ") Π²Π΅ΡΠ½ΡΡΡ cur_player # ΠΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠΎΠ·ΡΠ³ΡΡΡΠ° ΠΈΠ³ΡΡ Π΅ΡΠ»ΠΈ check_draw (player_pos): print_tic_tac_toe (Π·Π½Π°ΡΠ΅Π½ΠΈΡ) print ("ΠΠ³ΡΠ° Π½Π°ΡΠΈΡΠΎΠ²Π°Π½Π°") ΠΏΠ΅ΡΠ°ΡΡ ("\ ΠΏ") Π²Π΅ΡΠ½ΡΡΡ 'D'
ΠΡΠ»ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΈΠ³ΡΠΎΠΊ Π²ΡΠΈΠ³ΡΡΠ²Π°Π΅Ρ, ΡΡΠ½ΠΊΡΠΈΡ single_game ()
Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΈΠ³ΡΠΎΠΊΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ΄Π΅Π»Π°Π» Ρ
ΠΎΠ΄.Π ΡΠ»ΡΡΠ°Π΅ Π½ΠΈΡΡΠ΅ΠΉ, 'D'
ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ.
Π€ΡΠ½ΠΊΡΠΈΠΈ:
# Π€ΡΠ½ΠΊΡΠΈΡ, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, Π²ΡΠΈΠ³ΡΠ°Π» Π»ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΈΠ³ΡΠΎΠΊ def check_win (player_pos, cur_player): # ΠΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ Π²ΡΠΈΠ³ΡΡΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ soln = [[1, 2, 3], [4, 5, 6], [7, 8, 9], [1, 4, 7], [2, 5, 8], [3, 6, 9] Β» , [1, 5, 9], [3, 5, 7]] # Π¦ΠΈΠΊΠ», ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΠ΅Π½Π° Π»ΠΈ ΠΊΠ°ΠΊΠ°Ρ-Π»ΠΈΠ±ΠΎ Π²ΡΠΈΠ³ΡΡΡΠ½Π°Ρ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ Π΄Π»Ρ x Π² soln: Π΅ΡΠ»ΠΈ Π²ΡΠ΅ (y Π² player_pos [cur_player] Π΄Π»Ρ y Π² x): # ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌ True, Π΅ΡΠ»ΠΈ ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΡΠ΅Ρ Π»ΡΠ±Π°Ρ Π²ΡΠΈΠ³ΡΡΡΠ½Π°Ρ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ Π²Π΅ΡΠ½ΡΡΡ True # ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌ False, Π΅ΡΠ»ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ Π½Π΅ ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΡΠ΅Ρ return False # Π€ΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ, Π½Π°ΡΠΈΡΠΎΠ²Π°Π½Π° Π»ΠΈ ΠΈΠ³ΡΠ° def check_draw (player_pos): Π΅ΡΠ»ΠΈ len (player_pos ['X']) + len (player_pos ['O']) == 9: Π²Π΅ΡΠ½ΡΡΡ True return False
check_win () — Π€ΡΠ½ΠΊΡΠΈΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π²ΡΠ΅ Π²ΡΠΈΠ³ΡΡΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ.ΠΡΠ΅, ΡΡΠΎ ΠΎΠ½ Π΄Π΅Π»Π°Π΅Ρ, ΡΡΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ, ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΡΠ΅ΡΡΡ Π»ΠΈ ΠΊΠ°ΠΊΠ°Ρ-Π»ΠΈΠ±ΠΎ ΠΈΠ· Π²ΡΠΈΠ³ΡΡΡΠ½ΡΡ
ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΉ ΡΠ΅ΠΊΡΡΠΈΠΌΠΈ ΠΏΠΎΠ·ΠΈΡΠΈΡΠΌΠΈ ΠΈΠ³ΡΠΎΠΊΠ°. ΠΡΠ»ΠΈ ΡΡΠΎ ΡΠ°ΠΊ, ΠΎΠ½ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ True
. ΠΡΠ»ΠΈ Π½ΠΈ ΠΎΠ΄Π½Π° ΠΈΠ· ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΉ Π½Π΅ ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΠ΅Π½Π°, ΡΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ False
.
check_draw () — Π£ΡΠ»ΠΎΠ²ΠΈΠ΅ ΡΠΎΠ·ΡΠ³ΡΡΡΠ° Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎΠ΅, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΈΠ³ΡΠ° Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°Π΅ΡΡΡ, ΠΊΠΎΠ³Π΄Π° Π²ΡΠ΅ Β«Π΄Π΅Π²ΡΡΡΒ» ΠΏΠΎΠ·ΠΈΡΠΈΠΉ Π·Π°Π½ΡΡΡ.
Π¨Π°Π³ 7: ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠΈΡΡ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΈΠ³ΡΠΎΠΊΠ°
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ³ΡΠΎΠΊ Π΄Π²ΠΈΠΆΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· Π·Π° ΡΠ°Π·, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΠΎΡΠ»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΡΠΏΠ΅ΡΠ½ΠΎΠ³ΠΎ Ρ ΠΎΠ΄Π° ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΌΠ΅Π½ΡΡΡ ΠΌΠ΅ΡΡΠ°ΠΌΠΈ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΈΠ³ΡΠΎΠΊΠ°.
# Π‘ΠΌΠ΅Π½ΠΈΡΡ Ρ ΠΎΠ΄Ρ ΠΈΠ³ΡΠΎΠΊΠ° Π΅ΡΠ»ΠΈ cur_player == 'X': cur_player = 'Π' Π΅ΡΠ΅: cur_player = 'X'
Π§ΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΠΎΠ΄ΠΈΠ½ΠΎΡΠ½ΠΎΠΉ ΠΈΠ³ΡΡ, ΡΡΠΎ Π²ΡΠ΅, ΡΡΠΎ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ. ΠΠΎ Π² ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π° ββΡΠΈΡΡΠ΅ΠΌΠ° ΡΠ°Π±Π»ΠΎ Π΄Π»Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ, Π΅ΡΠ»ΠΈ ΠΈΠ³ΡΠΎΠΊΠΈ Ρ ΠΎΡΡΡ ΡΡΠ³ΡΠ°ΡΡ Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΈΠ³Ρ.
Π¨Π°Π³ 8: ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΠΈΠΌΠ΅Π½Π° ΠΈΠ³ΡΠΎΠΊΠΎΠ²
ΠΠΌΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ³ΡΠΎΠΊΠ° ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ Π½Π° Π»ΡΠ±ΠΎΠΌ ΡΠ°Π±Π»ΠΎ.
Π΅ΡΠ»ΠΈ __name__ == "__main__": print ("ΠΠ³ΡΠΎΠΊ 1") player1 = input ("ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΠΈΠΌΡ:") ΠΏΠ΅ΡΠ°ΡΡ ("\ ΠΏ") print ("ΠΠ³ΡΠΎΠΊ 2") player2 = input ("ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΠΈΠΌΡ:") ΠΏΠ΅ΡΠ°ΡΡ ("\ ΠΏ")
Π¨Π°Π³ 9: Π‘ΠΎΡ ΡΠ°Π½ΠΈΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ± ΠΈΠ³ΡΠ΅
ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΡΠ°ΠΊΠ°Ρ ΠΊΠ°ΠΊ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΈΠ³ΡΠΎΠΊ, Π²ΡΠ±ΠΎΡ ΠΈΠ³ΡΠΎΠΊΠΎΠ² (Π²Π·ΡΡΡ ΠΊΡΠ΅ΡΡΠΈΠΊ ΠΈΠ»ΠΈ Π½ΠΎΠ»Ρ), Π΄ΠΎΡΡΡΠΏΠ½ΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ (ΠΊΡΠ΅ΡΡΠΈΠΊ ΠΈ Π½ΠΎΠ»Ρ) ΠΈ ΡΠ°Π±Π»ΠΎ, Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΠΎΡ ΡΠ°Π½Π΅Π½Ρ.
# Π‘ΠΎΡ ΡΠ°Π½ΡΠ΅Ρ ΠΈΠ³ΡΠΎΠΊΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠ±ΠΈΡΠ°Π΅Ρ X ΠΈ O cur_player = player1 # Π₯ΡΠ°Π½ΠΈΡ Π²ΡΠ±ΠΎΡ ΠΈΠ³ΡΠΎΠΊΠΎΠ² player_choice = {'X': "", 'O': ""} # Π‘ΠΎΡ ΡΠ°Π½ΡΠ΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ options = ['X', 'O'] # Π₯ΡΠ°Π½ΠΈΡ ΡΠ°Π±Π»ΠΎ score_board = {player1: 0, player2: 0}
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΈΠ³ΡΠΎΠΊ — ΡΡΠΎ ΠΈΠ³ΡΠΎΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠ΅ΡΠ²ΡΠΌ Π²Π²Π΅Π» ΠΈΠΌΡ.
Π¨Π°Π³ 10: ΠΠΈΠ·Π°ΠΉΠ½ ΡΠ°Π±Π»ΠΎ
Π’Π°Π±Π»ΠΎ Ρ ΡΠ°Π½ΠΈΡΡΡ Π² Π²ΠΈΠ΄Π΅ ΡΠ»ΠΎΠ²Π°ΡΡ, Π³Π΄Π΅ ΠΊΠ»ΡΡΠΈ — ΡΡΠΎ ΠΈΠΌΠ΅Π½Π° ΠΈΠ³ΡΠΎΠΊΠΎΠ², Π° Π·Π½Π°ΡΠ΅Π½ΠΈΡ — ΠΈΡ Π²ΡΠΈΠ³ΡΡΡΠ½ΡΠ΅ ΡΠΈΡΠ»Π°.
# Π€ΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ ΠΏΠ΅ΡΠ°ΡΠΈ ΡΠ°Π±Π»ΠΎ def print_scoreboard (score_board): Π Π°ΡΠΏΠ΅ΡΠ°ΡΠ°ΡΡ("--------------------------------") print ("ΠΠΠ‘ΠΠ Π‘Π§ΠΠ’ΠΠ") Π Π°ΡΠΏΠ΅ΡΠ°ΡΠ°ΡΡ("--------------------------------") ΠΈΠ³ΡΠΎΠΊΠΈ = ΡΠΏΠΈΡΠΎΠΊ (score_board.keys ()) print ("", ΠΈΠ³ΡΠΎΠΊΠΈ [0], "", Score_board [ΠΈΠ³ΡΠΎΠΊΠΈ [0]]) print ("", ΠΈΠ³ΡΠΎΠΊΠΈ [1], "", Score_board [ΠΈΠ³ΡΠΎΠΊΠΈ [1]]) print ("-------------------------------- \ n")
ΠΠ»Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠ°Π±Π»ΠΎ Π½Π°ΠΌ Π½ΡΠΆΠ½Ρ ΠΈΠΌΠ΅Π½Π° ΠΈΠ³ΡΠΎΠΊΠΎΠ². ΠΠ»ΡΡΠΈ ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ .keys ()
, Π° Π·Π°ΡΠ΅ΠΌ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΡΡΡ Π² ΡΠΏΠΈΡΠΎΠΊ, ΡΡΠΎΠ±Ρ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΈ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ ΠΎΡΠ΅Π½ΠΎΠΊ.
Π¨Π°Π³ 11: ΠΠ½Π΅ΡΠ½ΠΈΠΉ ΠΈΠ³ΡΠΎΠ²ΠΎΠΉ ΡΠΈΠΊΠ»
ΠΠ°ΠΌ Π½ΡΠΆΠ΅Π½ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΈΠ³ΡΠΎΠ²ΠΎΠΉ ΡΠΈΠΊΠ», Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎΠΌ ΠΌΠ°ΡΡΠ΅ΠΉ Π² ΠΊΡΠ΅ΡΡΠΈΠΊΠΈ-Π½ΠΎΠ»ΠΈΠΊΠΈ. ΠΠ°ΠΆΠ΄ΡΠΉ ΠΌΠ°ΡΡ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΈΠ³ΡΠΎΠΊ Π²ΡΠ±ΠΈΡΠ°Π΅Ρ ΡΠ²ΠΎΡ ΠΎΡΠΌΠ΅ΡΠΊΡ ( 'X'
ΠΈΠ»ΠΈ 'O'
). ΠΠ΅Π½Ρ Π²ΡΠ±ΠΎΡΠ° Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ ΠΈΠ³ΡΡ:
# Game Loop Π΄Π»Ρ ΡΠ΅ΡΠΈΠΈ Tic Tac Toe # Π¦ΠΈΠΊΠ» ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΡΡΡ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° ΠΈΠ³ΡΠΎΠΊΠΈ Π½Π΅ Π²ΡΠΉΠ΄ΡΡ Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ True: # ΠΠ΅Π½Ρ Π²ΡΠ±ΠΎΡΠ° ΠΈΠ³ΡΠΎΠΊΠ° print ("ΠΠΎΠ²Π΅ΡΠ½ΠΈΡΠ΅, ΡΡΠΎΠ±Ρ Π²ΡΠ±ΡΠ°ΡΡ", cur_player) print ("ΠΠ²Π΅Π΄ΠΈΡΠ΅ 1 Π΄Π»Ρ X") print ("ΠΠ²Π΅Π΄ΠΈΡΠ΅ 2 Π²ΠΌΠ΅ΡΡΠΎ O") print (Β«ΠΠ²Π΅Π΄ΠΈΡΠ΅ 3, ΡΡΠΎΠ±Ρ Π²ΡΠΉΡΠΈΒ»)
Π’Π°Π±Π»ΠΎ ΠΈ ΠΌΠ΅Π½Ρ Π²ΡΠ³Π»ΡΠ΄ΡΡ ΡΠ°ΠΊ:
Π’Π°Π±Π»ΠΎ ΠΈ ΠΌΠ΅Π½Ρ
Π¨Π°Π³ 12: ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ±ΠΎΡΠ° ΠΈΠ³ΡΠΎΠΊΠ°
ΠΠ° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΠΈ ΡΠΎΡ ΡΠ°Π½ΡΡΡ Π²ΡΠ±ΠΎΡ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΈΠ³ΡΠΎΠΊΠ°.
# ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ Π²Π²ΠΎΠ΄Π° CHOICE ΠΏΡΡΠ°ΡΡΡΡ: Π²ΡΠ±ΠΎΡ = int (Π²Ρ ΠΎΠ΄ ()) ΠΊΡΠΎΠΌΠ΅ ValueError: print ("ΠΠ΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ Π²Π²ΠΎΠ΄ !!! ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ Π΅ΡΠ΅ ΡΠ°Π· \ n") ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡ # Π£ΡΠ»ΠΎΠ²ΠΈΡ Π²ΡΠ±ΠΎΡΠ° ΠΈΠ³ΡΠΎΠΊΠ° Π΅ΡΠ»ΠΈ Π²ΡΠ±ΠΎΡ == 1: player_choice ['X'] = cur_player Π΅ΡΠ»ΠΈ cur_player == player1: player_choice ['O'] = player2 Π΅ΡΠ΅: player_choice ['O'] = player1 elif choice == 2: player_choice ['O'] = cur_player Π΅ΡΠ»ΠΈ cur_player == player1: player_choice ['X'] = player2 Π΅ΡΠ΅: player_choice ['X'] = player1 elif choice == 3: print ("ΠΠΊΠΎΠ½ΡΠ°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ") print_scoreboard (ΡΠ°Π±Π»ΠΎ_ΡΡΠ΅ΡΠΎΠ²) ΡΠ»ΠΎΠΌΠ°ΡΡ Π΅ΡΠ΅: print ("ΠΠ΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ Π²ΡΠ±ΠΎΡ !!!! ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΡΠ½ΠΎΠ²Π° \ n")
ΠΠΎ Π²ΡΠ±ΠΎΡΡ ΠΈΠ³ΡΠΎΠΊΠ° Π΄Π°Π½Π½ΡΠ΅ ΡΠΎΡ ΡΠ°Π½Π΅Π½Ρ.ΠΡΠΎ Π²Π°ΠΆΠ½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΏΠΎΡΠ»Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ³ΡΡ ΠΌΡ ΡΠ·Π½Π°Π΅ΠΌ, ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ³ΡΠΎΠΊ Π²ΡΠΈΠ³ΡΠ°Π».
Π¨Π°Π³ 13: ΠΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅
ΠΠΎΡΠ»Π΅ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ Π²ΡΠ΅ΠΉ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΏΠΎΡΠ° Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΠΉ ΠΌΠ°ΡΡ ΠΈ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ Π²ΡΠΈΠ³ΡΡΡΠ½ΡΠΉ Π·Π½Π°ΠΊ.
# Π‘ΠΎΡ ΡΠ°Π½ΡΠ΅Ρ ΠΏΠΎΠ±Π΅Π΄ΠΈΡΠ΅Π»Ρ Π² ΠΎΠ΄ΠΈΠ½ΠΎΡΠ½ΠΎΠΉ ΠΈΠ³ΡΠ΅ Π² ΠΊΡΠ΅ΡΡΠΈΠΊΠΈ-Π½ΠΎΠ»ΠΈΠΊΠΈ ΠΏΠΎΠ±Π΅Π΄ΠΈΡΠ΅Π»Ρ = single_game (Π²Π°ΡΠΈΠ°Π½ΡΡ [Π²ΡΠ±ΠΎΡ-1])
Π¨Π°Π³ 14: ΠΠ±Π½ΠΎΠ²ΠΈΡΠ΅ ΡΠ°Π±Π»ΠΎ
ΠΠ°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ ΡΠ°Π±Π»ΠΎ ΠΏΠΎΡΠ»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠ° ΠΊΡΠ΅ΡΡΠΈΠΊΠΈ-Π½ΠΎΠ»ΠΈΠΊΠΈ.
# ΠΠ±Π½ΠΎΠ²Π»ΡΠ΅Ρ ΡΠ°Π±Π»ΠΎ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΠΏΠΎΠ±Π΅Π΄ΠΈΡΠ΅Π»Π΅ΠΌ Π΅ΡΠ»ΠΈ ΠΏΠΎΠ±Π΅Π΄ΠΈΡΠ΅Π»Ρ! = 'D': player_won = player_choice [ΠΏΠΎΠ±Π΅Π΄ΠΈΡΠ΅Π»Ρ] Score_board [player_won] = Score_board [player_won] + 1 print_scoreboard (ΡΠ°Π±Π»ΠΎ_ΡΡΠ΅ΡΠΎΠ²)
ΠΡΠ»ΠΈ ΠΈΠ³ΡΠ° Π½Π΅ Π·Π°ΠΊΠΎΠ½ΡΠΈΠ»Π°ΡΡ Π²Π½ΠΈΡΡΡ, ΡΠΎ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅ΠΌ ΡΠ°Π±Π»ΠΎ.
Π¨Π°Π³ 15: Π‘ΠΌΠ΅Π½ΠΈΡΡ ΠΈΠ³ΡΠΎΠΊΠ°
ΠΡΠΎ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½Π°Ρ ΠΈΠ΄Π΅Ρ, ΡΡΠΎ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ³ΡΠΎΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²ΡΠ±ΠΈΡΠ°ΡΡ, ΠΊΠ°ΠΊΠΎΠΉ Π·Π½Π°ΠΊ ΠΎΠ½ Ρ
ΠΎΡΠ΅Ρ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΠ΅Π½ΡΠ΅ΠΌ ΠΌΠ΅ΡΡΠ°ΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² cur_player
.
# Π‘ΠΌΠ΅Π½ΠΈΡΡ ΠΈΠ³ΡΠΎΠΊΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠ±ΠΈΡΠ°Π΅Ρ X ΠΈΠ»ΠΈ O Π΅ΡΠ»ΠΈ cur_player == player1: cur_player = player2 Π΅ΡΠ΅: cur_player = player1
ΠΠΎΠ»Π½ΡΠΉ ΡΠ°Π±ΠΎΡΠΈΠΉ ΠΊΠΎΠ΄
# Π€ΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ ΠΏΠ΅ΡΠ°ΡΠΈ Tic Tac Toe def print_tic_tac_toe (Π·Π½Π°ΡΠ΅Π½ΠΈΡ): ΠΏΠ΅ΡΠ°ΡΡ ("\ ΠΏ") ΠΏΠ΅ΡΠ°ΡΡ ("\ t | |") print ("\ t {} | {} | {}". ΡΠΎΡΠΌΠ°Ρ (Π·Π½Π°ΡΠ΅Π½ΠΈΡ [0], Π·Π½Π°ΡΠ΅Π½ΠΈΡ [1], Π·Π½Π°ΡΠ΅Π½ΠΈΡ [2])) print ('\ t _____ | _____ | _____') ΠΏΠ΅ΡΠ°ΡΡ ("\ t | |") print ("\ t {} | {} | {}". ΡΠΎΡΠΌΠ°Ρ (Π·Π½Π°ΡΠ΅Π½ΠΈΡ [3], Π·Π½Π°ΡΠ΅Π½ΠΈΡ [4], Π·Π½Π°ΡΠ΅Π½ΠΈΡ [5])) print ('\ t _____ | _____ | _____') ΠΏΠ΅ΡΠ°ΡΡ ("\ t | |") print ("\ t {} | {} | {}".ΡΠΎΡΠΌΠ°Ρ (Π·Π½Π°ΡΠ΅Π½ΠΈΡ [6], Π·Π½Π°ΡΠ΅Π½ΠΈΡ [7], Π·Π½Π°ΡΠ΅Π½ΠΈΡ [8])) ΠΏΠ΅ΡΠ°ΡΡ ("\ t | |") ΠΏΠ΅ΡΠ°ΡΡ ("\ ΠΏ") # Π€ΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ ΠΏΠ΅ΡΠ°ΡΠΈ ΡΠ°Π±Π»ΠΎ def print_scoreboard (score_board): print ("\ t --------------------------------") print ("\ t ΠΠΠ‘ΠΠ Π‘Π§ΠΠ’ΠΠ") print ("\ t --------------------------------") ΠΈΠ³ΡΠΎΠΊΠΈ = ΡΠΏΠΈΡΠΎΠΊ (score_board.keys ()) print ("\ t", ΠΈΠ³ΡΠΎΠΊΠΈ [0], "\ t", ΡΠ°Π±Π»ΠΎ [ΠΈΠ³ΡΠΎΠΊΠΈ [0]]) print ("\ t", ΠΈΠ³ΡΠΎΠΊΠΈ [1], "\ t", ΡΠ°Π±Π»ΠΎ [ΠΈΠ³ΡΠΎΠΊΠΈ [1]]) print ("\ t -------------------------------- \ n") # Π€ΡΠ½ΠΊΡΠΈΡ, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, Π²ΡΠΈΠ³ΡΠ°Π» Π»ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΈΠ³ΡΠΎΠΊ def check_win (player_pos, cur_player): # ΠΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ Π²ΡΠΈΠ³ΡΡΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ soln = [[1, 2, 3], [4, 5, 6], [7, 8, 9], [1, 4, 7], [2, 5, 8], [3, 6, 9] Β» , [1, 5, 9], [3, 5, 7]] # Π¦ΠΈΠΊΠ», ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΠ΅Π½Π° Π»ΠΈ ΠΊΠ°ΠΊΠ°Ρ-Π»ΠΈΠ±ΠΎ Π²ΡΠΈΠ³ΡΡΡΠ½Π°Ρ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ Π΄Π»Ρ x Π² soln: Π΅ΡΠ»ΠΈ Π²ΡΠ΅ (y Π² player_pos [cur_player] Π΄Π»Ρ y Π² x): # ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌ True, Π΅ΡΠ»ΠΈ ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΡΠ΅Ρ Π»ΡΠ±Π°Ρ Π²ΡΠΈΠ³ΡΡΡΠ½Π°Ρ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ Π²Π΅ΡΠ½ΡΡΡ True # ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌ False, Π΅ΡΠ»ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ Π½Π΅ ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΡΠ΅Ρ return False # Π€ΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ, Π½Π°ΡΠΈΡΠΎΠ²Π°Π½Π° Π»ΠΈ ΠΈΠ³ΡΠ° def check_draw (player_pos): Π΅ΡΠ»ΠΈ len (player_pos ['X']) + len (player_pos ['O']) == 9: Π²Π΅ΡΠ½ΡΡΡ True return False # Π€ΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ ΠΎΠ΄ΠΈΠ½ΠΎΡΠ½ΠΎΠΉ ΠΈΠ³ΡΡ Tic Tac Toe def single_game (cur_player): # ΠΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΊΡΠ΅ΡΡΠΈΠΊΠΈ-Π½ΠΎΠ»ΠΈΠΊΠΈ values ββ= ['' Π΄Π»Ρ x Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ (9)] # Π‘ΠΎΡ ΡΠ°Π½ΡΠ΅Ρ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ, Π·Π°Π½ΡΡΡΠ΅ X ΠΈ O player_pos = {'X': [], 'O': []} # Game Loop Π΄Π»Ρ ΠΎΠ΄ΠΈΠ½ΠΎΡΠ½ΠΎΠΉ ΠΈΠ³ΡΡ Tic Tac Toe Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ True: print_tic_tac_toe (Π·Π½Π°ΡΠ΅Π½ΠΈΡ) # ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ Π΄Π»Ρ Π²Π²ΠΎΠ΄Π° MOVE ΠΏΡΡΠ°ΡΡΡΡ: print ("ΠΠ³ΡΠΎΠΊ", cur_player, "ΠΏΠΎΠ²ΠΎΡΠΎΡ.ΠΠ°ΠΊΠ°Ρ ΠΊΠΎΡΠΎΠ±ΠΊΠ°? : ", end =" ") ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΡΡ = int (Π²Ρ ΠΎΠ΄ ()) ΠΊΡΠΎΠΌΠ΅ ValueError: print (Β«ΠΠ΅Π²Π΅ΡΠ½ΡΠΉ Π²Π²ΠΎΠ΄ !!! ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ Π΅ΡΠ΅ ΡΠ°Π·Β») ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡ # ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠΈ Π΄Π»Ρ MOVE inout Π΅ΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ <1 ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅> 9: print (Β«ΠΠ΅Π²Π΅ΡΠ½ΡΠΉ Π²Π²ΠΎΠ΄ !!! ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ Π΅ΡΠ΅ ΡΠ°Π·Β») ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡ # ΠΡΠΎΠ²Π΅ΡΠΈΡΡ, Π½Π΅ Π·Π°Π½ΡΡ Π»ΠΈ ΡΡΠΈΠΊ Π΅ΡΠ»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ [move-1]! = '': print (Β«ΠΠ΅ΡΡΠΎ ΡΠΆΠ΅ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΎ. ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ Π΅ΡΠ΅ ΡΠ°Π· !!Β») ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡ # ΠΠ±Π½ΠΎΠ²ΠΈΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ± ΠΈΠ³ΡΠ΅ # ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΡΡΠ°ΡΡΡΠ° ΡΠ΅ΡΠΊΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ [move-1] = cur_player # ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ·ΠΈΡΠΈΠΉ ΠΈΠ³ΡΠΎΠΊΠΎΠ² player_pos [cur_player].Π΄ΠΎΠ±Π°Π²ΠΈΡΡ (ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΡΡ) # ΠΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π²ΡΠΈΠ³ΡΡΡΠ° Π΅ΡΠ»ΠΈ check_win (player_pos, cur_player): print_tic_tac_toe (Π·Π½Π°ΡΠ΅Π½ΠΈΡ) print ("ΠΠ³ΡΠΎΠΊ", cur_player, "Π²ΡΠΈΠ³ΡΠ°Π» ΠΈΠ³ΡΡ !!") ΠΏΠ΅ΡΠ°ΡΡ ("\ ΠΏ") Π²Π΅ΡΠ½ΡΡΡ cur_player # ΠΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠΎΠ·ΡΠ³ΡΡΡΠ° ΠΈΠ³ΡΡ Π΅ΡΠ»ΠΈ check_draw (player_pos): print_tic_tac_toe (Π·Π½Π°ΡΠ΅Π½ΠΈΡ) print ("ΠΠ³ΡΠ° Π½Π°ΡΠΈΡΠΎΠ²Π°Π½Π°") ΠΏΠ΅ΡΠ°ΡΡ ("\ ΠΏ") Π²Π΅ΡΠ½ΡΡΡ 'D' # Π‘ΠΌΠ΅Π½ΠΈΡΡ Ρ ΠΎΠ΄Ρ ΠΈΠ³ΡΠΎΠΊΠ° Π΅ΡΠ»ΠΈ cur_player == 'X': cur_player = 'Π' Π΅ΡΠ΅: cur_player = 'X' Π΅ΡΠ»ΠΈ __name__ == "__main__": print ("ΠΠ³ΡΠΎΠΊ 1") player1 = input ("ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΠΈΠΌΡ:") ΠΏΠ΅ΡΠ°ΡΡ ("\ ΠΏ") print ("ΠΠ³ΡΠΎΠΊ 2") player2 = input ("ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΠΈΠΌΡ:") ΠΏΠ΅ΡΠ°ΡΡ ("\ ΠΏ") # Π‘ΠΎΡ ΡΠ°Π½ΡΠ΅Ρ ΠΈΠ³ΡΠΎΠΊΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠ±ΠΈΡΠ°Π΅Ρ X ΠΈ O cur_player = player1 # Π₯ΡΠ°Π½ΠΈΡ Π²ΡΠ±ΠΎΡ ΠΈΠ³ΡΠΎΠΊΠΎΠ² player_choice = {'X': "", 'O': ""} # Π‘ΠΎΡ ΡΠ°Π½ΡΠ΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ options = ['X', 'O'] # Π₯ΡΠ°Π½ΠΈΡ ΡΠ°Π±Π»ΠΎ score_board = {player1: 0, player2: 0} print_scoreboard (ΡΠ°Π±Π»ΠΎ_ΡΡΠ΅ΡΠΎΠ²) # Game Loop Π΄Π»Ρ ΡΠ΅ΡΠΈΠΈ Tic Tac Toe # Π¦ΠΈΠΊΠ» ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΡΡΡ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° ΠΈΠ³ΡΠΎΠΊΠΈ Π½Π΅ Π²ΡΠΉΠ΄ΡΡ Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ True: # ΠΠ΅Π½Ρ Π²ΡΠ±ΠΎΡΠ° ΠΈΠ³ΡΠΎΠΊΠ° print ("ΠΠΎΠ²Π΅ΡΠ½ΠΈΡΠ΅, ΡΡΠΎΠ±Ρ Π²ΡΠ±ΡΠ°ΡΡ", cur_player) print ("ΠΠ²Π΅Π΄ΠΈΡΠ΅ 1 Π΄Π»Ρ X") print ("ΠΠ²Π΅Π΄ΠΈΡΠ΅ 2 Π²ΠΌΠ΅ΡΡΠΎ O") print (Β«ΠΠ²Π΅Π΄ΠΈΡΠ΅ 3, ΡΡΠΎΠ±Ρ Π²ΡΠΉΡΠΈΒ») # ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ Π²Π²ΠΎΠ΄Π° CHOICE ΠΏΡΡΠ°ΡΡΡΡ: Π²ΡΠ±ΠΎΡ = int (Π²Ρ ΠΎΠ΄ ()) ΠΊΡΠΎΠΌΠ΅ ValueError: print ("ΠΠ΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ Π²Π²ΠΎΠ΄ !!! ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ Π΅ΡΠ΅ ΡΠ°Π· \ n") ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡ # Π£ΡΠ»ΠΎΠ²ΠΈΡ Π²ΡΠ±ΠΎΡΠ° ΠΈΠ³ΡΠΎΠΊΠ° Π΅ΡΠ»ΠΈ Π²ΡΠ±ΠΎΡ == 1: player_choice ['X'] = cur_player Π΅ΡΠ»ΠΈ cur_player == player1: player_choice ['O'] = player2 Π΅ΡΠ΅: player_choice ['O'] = player1 elif choice == 2: player_choice ['O'] = cur_player Π΅ΡΠ»ΠΈ cur_player == player1: player_choice ['X'] = player2 Π΅ΡΠ΅: player_choice ['X'] = player1 elif choice == 3: print ("ΠΠΊΠΎΠ½ΡΠ°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ") print_scoreboard (ΡΠ°Π±Π»ΠΎ_ΡΡΠ΅ΡΠΎΠ²) ΡΠ»ΠΎΠΌΠ°ΡΡ Π΅ΡΠ΅: print ("ΠΠ΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ Π²ΡΠ±ΠΎΡ !!!! ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΡΠ½ΠΎΠ²Π° \ n") # Π‘ΠΎΡ ΡΠ°Π½ΡΠ΅Ρ ΠΏΠΎΠ±Π΅Π΄ΠΈΡΠ΅Π»Ρ Π² ΠΎΠ΄ΠΈΠ½ΠΎΡΠ½ΠΎΠΉ ΠΈΠ³ΡΠ΅ Tic Tac Toe ΠΏΠΎΠ±Π΅Π΄ΠΈΡΠ΅Π»Ρ = single_game (Π²Π°ΡΠΈΠ°Π½ΡΡ [Π²ΡΠ±ΠΎΡ-1]) # Π Π΅Π΄Π°ΠΊΡΠΈΡΡΠ΅Ρ ΡΠ°Π±Π»ΠΎ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΠΏΠΎΠ±Π΅Π΄ΠΈΡΠ΅Π»Π΅ΠΌ Π΅ΡΠ»ΠΈ ΠΏΠΎΠ±Π΅Π΄ΠΈΡΠ΅Π»Ρ! = 'D': player_won = player_choice [ΠΏΠΎΠ±Π΅Π΄ΠΈΡΠ΅Π»Ρ] Score_board [player_won] = Score_board [player_won] + 1 print_scoreboard (ΡΠ°Π±Π»ΠΎ_ΡΡΠ΅ΡΠΎΠ²) # Π‘ΠΌΠ΅Π½ΠΈΡΡ ΠΈΠ³ΡΠΎΠΊΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠ±ΠΈΡΠ°Π΅Ρ X ΠΈΠ»ΠΈ O Π΅ΡΠ»ΠΈ cur_player == player1: cur_player = player2 Π΅ΡΠ΅: cur_player = player1
ΠΠΎΡΠ° ΠΏΠΎΠΈΠ³ΡΠ°ΡΡ!
ΠΡΠ΅ ΡΠ°Π³ΠΈ ΠΏΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈΠ³ΡΡ Π·Π°Π²Π΅ΡΡΠ΅Π½Ρ.ΠΡΠΈΡΠ»ΠΎ Π²ΡΠ΅ΠΌΡ ΠΏΠΎΠΈΠ³ΡΠ°ΡΡ Π² ΠΈΠ³ΡΡ.
ΠΠ³ΡΠΎΠΊ 1 ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΠΈΠΌΡ: ΠΡΡΡΠΈ ΠΠ³ΡΠΎΠΊ 2 ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΠΈΠΌΡ: Π‘Π°Π½Π΄ΠΆΠΈ -------------------------------- Π’ΠΠΠΠ -------------------------------- ΠΡΡΡΠΈ 0 Π‘Π°Π½Π΄ΠΆΠΈ 0 -------------------------------- ΠΠΎΠ²Π΅ΡΠ½ΠΈΡΡ, ΡΡΠΎΠ±Ρ Π²ΡΠ±ΡΠ°ΡΡ ΠΡΡΡΠΈ ΠΠ²Π΅Π΄ΠΈΡΠ΅ 1 Π΄Π»Ρ X ΠΠ²Π΅Π΄ΠΈΡΠ΅ 2 Π΄Π»Ρ O ΠΠ²Π΅Π΄ΠΈΡΠ΅ 3, ΡΡΠΎΠ±Ρ Π²ΡΠΉΡΠΈ 1 | | | | _____ | _____ | _____ | | | | _____ | _____ | _____ | | | | | | ΠΠ³ΡΠΎΠΊ X Ρ ΠΎΠ΄.ΠΠ°ΠΊΠ°Ρ ΠΊΠΎΡΠΎΠ±ΠΊΠ°? : 5 | | | | _____ | _____ | _____ | | | X | _____ | _____ | _____ | | | | | | ΠΠ³ΡΠΎΠΊ O Ρ ΠΎΠ΄. ΠΠ°ΠΊΠ°Ρ ΠΊΠΎΡΠΎΠ±ΠΊΠ°? : 1 | | O | | _____ | _____ | _____ | | | X | _____ | _____ | _____ | | | | | | ΠΠ³ΡΠΎΠΊ X Ρ ΠΎΠ΄. ΠΠ°ΠΊΠ°Ρ ΠΊΠΎΡΠΎΠ±ΠΊΠ°? : 9 | | O | | _____ | _____ | _____ | | | X | _____ | _____ | _____ | | | | ΠΠΊΡ | | ΠΠ³ΡΠΎΠΊ O Ρ ΠΎΠ΄.ΠΠ°ΠΊΠ°Ρ ΠΊΠΎΡΠΎΠ±ΠΊΠ°? : 2 | | O | O | _____ | _____ | _____ | | | X | _____ | _____ | _____ | | | | ΠΠΊΡ | | ΠΠ³ΡΠΎΠΊ X Ρ ΠΎΠ΄. ΠΠ°ΠΊΠ°Ρ ΠΊΠΎΡΠΎΠ±ΠΊΠ°? : 3 | | O | O | ΠΠΊΡ _____ | _____ | _____ | | | X | _____ | _____ | _____ | | | | ΠΠΊΡ | | ΠΠ³ΡΠΎΠΊ O Ρ ΠΎΠ΄. ΠΠ°ΠΊΠ°Ρ ΠΊΠΎΡΠΎΠ±ΠΊΠ°? : 7 | | O | O | ΠΠΊΡ _____ | _____ | _____ | | | X | _____ | _____ | _____ | | O | | ΠΠΊΡ | | ΠΠ³ΡΠΎΠΊ X Ρ ΠΎΠ΄.ΠΠ°ΠΊΠ°Ρ ΠΊΠΎΡΠΎΠ±ΠΊΠ°? : 6 | | O | O | ΠΠΊΡ _____ | _____ | _____ | | | X | ΠΠΊΡ _____ | _____ | _____ | | O | | ΠΠΊΡ | | ΠΠ³ΡΠΎΠΊ X Π²ΡΠΈΠ³ΡΠ°Π» ΠΈΠ³ΡΡ !! -------------------------------- Π’ΠΠΠΠ -------------------------------- ΠΡΡΡΠΈ 1 Π‘Π°Π½Π΄ΠΆΠΈ 0 -------------------------------- ΠΠΎΠ²Π΅ΡΠ½ΠΈΡΡ, ΡΡΠΎΠ±Ρ Π²ΡΠ±ΡΠ°ΡΡ Π‘Π°Π½Π΄ΠΆΠΈ ΠΠ²Π΅Π΄ΠΈΡΠ΅ 1 Π΄Π»Ρ X ΠΠ²Π΅Π΄ΠΈΡΠ΅ 2 Π΄Π»Ρ O ΠΠ²Π΅Π΄ΠΈΡΠ΅ 3, ΡΡΠΎΠ±Ρ Π²ΡΠΉΡΠΈ 2 | | | | _____ | _____ | _____ | | | | _____ | _____ | _____ | | | | | | ΠΠ³ΡΠΎΠΊ O Ρ ΠΎΠ΄.ΠΠ°ΠΊΠ°Ρ ΠΊΠΎΡΠΎΠ±ΠΊΠ°? : 5 | | | | _____ | _____ | _____ | | | O | _____ | _____ | _____ | | | | | | ΠΠ³ΡΠΎΠΊ X Ρ ΠΎΠ΄. ΠΠ°ΠΊΠ°Ρ ΠΊΠΎΡΠΎΠ±ΠΊΠ°? : 3 | | | | ΠΠΊΡ _____ | _____ | _____ | | | O | _____ | _____ | _____ | | | | | | ΠΠ³ΡΠΎΠΊ O Ρ ΠΎΠ΄. ΠΠ°ΠΊΠ°Ρ ΠΊΠΎΡΠΎΠ±ΠΊΠ°? : 2 | | | O | ΠΠΊΡ _____ | _____ | _____ | | | O | _____ | _____ | _____ | | | | | | ΠΠ³ΡΠΎΠΊ X Ρ ΠΎΠ΄.ΠΠ°ΠΊΠ°Ρ ΠΊΠΎΡΠΎΠ±ΠΊΠ°? : 8 | | | O | ΠΠΊΡ _____ | _____ | _____ | | | O | _____ | _____ | _____ | | | X | | | ΠΠ³ΡΠΎΠΊ O Ρ ΠΎΠ΄. ΠΠ°ΠΊΠ°Ρ ΠΊΠΎΡΠΎΠ±ΠΊΠ°? : 1 | | O | O | ΠΠΊΡ _____ | _____ | _____ | | | O | _____ | _____ | _____ | | | X | | | ΠΠ³ΡΠΎΠΊ X Ρ ΠΎΠ΄. ΠΠ°ΠΊΠ°Ρ ΠΊΠΎΡΠΎΠ±ΠΊΠ°? : 9 | | O | O | ΠΠΊΡ _____ | _____ | _____ | | | O | _____ | _____ | _____ | | | X | ΠΠΊΡ | | ΠΠ³ΡΠΎΠΊ O Ρ ΠΎΠ΄.ΠΠ°ΠΊΠ°Ρ ΠΊΠΎΡΠΎΠ±ΠΊΠ°? : 6 | | O | O | ΠΠΊΡ _____ | _____ | _____ | | | O | Π _____ | _____ | _____ | | | X | ΠΠΊΡ | | ΠΠ³ΡΠΎΠΊ X Ρ ΠΎΠ΄. ΠΠ°ΠΊΠ°Ρ ΠΊΠΎΡΠΎΠ±ΠΊΠ°? : 7 | | O | O | ΠΠΊΡ _____ | _____ | _____ | | | O | Π _____ | _____ | _____ | | X | X | ΠΠΊΡ | | ΠΠ³ΡΠΎΠΊ X Π²ΡΠΈΠ³ΡΠ°Π» ΠΈΠ³ΡΡ !! -------------------------------- Π’ΠΠΠΠ -------------------------------- ΠΡΡΡΠΈ 2 Π‘Π°Π½Π΄ΠΆΠΈ 0 -------------------------------- ΠΠΎΠ²Π΅ΡΠ½ΠΈΡΡ, ΡΡΠΎΠ±Ρ Π²ΡΠ±ΡΠ°ΡΡ ΠΡΡΡΠΈ ΠΠ²Π΅Π΄ΠΈΡΠ΅ 1 Π΄Π»Ρ X ΠΠ²Π΅Π΄ΠΈΡΠ΅ 2 Π΄Π»Ρ O ΠΠ²Π΅Π΄ΠΈΡΠ΅ 3, ΡΡΠΎΠ±Ρ Π²ΡΠΉΡΠΈ 3 ΠΠΊΠΎΠ½ΡΠ°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ -------------------------------- Π’ΠΠΠΠ -------------------------------- ΠΡΡΡΠΈ 2 Π‘Π°Π½Π΄ΠΆΠΈ 0 --------------------------------
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΡ Π½Π°Π΄Π΅Π΅ΠΌΡΡ, ΡΡΠΎ ΡΡΠ° ΡΡΠ°ΡΡΡ Π±ΡΠ»Π° ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΠΉ ΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ²Π½ΠΎΠΉ Π΄Π»Ρ ΡΠΈΡΠ°ΡΠ΅Π»Ρ.Π― ΡΠ°ΠΊΠΆΠ΅ Π·Π°Π³ΡΡΠ·ΠΈΠ» ΠΊΠΎΠ΄ Π½Π° Github. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΡΠ΅ΡΠΈΡΡ Π·Π΄Π΅ΡΡ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ΄Π°. ΠΡΠ»ΠΈ Π΅ΡΡΡ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΠΎ ΠΈΠ³ΡΠ΅, Π½Π΅ ΡΡΠ΅ΡΠ½ΡΠΉΡΠ΅ΡΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ.
.
ΠΠ³ΡΠ° Β«ΠΡΠ΅ΡΡΠΈΠΊΠΈ-Π½ΠΎΠ»ΠΈΠΊΠΈΒ» Π½Π° Python
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ Ρ ΠΏΠΎΠΊΠ°ΠΆΡ Π²Π°ΠΌ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΡΡ ΠΈΠ³ΡΡ Β«ΠΡΠ΅ΡΡΠΈΠΊΠΈ-Π½ΠΎΠ»ΠΈΠΊΠΈΒ» Π² ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½ΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ C #.
ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
ΠΡΠ΅ΡΡΠΈΠΊΠΈ-Π½ΠΎΠ»ΠΈΠΊΠΈ — ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠ°Ρ ΠΈΠ³ΡΠ° Π΄Π»Ρ Π΄Π²ΡΡ ΠΈΠ³ΡΠΎΠΊΠΎΠ². Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΌΠΎΠ³ΡΡ ΠΈΠ³ΡΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π²Π° ΠΈΠ³ΡΠΎΠΊΠ°. ΠΡΠ° ΠΈΠ³ΡΠ° ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ·Π²Π΅ΡΡΠ½Π° ΠΊΠ°ΠΊ Β«ΠΊΡΠ΅ΡΡΠΈΠΊΠΈ-Π½ΠΎΠ»ΠΈΠΊΠΈΒ» ΠΈΠ»ΠΈ Β«ΠΊΡΠ΅ΡΡΠΈΠΊΠΈ-Π½ΠΎΠ»ΠΈΠΊΠΈΒ». ΠΠ΄ΠΈΠ½ ΠΈΠ³ΡΠΎΠΊ ΠΈΠ³ΡΠ°Π΅Ρ Ρ X, Π° Π΄ΡΡΠ³ΠΎΠΉ — Ρ O. Π ΡΡΠΎΠΉ ΠΈΠ³ΡΠ΅ Ρ Π½Π°Ρ Π΅ΡΡΡ Π΄ΠΎΡΠΊΠ°, ΡΠΎΡΡΠΎΡΡΠ°Ρ ΠΈΠ· ΡΠ΅ΡΠΊΠΈ 3×3. ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ΅ΡΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΎ.
ΠΠΎΡΠΊΠ° Π² ΠΊΡΠ΅ΡΡΠΈΠΊΠΈ-Π½ΠΎΠ»ΠΈΠΊΠΈ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
ΠΡΠ°Π²ΠΈΠ»Π° ΠΈΠ³ΡΡ
- Π’ΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΠΎ ΠΏΠ΅ΡΠ²ΡΠΉ ΠΈΠ³ΡΠΎΠΊ ΠΈΠ³ΡΠ°Π΅Ρ Ρ Β«Π₯Β». Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΅ΡΠΈΡΡ, ΠΊΡΠΎ Ρ ΠΎΡΠ΅Ρ Π²ΡΠ±ΡΠ°ΡΡ Β«XΒ», Π° ΠΊΡΠΎ — Β«OΒ».
- Π’ΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ³ΡΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ³ΡΠ°ΡΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ.
- ΠΡΠ»ΠΈ ΠΊΡΠΎ-ΡΠΎ ΠΈΠ· ΠΈΠ³ΡΠΎΠΊΠΎΠ² Π·Π°ΠΏΠΎΠ»Π½ΠΈΠ» ΠΊΠ²Π°Π΄ΡΠ°Ρ, ΡΠΎ Π΄ΡΡΠ³ΠΎΠΉ ΠΈΠ³ΡΠΎΠΊ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΠΈΠ³ΡΠΎΠΊ Π½Π΅ ΠΌΠΎΠ³ΡΡ ΠΎΡΠΌΠ΅Π½ΠΈΡΡ ΡΡΠΎΡ ΠΊΠ²Π°Π΄ΡΠ°Ρ.
- ΠΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π²Π° ΡΡΠ»ΠΎΠ²ΠΈΡ, ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ Π½ΠΈΡΡΡ ΠΈΠ»ΠΈ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΠ±Π΅Π΄Π°.
- ΠΠ³ΡΠΎΠΊ, ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΡΠ΄Π°ΡΡΡΡ ΡΠ°Π·ΠΌΠ΅ΡΡΠΈΡΡ ΡΡΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ Π·Π½Π°ΠΊΠ° (X ΠΈΠ»ΠΈ O) Π² Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½ΠΎΠΌ, Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΠΎΠΌ ΠΈΠ»ΠΈ Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΡΠ½ΠΎΠΌ ΡΡΠ΄Ρ, Π²ΡΠΈΠ³ΡΡΠ²Π°Π΅Ρ ΠΈΠ³ΡΡ.
Π£ΡΠ»ΠΎΠ²ΠΈΠ΅ Π²ΡΠΈΠ³ΡΡΡΠ°
ΠΠΎΠ±Π΅Π΄ΠΈΡΠ΅Π»Π΅ΠΌ Π±ΡΠ΄Π΅Ρ ΡΠΎΡ, ΠΊΡΠΎ ΠΏΠΎΡΡΠ°Π²ΠΈΡ ΡΡΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΎΡΠΌΠ΅ΡΠΊΠΈ (X ΠΈΠ»ΠΈ O) ΠΏΠΎ Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΠΈ, Π²Π΅ΡΡΠΈΠΊΠ°Π»ΠΈ ΠΈΠ»ΠΈ Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΠΈ.
ΠΠΎΠ΄ Π΄Π»Ρ ΠΈΠ³ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ:
- import os
- import time
- board = [», », », », », », », ‘ ‘,’ ‘,’ ‘]
- player = 1
- ######## ΡΠ»Π°Π³ΠΈ win ##########
- Win = 1
- Draw = -1
- Π Π°Π±ΠΎΡΠ°Π΅Ρ = 0
- Π‘ΡΠΎΠΏ = 1
- ###################################
- ΠΠ³ΡΠ° = ΠΠ°ΠΏΡΡΠΊ
- ΠΡΠΌΠ΅ΡΠΊΠ° = ‘X’
- # ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ ΡΠΈΡΡΠ΅Ρ ΠΈΠ³ΡΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅
- def DrawBoard ():
- print («% c |% c |% c»% (Π΄ΠΎΡΠΊΠ° [1], Π΄ΠΎΡΠΊΠ° [2], Π΄ΠΎΡΠΊΠ° [3]))
- print («___ | ___ | ___»)
- print («% c |% c |% c»% (Π΄ΠΎΡΠΊΠ° [4], Π΄ΠΎΡΠΊΠ° [5], Π΄ΠΎΡΠΊΠ° [6]))
- print («___ | ___ | ___ «)
- ΠΏΠ΅ΡΠ°ΡΡ («% c |% c |% c «% (Π΄ΠΎΡΠΊΠ° [7], Π΄ΠΎΡΠΊΠ° [8], Π΄ΠΎΡΠΊΠ° [9]))
- ΠΏΠ΅ΡΠ°ΡΡ (» | | «)
- # ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΠΏΡΡΡΡΡ ΠΏΠΎΠ·ΠΈΡΠΈΡ ΠΈΠ»ΠΈ Π½Π΅Ρ
- def CheckPosition (x):
- if (board [x] == »):
- return True
- else:
- return False
- # ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ, Π²ΡΠΈΠ³ΡΠ°Π» Π»ΠΈ ΠΈΠ³ΡΠΎΠΊ
- def CheckWin ():
- global Game
- # ΠΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ Π²ΡΠΈΠ³ΡΡΡΠ°
- if (board [1] == board [2] and board [2] == board [3] ] Π Π΄ΠΎΡΠΊΠ° [1]! = »):
- Game = Win
- elif (Π΄ΠΎΡΠΊΠ° [4] == Π΄ΠΎΡΠΊΠ° [5] ΠΈ Π΄ΠΎΡΠΊΠ° [5] == Π΄ΠΎΡΠΊΠ° [6] ΠΈ Π΄ΠΎΡΠΊΠ° [4]! = ‘ ‘):
- Game = Win
- elif (Π΄ΠΎΡΠΊΠ° [7] == Π΄ΠΎΡΠΊΠ° [8] ΠΈ Π΄ΠΎΡΠΊΠ° [8] == Π΄ΠΎΡΠΊΠ° [9] ΠΈ Π΄ΠΎΡΠΊΠ° [7]! =’ ‘):
- Game = Win
- # ΠΠ΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΠΎΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ Π²ΡΠΈΠ³ΡΡΡΠ°
- elif (Π΄ΠΎΡΠΊΠ° [1] == Π΄ΠΎΡΠΊΠ° [4] ΠΈ Π΄ΠΎΡΠΊΠ° [4] == Π΄ΠΎΡΠΊΠ° [7] ΠΈ Π΄ΠΎΡΠΊΠ° [1]! = »): 90 016
- Game = Win
- elif (Π΄ΠΎΡΠΊΠ° [2] == Π΄ΠΎΡΠΊΠ° [5] ΠΈ Π΄ΠΎΡΠΊΠ° [5] == Π΄ΠΎΡΠΊΠ° [8] ΠΈ Π΄ΠΎΡΠΊΠ° [2]! = »):
- Game = Win
- elif ( Π΄ΠΎΡΠΊΠ° [3] == Π΄ΠΎΡΠΊΠ° [6] ΠΈ Π΄ΠΎΡΠΊΠ° [6] == Π΄ΠΎΡΠΊΠ° [9] ΠΈ Π΄ΠΎΡΠΊΠ° [3]! = »):
- Game = Win
- #Diagonal Winning Condition
- elif (board [1 ] == Π΄ΠΎΡΠΊΠ° [5] ΠΈ Π΄ΠΎΡΠΊΠ° [5] == Π΄ΠΎΡΠΊΠ° [9] ΠΈ Π΄ΠΎΡΠΊΠ° [5]! = »):
- Game = Win
- elif (Π΄ΠΎΡΠΊΠ° [3] == Π΄ΠΎΡΠΊΠ° [5] ΠΈ Π΄ΠΎΡΠΊΠ° [5] == Π΄ΠΎΡΠΊΠ° [7] ΠΈ Π΄ΠΎΡΠΊΠ° [5]! = »):
- Game = Win
- # Match Tie or Draw Condition
- elif (board [1]! = » And board [2] ! = » And board [3]! = » And board [4]! = » And board [5]! = » And board [6]! = » And board [7]! = » Π board [8]! = » ΠΈ board [9]! = »):
- Game = Draw
- else:
- Game = ΠΠ°ΠΏΡΡΠΊ
- print («Ti ΠΠ³ΡΠ° c-Tac-Toe, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π½Π°Ρ Π‘ΡΡΠ°Π±ΠΎΠΌ Π‘ΠΎΠΌΠ°Π½ΠΈ Β»)
- print (Β« ΠΠ³ΡΠΎΠΊ 1 [X] — ΠΠ³ΡΠΎΠΊ 2 [O] \ n Β»)
- print ()
- print ()
- print (Β« ΠΠΎΠΆΠ°Π»ΡΠΉΡΡΠ° ΠΠΎΠ΄ΠΎΠΆΠ΄ΠΈΡΠ΅… «)
- time.sleep (3)
- while (Game == Running):
- os.system (‘cls’)
- DrawBoard ()
- if (player% 2! = 0):
- print (Β«ΠΠ΅ΡΠΎΡΡΠ½ΠΎΡΡΡ ΠΈΠ³ΡΠΎΠΊΠ° 1Β»)
- Mark = ‘X’
- else:
- print (Β«ΠΠ΅ΡΠΎΡΡΠ½ΠΎΡΡΡ ΠΈΠ³ΡΠΎΠΊΠ° 2Β»)
- Mark = ‘O’
- choice = int (input (Β«ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΠΏΠΎΠ·ΠΈΡΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ [1-9] Π³Π΄Π΅ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΎΡΠΌΠ΅ΡΠΈΡΡ: «))
- if (CheckPosition (choice)):
- board [choice] = Mark
- player + = 1
- CheckWin ()
- os.system (‘cls’)
- DrawBoard ()
- if (Game == Draw):
- print (Β«Game DrawΒ»)
- elif (Game == Win):
- player- = 1
- if ( player% 2! = 0):
- print (Β«ΠΠ³ΡΠΎΠΊ 1 Π²ΡΠΈΠ³ΡΠ°Π»Β»)
- else:
- print (Β«ΠΠ³ΡΠΎΠΊ 2 Π²ΡΠΈΠ³ΡΠ°Π»Β»)
9001 5
ΠΡΠ²ΠΎΠ΄
.