Форум сайта python.su
Здравствуйте уважаемые форумчане! В данный момент я пишу игру она в свою очередь являться текстовой РПГ. Впринципе я имею бета версию но она работает через консоль и в данный момент я пытаюсь перенести на интерфейс. Решил использовать tkinter так как он показался мне наиболее простым. Сама суть вопроса: Каким образом мне реализовать переход от одной сцены к другой? Сама игра имеет переменные path Поэтому цифры которые я ввожу правильно определяют действия. Но как сделать к примеру распределение? Можно ли строку сделать просто как в консоли чтобы через инпут ввод был.
Офлайн
Сумбурно. Ответить на вопрос невозможно.
Постройте серию вопросов.
Например.
1. Как принять данные от пользователя. Это будет цифры или строки.
2. ….
Офлайн
4kpt_IV
Сумбурно. Ответить на вопрос невозможно.Постройте серию вопросов.Например.1. Как принять данные от пользователя. Это будет цифры или строки.2. ….
Офлайн
Т.е. Вы переназначаете обработчики событий на одни и те же клавиши? Я правильно понял? От чего зависит какие обработчики нужны?
Теперь к чему Вы хотите привязать поле ввода Entry и менять какие переменные? Причем здесь клавиши?
P.S. Это как раз тот случай, когда лучше не использовать спецтерминологию
Офлайн
Что то в этом роде
Сверху поле с текстом.
Второе поле это поле с действиями.
Самая нижняя строка это непосредственно выбор.
Отредактировано WhattaSkill (Ноя. 20, 2016 02:22:06)
Офлайн
Вот так я реализовал движение по локациям
from tkinter import * def newprintCSSt(x): CSSt.config(state="normal") CSSt.delete(1.0,END) CSSt.insert(END,x) CSSt.config(state="disabled") ent.delete(0,END) def newprinttex(x): tex.config(state="normal") tex.delete(1.0,END) tex.insert(END,x) tex.config(state="disabled") ent.delete(0,END) def output(event): global path s = ent.get() if s == "1" and path==0: path=1 newprinttex("Вы пошли") newprintCSSt("1)Идти дальше\n2)Вернуться назад") elif s == "2" and path==0: newprinttex("Вы остались") newprintCSSt("1)Идти дальше\n2)Стоять дальше") elif s=="1" and path==1: path=2 newprinttex("Вы ушли слишком далеко") newprintCSSt("1)Умереть") elif s=="2" and path==1: path=0 newprinttex("Вы остались") newprintCSSt("1)Идти дальше\n2)Стоять дальше") elif s=="1" and path==2: newprinttex("Вы умерли") exit(0) else: newprinttex("Выберите нормальное действие") root = Tk() root.minsize(width=800,height=600) root.maxsize(width=800,height=600) ent = Entry(root,width=1) but = Button(root,text="Enter") tex = Text(root,width=20,height=3,font="12",wrap=WORD) CSSt = Text(root,width=20,height=3,font="12",wrap=WORD) ent.place(x=10,y=560,width=700,height=25) CSSt.place(x=10,y=260,width=780,height=240) but.place(x=730,y=560) tex.place(x=10,y=10,width=780,height=240) but.bind("<Button-1>",output) ent.bind("<Return>",output) path=0 newprinttex("Вы в лагере") newprintCSSt("1)Пойти\n2)Стоять") root.mainloop()
Отредактировано WhattaSkill (Ноя. 20, 2016 03:04:31)
Офлайн
Приношу свои извинения, но я вообще Вас не пойму.
4kpt_IV
От чего зависит какие обработчики нужны?
Теперь к чему Вы хотите привязать поле ввода Entry и менять какие переменные? Причем здесь клавиши?
Офлайн
4kpt_IVДа конечно могу. Entry Я хотел бы сделать как поле запроса. К примеру у меня есть поддействия в действиях (Открыть меню- открыть инвентарь - надеть\снять вещь - выбор вещи) Реализовано у меня всё это было стопкой из if где постояно заново запрашивалась новая переменная для выбора действия. А сейчас делая кнопку/поле я могу привязать её лишь к функции, а не непосредственно производить запрос через инпут.
Приношу свои извинения, но я вообще Вас не пойму.
Офлайн
4kpt_IVЗдравствуйте! Я вроде как почти придумал каким образом мне сделать возможность вывод переменных. Я просто все инпуты назвал одной переменной и создал функцию которая её меняет вот только одно но мне не удаётся делать запросы перед действиями тоеть он просто прогоняет все по 1 действию не запрашивая второй раз как можно заставить при каждой смене сцен спрашивать его заново ввод данных?
Приношу свои извинения, но я вообще Вас не пойму.
from tkinter import * import time path=0 def CSSc(ev): global CSS, stop CSS=ent.get() stop=1 def newprintCSSt(x): #Редактирование текста в окне выбора global stop stop=0 CSSt.config(state="normal") CSSt.delete(1.0,END) CSSt.insert(END,x) CSSt.config(state="disabled") ent.delete(0,END) def newprinttex(x): #Редактирование текста в окне информации global stop stop=0 tex.config(state="normal") tex.delete(1.0,END) tex.insert(END,x) tex.config(state="disabled") ent.delete(0,END) root = Tk() root.minsize(width=800,height=600) root.maxsize(width=800,height=600) ent = Entry(root,width=1) but = Button(root,text="Enter") tex = Text(root,width=20,height=3,font="12",wrap=WORD) CSSt = Text(root,width=20,height=3,font="12",wrap=WORD) ent.place(x=10,y=560,width=700,height=25) CSSt.place(x=10,y=260,width=780,height=240) but.place(x=730,y=560) tex.place(x=10,y=10,width=780,height=240) but.bind("<Button-1>",CSSc) ent.bind("<Return>",CSSc) while True: if path==0: path=0 newprinttex("Вы в лагере") newprintCSSt("1)Пойти\n2)Стоять") while stop==0: #Вот здесь вот попытался сделать паузу но так нельзя time.sleep(10) continue if CSS=="1": path=1 continue elif CSS=="2": newprinttex("Вы остались") newprintCSSt("1)Идти дальше\n2)Стоять дальше") else: newprinttex("Выберите нормальное действие") elif path==1: newprinttex("Вы пошли") newprintCSSt("1)Идти дальше\n2)Вернуться назад") if CSS=="1": path=2 elif CSS=="2": path=0 else: newprinttex("Выберите нормальное действие") elif path==2: newprinttex("Вы умерли") exit(0) root.mainloop()
Отредактировано WhattaSkill (Ноя. 22, 2016 05:32:27)
Офлайн
Всем спасибо! Разобрался решил просто сделать одну большую функцию с координатами на действия.
Офлайн