Форум программистов, компьютерный форум, киберфорум
Python: Tkinter
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 16.10.2023
Сообщений: 1

Игра "Крестики-нолики"

16.10.2023, 21:59. Показов 1035. Ответов 0

Студворк — интернет-сервис помощи студентам
Добрый день.
Помогите, пожалуйста, исправить код так, чтобы компьютер имел выигрышную стратегию.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
from tkinter import *
import random, time
 
def stop_game():
    global game_left
    for item in game_left:
        buttons[item].config(bg="thistle1", state="disabled")
 
def win(n):
    global game
    if (game[0] == n and game[1] == n and game[2] == n) or (game[3] == n and game[4] == n and game[5] == n) or (game[6] == n and game[7] == n and game[8] == n) \
            or (game[0] == n and game[3] == n and game[6] == n) or (game[1] == n and game[4] == n and game[7] == n) or (game[2] == n and game[5] == n and game[8] == n)\
            or (game[0] == n and game[4] == n and game[8] == n) or (game[2] == n and game[4] == n and game[6] == n):
        return True
 
def push(b):
    global game
    global game_left
    global turn
    game[b] = "X"
    buttons[b].config(text="X", bg="thistle1", state="disabled")
    game_left.remove(b)  # "выбрасываем" ход b
 
    if b == 4 and turn == 0:
        t = random.choice(game_left)
    elif b != 4 and turn == 0:
        t = 4
    if turn > 0:
        t = 8 - b
    if t not in game_left:
        try:
            t = random.choice(game_left)
        except IndexError:
            label["text"] = "Ничья!"
            stop_game()
 
    game[t] = "0"
    time.sleep(0.5)
    buttons[t].config(text="0", bg="thistle1", state="disabled")
 
    if win("X"):
        label["text"] = "Вы победили!"
        stop_game()
    elif win("0"):
        label["text"] = "Вы проиграли"
        stop_game()
    else:
        if (len(game_left)>1):
            game_left.remove(t)
        else:
            label["text"] = "Ничья!"
            stop_game()
        turn += 1
def new_game():
    global game
    global game_left
    global turn
    game = [None] * 9
    game_left = list(range(9))
    turn = 0
    label["text"] = "Игра крестики-нолики"
    for button in buttons:
        button.config(text="", bg="SystemButtonFace", state="normal")
 
game = [None] * 9 #Данные о ходах (где крестики, где нолики)
game_left = list(range(9)) #используем список, чтобы понимать, какие ячейки остались в игре
turn = 0
 
root = Tk()
label = Label(width=20, text="Игра крестики-нолики", font=("Arial", 20, "bold"))
buttons = [Button(width=9, height=3, font=("Arial", 28, "bold"), bg = "white", command=lambda x=i: push(x)) for i in range(9)] #Экземпляр класса Button
 
label.grid(row=0, column=0, columnspan=3)
row = 1
col = 0
for i in range(9):
    buttons[i].grid(row=row, column=col)
    col += 1
    if col == 3:
        row += 1
        col = 0
 
new_game_button = Button(text="Новая игра", font=("Arial", 14), command=new_game)
new_game_button.grid(row=row, columnspan=3)
root.mainloop()
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.10.2023, 21:59
Ответы с готовыми решениями:

Крестики нолики
Доброго времени суток. Мне нужно создать поле 3х3 через Canvas для крестиков ноликов, но когда я создал сетку, мне доступно только одно...

Крестики-нолики
Я пытаюсь сделать крестики-нолики. В целом игра работает, но за одним исключением. У меня осуществлена только проверка выигрыша крестиков,...

Крестики-нолики
def check_win(): global field global click_button if len(click_button) == 9: ...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.10.2023, 21:59
Помогаю со студенческими работами здесь

Крестики-нолики на бесконечном поле, ошибки
from Tkinter import * root = Tk() #формирование поля cell_size = 24 x_count = 30 y_count = 24 #признак окончания игры ...

Игра «Крестики-нолики»
как написать программу Игра «Крестики-нолики» для поля 3х3 на Python

Крестики-нолики
Здравствуйте, дано задание: Извиняюсь за качество. Из-за плохого качества изображения решила написать задание от руки. ...

Крестики нолики QT edition
Всем ку! У меня возникли сложности с этой задачей -  "Разработайте игру «Крестики-нолики» на поле 3×3 с графическим пользовательским...

QT5 Крестики-нолики
Помогите пожалуйста, сделать так чтобы игрок играл с ботом ,а не с другим игроком и выводился результат кто победил.Буду очень ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru