File size: 3,336 Bytes
f2d0a0e
 
 
6a9e178
f2d0a0e
 
 
6a9e178
f2d0a0e
 
 
 
 
 
 
 
 
 
6a9e178
2f3379a
6a9e178
 
 
 
 
 
 
 
 
 
2f3379a
 
 
6a9e178
 
 
 
f2d0a0e
 
6a9e178
f2d0a0e
6a9e178
f2d0a0e
 
 
 
6a9e178
f2d0a0e
 
 
 
2f3379a
f2d0a0e
 
2f3379a
 
 
f2d0a0e
2f3379a
f2d0a0e
 
 
 
2f3379a
 
 
3fe30b9
2f3379a
 
3fe30b9
2f3379a
3fe30b9
2f3379a
3fe30b9
2f3379a
 
3fe30b9
 
c497b19
 
 
3fe30b9
 
 
f2d0a0e
 
6a9e178
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
import streamlit as st
import numpy as np

# Helper functions for number theory-based emoji placement
def is_prime(n):
    if n <= 1:
        return False
    for i in range(2, int(n**0.5) + 1):
        if n % i == 0:
            return False
    return True

def fib_sequence(n):
    fib_seq = [0, 1]
    while fib_seq[-1] + fib_seq[-2] <= n:
        fib_seq.append(fib_seq[-1] + fib_seq[-2])
    return fib_seq[2:]  # Exclude first two numbers for this use case

# Expanded set of emojis for landscape elements
emoji_set = ["🌲", "🌳", "πŸƒ", "🌲", "🌿", "πŸ„", "🏠", "🏰", "πŸ—Ό", "πŸ›€οΈ", "🌊", "🏞️", "🌁", "🌾", "🏜️", "🏝️", "πŸ›–", "πŸ›€οΈ", "πŸ›£οΈ", "πŸ•οΈ", "πŸŒ‹", "⛰️", "🧱", "🌡", "🍁", "🌼", "🌻", "🌺", "🏑", "πŸ—ΊοΈ", "πŸŒ…", "πŸŒ„", "πŸ™οΈ", "πŸ”οΈ", "πŸ—»", "πŸ–οΈ", "🏟️", "🏯", "πŸ—οΈ", "πŸŒ‡", "πŸŒ†", "πŸŒƒ", "πŸ™οΈ"]

# Locations and emoji grid maps initialization
def initialize_locations(size):
    """Initialize different locations with unique emoji grids."""
    # Placeholder for location initialization logic
    # Randomly fill grids with emojis from emoji_set for each location
    np.random.seed(42)  # Optional: for reproducible emoji distributions
    locations = {
        'forest edge': np.random.choice(emoji_set, (size, size)),
        'deep forest': np.random.choice(emoji_set, (size, size)),
        'mountain range': np.random.choice(emoji_set, (size, size)),
        'coastal town': np.random.choice(emoji_set, (size, size)),
        'desert oasis': np.random.choice(emoji_set, (size, size)),
    }
    return locations

# Directions for movement
directions = {"North": (-1, 0), "South": (1, 0), "West": (0, -1), "East": (0, 1)}

# Movement and emoji map update functions
def move_emojis(locations, current_location, direction):
    """Shift emojis in the specified direction with wrap-around for the current location."""
    dx, dy = directions[direction]
    locations[current_location] = np.roll(locations[current_location], shift=(dx, dy), axis=(0, 1))
    return locations

# Streamlit application setup
def main():
    st.title("Explore the Emoji World")

    size = st.sidebar.slider("Grid Size", 5, 40, 10)

    if 'locations' not in st.session_state:
        st.session_state.locations = initialize_locations(size)
    else:
        st.session_state.locations = initialize_locations(size)

    current_location = st.sidebar.selectbox("Select location", options=list(st.session_state.locations.keys()))

    emoji_map = st.session_state.locations[current_location]
    map_str = "\n".join(["".join(row) for row in emoji_map])
    st.text(map_str)

    col1, col2, col3 = st.columns(3)
    with col1:
        if st.button("West"):
            direction = "West"
    with col2:
        if st.button("North"):
            direction = "North"
        if st.button("Stop"):
            direction = "None"
        if st.button("South"):
            direction = "South"
    with col3:
        if st.button("East"):
            direction = "East"

    if 'direction' not in locals():
        direction = "None"
    
    if direction != "None":
        st.session_state.locations = move_emojis(st.session_state.locations, current_location, direction)
        st.experimental_rerun()

if __name__ == "__main__":
    main()