С Новым годом! Форум программистов, компьютерный форум, киберфорум
Python: GUI, графика
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 22.03.2017
Сообщений: 15
1
PyQt5

Сделать графический интерфейс для крестиков-ноликов

17.04.2017, 00:33. Показов 2607. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Есть код для крестиков-ноликов, все более-менее работает.
Хочу сделать GUI с помощью PyQT, пока сложно все это доходит до меня (PyQy имею ввиду).
Если не сложно, обьясните в двух словах, как через PyQT лучше всего сделать поле для конкретно моего кода:

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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
import sys
 
 
 
field = {1:'.',2:'.',3:'.',
         4:'.',5:'.',6:'.',
         7:'.',8:'.',9:'.',}
 
 
 
def turn_comp():
    print('Computer thinking...\n')
    checking = []
    import random
    global field
    for x in range(1, 10):
        if field[x] == '.':
            checking.append(x)
    if field[1]=='X' and field[2]=='X' and field[3] != 'O':
        field[3] = 'O'
    elif field[1]=='X' and field[3]=='X' and field[2] != 'O' :
        field[2] = 'O'
    elif field[2]=='X' and field[3]=='X' and field[1] != 'O':
        field[1] = 'O'
    elif field[4]=='X' and field[5]=='X' and field[6] != 'O':
        field[6] = 'O'
    elif field[5]=='X' and field[6]=='X'and field[4] != 'O':
        field[4] = 'O'
    elif field[4]=='X' and field[6]=='X' and field[5] != 'O':
        field[5] = 'O'
    elif field[7]=='X' and field[8]=='X' and field[9] != 'O' :
        field[9] = 'O'
    elif field[7]=='X' and field[9]=='X' and field[8] != 'O':
        field[8] = 'O'
    elif field[8]=='X' and field[9]=='X' and field[7] != 'O':
        field[7] = 'O'
    elif field[1] == 'X' and field[5] == 'X' and field[9] != 'O':
        field[9] = 'O'
    elif field[1] == 'X' and field[9] == 'X' and field[5] != 'O':
        field[5] = 'O'
    elif field[5] == 'X' and field[9] == 'X' and field[1] != 'O':
        field[1] = 'O'
    elif field[3] == 'X' and field[5] == 'X' and field[7] != 'O':
        field[7] = 'O'
    elif field[3] == 'X' and field[7] == 'X' and field[5] != 'O':
        field[5] = 'O'
    elif field[7] == 'X' and field[5] == 'X' and field[3] != 'O':
        field[3] = 'O'
    elif field[1] == 'X' and field[4] == 'X' and field[7] != 'O':
        field[7] = 'O'
    elif field[1] == 'X' and field[7] == 'X' and field[4] != 'O':
        field[4] = 'O'
    elif field[7] == 'X' and field[4] == 'X' and field[1] != 'O':
        field[1] = 'O'
    elif field[2] == 'X' and field[5] == 'X' and field[8] != 'O':
        field[8] = 'O'
    elif field[2] == 'X' and field[8] == 'X' and field[5] != 'O':
        field[5] = 'O'
    elif field[5] == 'X' and field[8] == 'X' and field[2] != 'O':
        field[2] = 'O'
    elif field[3] == 'X' and field[6] == 'X'and field[9] != 'O':
        field[9] = 'O'
    elif field[6] == 'X' and field[9] == 'X' and field[3] != 'O':
        field[3] = 'O'
    else:
        field[random.choice(checking)] = 'O'
    for x in range(1,9,3):
        for y in range(3):
            print(field[x+y],end='')
        print()
    if field[3] == 'X' and field[9] == 'X' and field[6] != 'O':
        field[6] = 'O'
    elif field[1]=='O'  and field[2]=='O' and field[3]=='O':
        sys.exit('YOU LOSE')
    elif field[4]=='O'  and field[5]=='O' and field[6]=='O':
        sys.exit('YOU LOSE')
    elif field[7]=='O'  and field[8]=='O' and field[9]=='O':
        sys.exit('YOU LOSE')
    elif field[1]=='O'  and field[4]=='O' and field[7]=='O':
        sys.exit('YOU LOSE')
    elif field[2]=='O'  and field[5]=='O' and field[8]=='O':
        sys.exit('YOU LOSE')
    elif field[3]=='O'  and field[6]=='O' and field[9]=='O':
        sys.exit('YOU LOSE')
    elif field[1]=='O'  and field[5]=='O' and field[9]=='O':
        sys.exit('YOU LOSE')
    elif field[3]=='O'  and field[5]=='O' and field[7]=='O':
        sys.exit('YOU LOSE')
    elif not '.' in list(field.values()): sys.exit('DRAW')
 
    else: turn_user()
 
