File size: 3,628 Bytes
f2d0a0e
 
a0c5d9e
f2d0a0e
6a9e178
a0c5d9e
f2d0a0e
 
 
6a9e178
f2d0a0e
 
 
 
 
 
 
 
a0c5d9e
f2d0a0e
6a9e178
a0c5d9e
2f3379a
6a9e178
 
a0c5d9e
6a9e178
 
 
 
a0c5d9e
6a9e178
 
 
2f3379a
 
 
6a9e178
 
 
 
a0c5d9e
f2d0a0e
 
6a9e178
a0c5d9e
 
6a9e178
a0c5d9e
f2d0a0e
 
 
6a9e178
a0c5d9e
f2d0a0e
 
 
a0c5d9e
2f3379a
f2d0a0e
 
2f3379a
 
 
a0c5d9e
 
2f3379a
a0c5d9e
f2d0a0e
 
 
 
2f3379a
a0c5d9e
2f3379a
 
a0c5d9e
 
2f3379a
 
a0c5d9e
2f3379a
a0c5d9e
2f3379a
a0c5d9e
 
2f3379a
 
a0c5d9e
 
 
 
 
 
 
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
88
89
90
91
92
93
94
95
96
97
98
import streamlit as st
import numpy as np
import time

# 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, velocity):
    """Shift emojis in the specified direction with wrap-around for the current location."""
    dx, dy = [coord * velocity for coord in 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)
    velocity = st.sidebar.slider("Velocity (emojis/sec)", 1, 10, 1)

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

    if 'direction' not in st.session_state:
        st.session_state.direction = "None"

    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.direction = "West"

    with col2:
        if st.button("North"):
            st.session_state.direction = "North"
        if st.button("Stop"):
            st.session_state.direction = "None"
        if st.button("South"):
            st.session_state.direction = "South"

    with col3:
        if st.button("East"):
            st.session_state.direction = "East"

    if st.session_state.direction != "None":
        st.session_state.locations = move_emojis(st.session_state.locations, current_location, st.session_state.direction, velocity)

    time.sleep(1)
    st.experimental_rerun()

if __name__ == "__main__":
    main()