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() |