def turn_user():
    global field
    field[int(input('Please, enter your coord:'))] = 'X'
    for x in range(1,9,3):
        for y in range(3):
            print(field[x+y],end='')
        print()
    if field[1]=='X'  and field[2]=='X' and field[3]=='X':
        sys.exit('YOU WIN')
    elif field[4]=='X'  and field[5]=='X' and field[6]=='X':
        sys.exit('YOU WIN')
    elif field[7]=='X'  and field[8]=='X' and field[9]=='X':
        sys.exit('YOU WIN')
    elif field[1]=='X'  and field[4]=='X' and field[7]=='X':
        sys.exit('YOU WIN')
    elif field[2]=='X'  and field[5]=='X' and field[8]=='X':
        sys.exit('YOU WIN')
    elif field[3]=='X'  and field[6]=='X' and field[9]=='X':
        sys.exit('YOU WIN')
    elif field[1]=='X'  and field[5]=='X' and field[9]=='X':
        sys.exit('YOU WIN')
    elif field[3]=='X'  and field[5]=='X' and field[7]=='X':
        sys.exit('YOU WIN')
    elif not '.' in list(field.values()): sys.exit('DRAW')
    else: turn_comp()
 
 
turn_user()
Просто вообще никак в голову не укладываеться, как для словаря можно сделать поле в виде 3*3 и при клике на определенную клетку будет изменяться значение словаря.

Извините за нубство и заранее спасибо.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.04.2017, 00:33
Ответы с готовыми решениями:

