Spaces:
Runtime error
Runtime error
| import streamlit as st | |
| import pexpect | |
| import time | |
| import streamlit.components.v1 as components | |
| if 'child' not in st.session_state: | |
| st.session_state['child'] = pexpect.spawn("python danse_macabre.py", encoding='utf-8', timeout=None) | |
| child = st.session_state['child'] | |
| if 'messages' not in st.session_state: | |
| st.session_state['messages'] = [] | |
| st.title("Danse Macabre AI Text RPG") | |
| st.header("The first Text RPG powered by ChatGPT") | |
| st.write("version : alpha 0.0.1") | |
| st.write("For a fully playable version of this game with images, go here : https://github.com/Taiko3615/Danse-Macabre") | |
| # creating a single-element container | |
| placeholder = st.empty() | |
| if "text" not in st.session_state: | |
| st.session_state["text"] = "" | |
| def submit(): | |
| st.session_state["saved_text"] = st.session_state["text"] | |
| child.sendline(st.session_state["saved_text"]) | |
| st.session_state["text"] = "" | |
| user_input = st.text_input("What do you do or say ?",key = "text", on_change=submit) | |
| while True: | |
| st.session_state.m = "" | |
| with placeholder.container(): | |
| #Let's see if there's a new message | |
| try : | |
| #If there's no exception it means yes | |
| line = child.read_nonblocking(size=1000, timeout=0) | |
| #Let's add it to the list of messages | |
| st.session_state['messages'].append(line) | |
| except: | |
| pass | |
| # Display the list of messages in the placeholder | |
| for msg in st.session_state['messages']: | |
| st.session_state.m += msg | |
| components.html( | |
| f""" | |
| <div style=" | |
| color: rgb(38, 39, 48); | |
| height: 580px; | |
| width: auto; | |
| border: 1px solid rgba(150, 150, 150, 0.5); | |
| border-radius: 0.2em; | |
| padding: 10px; | |
| overflow-y: scroll; | |
| font-family: Helvetica; | |
| white-space: pre-line; | |
| flex-direction: column-reverse; | |
| display: flex; | |
| "> | |
| <p>{st.session_state.m}</p> | |
| </div> | |
| """, height= 610 | |
| ) | |
| #Try again in X sec | |
| time.sleep(0.5) | |