HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > Общие вопросы программирования
   
 
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 24.05.2024, 20:31
anklain
Познающий
Регистрация: 05.05.2022
Сообщений: 82
С нами: 2119802

Репутация: 8
По умолчанию

Делаю крестики нолики с графикой для проекта. когда на поле более 3 крестиков/ноликов начальный пропадает. Проблема в том, что сломались комбинации для победы. Не работают по диагонали комбинации, по бокам. Просьба помочь, т.к. не особо горю желанием потратить еще пару часов за данной работой. Заранее спасибо

крестики нолики:





Код:
from tkinter import *

frm= []; btn = []; who = True
playArea = []
standings = []                   # Турнирная таблица (приложение)
moves = []
array = []

def play(n):
    global who
    btn[n].config(text= 'X' if who else '0', state=DISABLED)
    playArea[n] = 1 if who else -1
    standings[0] = playArea[0] + playArea[1] + playArea[2]
    standings[1] = playArea [3] + playArea[4] + playArea[5]
    standings[2] = playArea [6] + playArea[7] + playArea[8]
    standings[3] = playArea[0] + playArea[3] + playArea[6]
    standings[4] = playArea [1] + playArea[4] + playArea[7]
    standings [5] = playArea [2] + playArea [5] + playArea[8]
    standings[6] = playArea[0] + playArea [4] + playArea[8]
    standings [7] = playArea [2] + playArea[4] + playArea[6]
    print(playArea,n, standings [0:8])

    for i in range(3):
        if standings[i] == 3:
           root = Tk()
           root.title('Player X Won!')
           lbl1 = Label(root, text='Player X has won! Congrats!')
           lbl1.grid(column=0, row=0)
           root.geometry('350x175')
           lbl1.place(x=110, y=70)
           root.mainloop()
        elif standings[i] == -3:
           root = Tk()
           root.title('Player 0 Won!')
           lbl1 = Label(root, text='Player 0 has won! Congrats!')
           lbl1.grid(column=0, row=0)
           root.geometry('350x175')
           lbl1.place(x=110, y=70)
           root.mainloop()
    who = not(who)

    def on_click(event):
        print(f"Clicked at x={standings}")

    moves = (n)
    array.append(n)
    g = (array[0])
    desired_length = 5

    def check_array_length(array, desired_length):
        if len(array) > desired_length:
            return True
        else:
            return False

    if check_array_length(array, desired_length):
        btn[g].config(text='', state=NORMAL)
        array.pop(0)
        playArea[g] = 0

for i in range(3):
    frm.append(Frame())
    frm[i].pack(expand=YES, fill=BOTH)
    for j in range(3):
        btn.append(Button(frm[i], text=' ', font=('mono', 20, 'bold'), width=3, height=2))
        btn[i*3+j].config(command=lambda n=i*3+j:play(n))
        btn[i*3+j].pack(expand=YES, fill=BOTH, side=LEFT, padx=1, pady=1)
        playArea.append(0)
        standings.append(0)
mainloop()
 
Ответить с цитированием
 





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.