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

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

16.10.2023, 21:59. Показов 989. Ответов 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
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru