Проєкт "Хрестики-нулики"
Створити форму з 9 кнопками для поля гри, кнопкою початку гри, написом для виведення результату гри.
На першому етапі обидва гравці керуються користувачем, згодом можна додати алгоритм гри з комп'ютером.
Написи із 9 кнопок ігрового поля слід вилучити, змінивши відповідну властивість text. Є зміст перейменувати першу кнопку так, щоб нумерація кнопок на полі була однотипною: pushButton_1,pushButton_2, pushButton_3 і т.д.
До кожної із кнопок необхідно створити обробник події:
self.pushButton_10.clicked.connect(self.start)
self.pushButton_1.clicked.connect(self.hid)
При цьому функція start має розпочинати гру (прив'язана до кнопки "Почати гру"), а функція hid - прикріплена до події клацання кожної із ігрових кнопок.
Кнопка "Почати гру" розпочинає гру: змінна gravec набуває значення "х", ігрове поле очищується. Для зручності очищення варто занести всі кнопки в список knopki, і у циклі встановлювати текстові значення у порожні.
for element in knopki:
element.setText("")
Клацання кожної із кнопок ігрового поля має викликати одну й ту ж функцію hid. Її зміст полягає у тому, що дізнавшись назву кнопки, яка викликала функцію self.sender(), змінити текст цієї кнопки.
sending_button = self.sender()
a=int(sending_button.objectName()[-1])
У змінній sending_button зберігається назва кнопки, при клацанні на яку відбувся виклик функції hid: <PyQt4.QtGui.QPushButton object at 0x00000000039F3288>
Щоб дізнатись програмну назву цього об'єкту, використаємо функцію sending_button.objectName(), що дасть результатом, наприклад pushButton_1
А виокремлення останнього символу з цієї назви sending_button.objectName()[-1] дає порядковий номер кнопки, яку було натиснуто.
Таким чином, у змінній a збережено номер кнопки, яку натиснув користувач. Необхідно змінити напис на цій кнопці - на хрестик чи нулик відповідно.
sending_button.setText(gravec)
І звісно, слід перевести хід для наступного гравця (змінна gravec набуває значення "о").
Для того, щоб визначити перемогу в грі (однаковий вміст кнопок по горизонталі, вертикалі чи діагоналі), слід передбачити відповідну процедуру перевірки (комплекс команд if). Можливо, зручно буде сформувати окремий список вмісту тексту кнопок.
Дошка для обговорення проекту https://trello.com/b/YUWRg5ec/-