File size: 3,391 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
 
 
 
 
 
 
 
 
 
 
 
 
 
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
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"):
            st.session_state.locations = move_emojis(st.session_state.locations, current_location, "West")
    with col2:
        if st.button("North"):
            st.session_state.locations = move_emojis(st.session_state.locations, current_location, "North")
        if st.button("Stop"):
            pass
        if st.button("South"):
            st.session_state.locations = move_emojis(st.session_state.locations, current_location, "South")
    with col3:
        if st.button("East"):
            st.session_state.locations = move_emojis(st.session_state.locations, current_location, "East")

if __name__ == "__main__":
    main()