File size: 2,971 Bytes
1b8a61e 08f6cf8 d3dc3f6 1b8a61e f322fc1 1b8a61e f322fc1 1b8a61e f322fc1 d3dc3f6 1b8a61e d3dc3f6 f322fc1 d3dc3f6 f322fc1 d3dc3f6 f322fc1 1b8a61e f322fc1 08f6cf8 d3dc3f6 f322fc1 08f6cf8 f322fc1 1b8a61e d3dc3f6 f322fc1 1b8a61e f322fc1 d3dc3f6 f322fc1 d3dc3f6 f322fc1 d3dc3f6 f322fc1 1b8a61e |
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 |
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 = ["π²", "π³", "π", "π²", "πΏ", "π", "π ", "π°", "πΌ", "π€οΈ", "π", "ποΈ", "π", "πΎ", "ποΈ", "ποΈ", "π", "π€οΈ", "π£οΈ", "ποΈ", "π", "β°οΈ", "π§±", "π΅", "π", "πΌ", "π»", "πΊ", "π‘", "πΊοΈ", "βΊ", "π
", "π", "π ", "π", "π", "π΄", "π", "π΅", "π", "β", "π€οΈ", "πͺ"]
# Initialize locations with more varied and staggered emojis
def initialize_locations(size):
np.random.seed(42) # For reproducibility
locations = {
'forest edge': np.random.choice(emoji_set, (size, size)),
'deep forest': np.random.choice(emoji_set, (size, size)),
# Add other locations with corresponding maps as needed
}
return locations
# Directions for movement
directions = {"North": (-1, 0), "South": (1, 0), "West": (0, -1), "East": (0, 1)}
# Shift emojis based on direction with wrap-around
def move_emojis(locations, current_location, direction):
dx, dy = directions[direction]
locations[current_location] = np.roll(locations[current_location], shift=(dx, dy), axis=(0, 1))
return locations
# WASD movement interface
def wasd_interface():
direction = None
with st.form("wasd_form", clear_on_submit=True):
direction_input = st.text_input("Enter direction (WASD):", "")
submitted = st.form_submit_button("Move")
if submitted and direction_input.upper() in ['W', 'A', 'S', 'D']:
direction = {'W': 'North', 'A': 'West', 'S': 'South', 'D': 'East'}[direction_input.upper()]
return direction
# Main application
def main():
st.title("Explore the Emoji World")
size = st.sidebar.slider("Grid Size", 5, 40, 10)
delay = st.sidebar.slider("Movement Delay (seconds)", 0.0, 1.0, 0.1)
if 'locations' not in st.session_state:
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)
direction = wasd_interface()
if direction:
st.session_state.locations = move_emojis(st.session_state.locations, current_location, direction)
time.sleep(delay) # Delay to adjust the speed of movement
st.experimental_rerun()
if __name__ == "__main__":
main()
|