File size: 3,781 Bytes
db5d9ba
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import streamlit as st
import pandas as pd
import random

# Initialize session state variables if they don't exist
if 'current_act' not in st.session_state:
    st.session_state.current_act = 'Act 1: Introduction'
if 'protagonist_name' not in st.session_state:
    st.session_state.protagonist_name = 'Alex'

def roll_dice():
    """Simulate rolling a dice and return the result."""
    return random.randint(1, 6)

def on_name_change():
    """Update protagonist's name based on user input."""
    st.session_state.protagonist_name = st.session_state.user_name

def advance_act():
    """Advance the story to the next act."""
    acts = ['Act 1: Introduction', 'Act 2: Development', 'Act 3: Conclusion']
    current_index = acts.index(st.session_state.current_act)
    if current_index < len(acts) - 1:
        st.session_state.current_act = acts[current_index + 1]
        st.experimental_rerun()

st.title('Graphic Novel: Discovery of a Safe Haven or Cure')

# Allow the user to input their name for the protagonist
st.text_input("What's your protagonist's name?", key='user_name', on_change=on_name_change)

st.write(f'Current Act: {st.session_state.current_act}')

# Display the story based on the current act
if st.session_state.current_act == 'Act 1: Introduction':
    st.markdown('''
    - **Setting the Scene** 🌍: Our world is on the brink of collapse...
    - **Introducing the Protagonist** πŸ‘€: {}, a young scientist, stumbles upon...
    - **Inciting Incident** ⚑: {} finds an ancient manuscript hinting at...
    '''.format(st.session_state.protagonist_name, st.session_state.protagonist_name))

elif st.session_state.current_act == 'Act 2: Development':
    st.markdown('''
    - **Rising Action** πŸ“ˆ: As {} deciphers the manuscript...
    - **Key Dramatic Situations**:
      1. **The Quest** πŸ—ΊοΈ: {} sets out to...
      2. **Rivalry of Superior and Inferior** 🀼: But {} is not alone in this quest...
      3. **Crucial Choice** ✨: Faced with a dire choice, {} must decide...
    '''.format(st.session_state.protagonist_name, st.session_state.protagonist_name, st.session_state.protagonist_name, st.session_state.protagonist_name))

elif st.session_state.current_act == 'Act 3: Conclusion':
    st.markdown('''
    - **Climax** πŸ”₯: In the heart of the forbidden zone...
    - **Resolution** 🏁: With the cure in hand, {}...
    - **Denouement** πŸŒ…: The world slowly heals, and {}...
    '''.format(st.session_state.protagonist_name, st.session_state.protagonist_name))

# Implement dice roll for decisions
st.write('Roll a dice to decide your fate:')
dice_result = st.button('Roll Dice')
if dice_result:
    roll = roll_dice()
    st.write(f'You rolled: {roll} 🎲')

# Advance to the next act
if st.button('Advance to Next Act'):
    advance_act()

# Implement file uploader for character images
st.subheader('Upload Character Image')
uploaded_file = st.file_uploader("Choose an image...", type=["jpg", "png"])
if uploaded_file is not None:
    st.image(uploaded_file, caption='Your Character')

# Implement camera input for user engagement
st.subheader('Capture Your Adventure Look')
picture = st.camera_input("Take a picture")
if picture:
    st.image(picture, caption='Your Adventure Look')

# Example inline data table for entity stats
st.subheader('Character Stats')
character_stats = pd.DataFrame({
    'Stat': ['Strength', 'Intelligence', 'Charisma'],
    'Value': [roll_dice(), roll_dice(), roll_dice()]
})
st.write(character_stats)

# Add expander for game rules or additional info
with st.expander("Game Rules"):
    st.markdown('''
    - **Rule 1**: Your fate is determined by the roll of a dice.
    - **Rule 2**: Choices will guide the story's direction.
    - **Rule 3**: Every act advances the plot and challenges.
    ''')