Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| import random | |
| # Game Settings | |
| MAP_SIZE = 20 # 20 km x 20 km map | |
| # Initialize session state | |
| if "player_position" not in st.session_state: | |
| st.session_state.player_position = [10, 10] # Start in the center | |
| if "player_health" not in st.session_state: | |
| st.session_state.player_health = 100 | |
| if "enemy_health" not in st.session_state: | |
| st.session_state.enemy_health = random.randint(50, 100) | |
| if "inventory" not in st.session_state: | |
| st.session_state.inventory = {"vehicles": "Car", "weapons": ["UMP"]} | |
| # Helper functions | |
| def move_player(direction): | |
| if direction == "North" and st.session_state.player_position[1] < MAP_SIZE: | |
| st.session_state.player_position[1] += 1 | |
| elif direction == "South" and st.session_state.player_position[1] > 0: | |
| st.session_state.player_position[1] -= 1 | |
| elif direction == "East" and st.session_state.player_position[0] < MAP_SIZE: | |
| st.session_state.player_position[0] += 1 | |
| elif direction == "West" and st.session_state.player_position[0] > 0: | |
| st.session_state.player_position[0] -= 1 | |
| def fight_enemy(): | |
| weapon = st.session_state.inventory["weapons"][0] # Use the first weapon | |
| damage = random.randint(10, 30) | |
| st.session_state.enemy_health -= damage | |
| st.write(f"You used {weapon} and dealt {damage} damage!") | |
| # Enemy counterattack | |
| if st.session_state.enemy_health > 0: | |
| enemy_damage = random.randint(5, 20) | |
| st.session_state.player_health -= enemy_damage | |
| st.write(f"The enemy attacked and dealt {enemy_damage} damage!") | |
| else: | |
| st.write("Enemy defeated!") | |
| def explore(): | |
| event = random.choice(["Nothing found", "Found ammo", "Enemy encountered"]) | |
| st.write(f"Exploring... {event}") | |
| if event == "Found ammo": | |
| st.session_state.inventory["weapons"].append(random.choice(["AK-47", "Pistol"])) | |
| st.write("You found a new weapon!") | |
| elif event == "Enemy encountered": | |
| st.session_state.enemy_health = random.randint(50, 100) | |
| st.write("An enemy appeared!") | |
| # Game Interface | |
| st.title("Adventure Game") | |
| # Display Player Stats | |
| st.subheader("Player Stats") | |
| st.write(f"Health: {st.session_state.player_health}") | |
| st.write(f"Position: {st.session_state.player_position}") | |
| st.write(f"Inventory: {st.session_state.inventory}") | |
| # Display Enemy Stats (if any) | |
| if st.session_state.enemy_health > 0: | |
| st.subheader("Enemy Stats") | |
| st.write(f"Enemy Health: {st.session_state.enemy_health}") | |
| # Game Actions | |
| st.subheader("Actions") | |
| # Movement | |
| st.write("Move:") | |
| col1, col2, col3 = st.columns(3) | |
| with col1: | |
| if st.button("North"): | |
| move_player("North") | |
| with col2: | |
| if st.button("South"): | |
| move_player("South") | |
| with col3: | |
| if st.button("East"): | |
| move_player("East") | |
| if st.button("West"): | |
| move_player("West") | |
| # Fight | |
| if st.session_state.enemy_health > 0: | |
| if st.button("Fight"): | |
| fight_enemy() | |
| # Explore | |
| if st.button("Explore"): | |
| explore() | |
| # End Game if Health <= 0 | |
| if st.session_state.player_health <= 0: | |
| st.write("Game Over! You have been defeated.") | |
| st.stop() | |
| st.write("Keep playing and exploring the map!") | |