Форум сайта python.su
Да самые что ни есть банальнейшие крестики-нолики с вопросами. Нажимаешь на одну из 9 кнопок- ответил правильно-твоя ячейка, ставится твой крест, ход переходит второму; ответил неправильно- ставится нолик второго игрока и ход все равно переходит к нему.
Офлайн
Тогда банально не верна архитектура.
Поясняйте. Что значит: “перейдет ко второму?”. Т.е. если следующий ответ будет правильным - то ставиться уже нолик (или наоборот)? Как вопросы связаны с кнопками? Как Вы их храните? Или они вызываются просто последовательно? Когда пользователь нажал на вопрос, ответил неверно. Ход перешел ко второму. Он должен тоже нажимать? Или отвечать на тот же вопрос?
Опишите нормально события в Вашей системе.
Офлайн
Игроков двое. Пусть первый игрок- крестик, второй- нолик. Первый игрок нажимает на кнопку, появляется вопрос, игрок отвечает, производится проверка: если ответ верен, то ставится крестик, ходит второй игрок; если первый ответил неверно, то ставится нолик, и дальше все равно ходит второй игрок, который выбирает уже другую ячейку.
По поводу вопросов, я собираюсь связать кнопки с девятью темами, вопросы будут связаны с функцией question(думал попробовать в отдельном файле, через массивы, наверное)
Офлайн
Вот теперь стало понятнее. Ваша примерная архитектура:
user = {"active": "X", "passive": "O"} # def get_questions(theme): # здесь организуете получение вопроса в зависимости от темы и возвращаете вопрос, возможные # ответы и позицию правильного ответа return question, ansvers, position # def create_question_panel(question, ansvers): # здесь Вы строите toplevel с вопросом и возможными ответами и возвращаете ответ, который выбран return ansver # def analysis_bind(event): # основной обработчик событий global user if event.widget["state"] == "normal": # проверяем, можно ли использовать вопрос theme = event.widget["text"] question, ansvers, position = get_questions(theme) user_ansver = create_questions_panel(questions, ansvers) if ansvers.index(user_ansver) == position: # анализ верности ответа event.widget["text"] = user["active"] else: event.widget["text"] = user["passive"] event.widget["state"] = "disabled" # отключаем вопрос, чтобы нельзя было больше нажать user["passive"], user["active"] = user["active"], user["passive"] # меняем пользователей местами # # здесь Вы создаете все кнопки и привязываете к ним событие analysis_bind и запускаете .mainloop()
but = Tkinter.Button(root, text="") but.theme = "first theme" # если темы собраны в списке, то but.theme.pop(0)
theme = event.widget.theme
Отредактировано 4kpt_II (Май 27, 2014 23:22:46)
Офлайн