Как сделать графический интерфейс для данного кода
import requests, time from bs4 import BeautifulSoup import csv headers = {'User-agent':...

Робот для крестиков ноликов
import pygame import sys def check_control(mas, sign): # ПРОВЕРКА ВЫЙГРАША zero = 0 ...

ИИ для крестиков ноликов на python
Нужно сделать ИИ на python для победы в игре крестики нолики против другого ИИ. То есть нужно...

как сделать графический интерфейс
всем привет хотел спросить как делать графический интерфейс через фотошоп для питона(python) ну или...

3
1786 / 1036 / 445
Регистрация: 12.05.2016
Сообщений: 2,550
17.04.2017, 10:11 2
Цитата Сообщение от grzegorz1 Посмотреть сообщение
Просто вообще никак в голову не укладываеться, как для словаря можно сделать поле в виде 3*3 и при клике на определенную клетку будет изменяться значение словаря.
Рисуете поле(paintEvent и QPainter в помощь), при клике мышью(mousePressEvent) проверяете в какое поле попали(изменяете свой словарь), перерисовываете. Загуглите примеры игр на qt.
1
0 / 0 / 0
Регистрация: 22.03.2017
Сообщений: 15
17.04.2017, 10:41  [ТС] 3
Цитата Сообщение от shvyrevvg Посмотреть сообщение
Рисуете поле(paintEvent и QPainter в помощь), при клике мышью(mousePressEvent) проверяете в какое поле попали(изменяете свой словарь), перерисовываете. Загуглите примеры игр на qt.
Спасибо большое
0
1786 / 1036 / 445
Регистрация: 12.05.2016
Сообщений: 2,550
17.04.2017, 10:51 4
grzegorz1, http://doc.qt.io/qt-5/qtdesign... e-cpp.html
1
17.04.2017, 10:51
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.04.2017, 10:51
Помогаю со студенческими работами здесь

П0м0гите сделать средний и сложный уровни сложности для крестиков-ноликов
Помогите реализовать среднюю и сложную уровни сложности в игре "крестики-нолики". Я смог...

ИИ для крестиков ноликов на С++
вот написал крестики нолики 3х3 но немогу написать ИИ для компа тупо перебирать все комбинации...

Бот для крестиков-ноликов
Хочу написать бота для крестиков-ноликов и вот тут незадача, или нужно перечислять все комбинации...

Функция для крестиков-ноликов
Здравствуйте, я пишу свою первую программу на функциональном языке программирования, поэтому...

Дописать код для крестиков ноликов
Есть код крестиков ноликов для двух игроков с выбором размера поля, туда надо добавить игру с...

Алгоритм minimax для крестиков-ноликов
В общем, написал я minimax для крестиков-ноликов, а враг отчего-то "не хочет" выигрывать. При...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Как создать свою первую игру в стиле Doom на Unreal Engine
InfoMaster 15.01.2025
Разработка шутера от первого лица в стиле классического Doom представляет собой увлекательное путешествие в мир игрового программирования, где сочетаются творческий подход и технические навыки. . . .
Параллельное программировани­е: основные технологии и принципы
InfoMaster 15.01.2025
Введение в параллельное программирование Параллельное программирование представляет собой фундаментальный подход к разработке программного обеспечения, который позволяет одновременно выполнять. . .
Как написать микросервис на C# с Kafka, MediatR, Redis и GitLab CI/CD
InfoMaster 15.01.2025
В современной разработке программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот подход позволяет разделить сложную систему. . .
Что такое CQRS и как это реализовать на C# с MediatR
InfoMaster 15.01.2025
Концепция CQRS и её роль в современной разработке В современном мире разработки программного обеспечения архитектурные паттерны играют ключевую роль в создании масштабируемых и поддерживаемых. . .
Как настроить CI/CD с Azure DevOps
InfoMaster 15.01.2025
CI/ CD, или непрерывная интеграция и непрерывное развертывание, представляет собой современный подход к разработке программного обеспечения, который позволяет автоматизировать и оптимизировать процесс. . .
Как настроить CI/CD с помощью Jenkins
InfoMaster 15.01.2025
Введение в CI/ CD и Jenkins В современной разработке программного обеспечения непрерывная интеграция (CI) и непрерывная доставка (CD) стали неотъемлемыми элементами процесса создания качественных. . .
Как написать микросервис на Go/Golang с Kafka, REST и GitHub CI/CD
InfoMaster 14.01.2025
Определение микросервиса, преимущества использования Go/ Golang Микросервис – это архитектурный подход к разработке программного обеспечения, при котором приложение состоит из небольших, независимо. . .
Как написать микросервис с нуля на C# с RabbitMQ, CQRS, Swagger и CI/CD
InfoMaster 14.01.2025
В современном мире разработки программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот архитектурный подход предполагает. . .
Как создать интернет-магазин на PHP и JavaScript
InfoMaster 14.01.2025
В современном мире электронная коммерция стала неотъемлемой частью бизнеса. Создание собственного интернет-магазина открывает широкие возможности для предпринимателей, позволяя достичь большей. . .
Как написать Тетрис на Ассемблере
InfoMaster 14.01.2025
Тетрис – одна из самых узнаваемых и популярных компьютерных игр, созданная в 1984 году советским программистом Алексеем Пажитновым. За прошедшие десятилетия она завоевала симпатии миллионы людей по. . .
Как создать игру "Танчики" на Unity3d и C#
InfoMaster 14.01.2025
Разработка игр – это увлекательный процесс, сочетающий в себе творчество и технические навыки. В этой статье мы рассмотрим создание классической игры "Танчики" с использованием Unity3D и языка. . .
Организую платный онлайн микро-курс по доработке Android-клиента Telegram
_Ivana 14.01.2025
Официальная версия и распространенные форки не полностью устраивают? Сделай свою кастомную версию клиента! 4 занятия по 2 часа (2 недели пн, ср 19:00-21:00 по Москве). Первое вводное занятие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru