Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| import random | |
| # Game setup | |
| st.title("Fighting Game") | |
| # Character stats | |
| player = {"name": "Player", "health": 100, "attack_range": (10, 20)} | |
| enemy = {"name": "Enemy", "health": 100, "attack_range": (8, 15)} | |
| # Game state | |
| if "game_over" not in st.session_state: | |
| st.session_state.game_over = False | |
| if "player_health" not in st.session_state: | |
| st.session_state.player_health = player["health"] | |
| if "enemy_health" not in st.session_state: | |
| st.session_state.enemy_health = enemy["health"] | |
| # Functions | |
| def attack(attacker, defender, defender_health): | |
| damage = random.randint(*attacker["attack_range"]) | |
| defender_health -= damage | |
| return damage, defender_health | |
| # Game loop | |
| if not st.session_state.game_over: | |
| st.subheader(f"Player Health: {st.session_state.player_health} | Enemy Health: {st.session_state.enemy_health}") | |
| # Player's attack | |
| if st.button("Attack Enemy"): | |
| damage, st.session_state.enemy_health = attack(player, enemy, st.session_state.enemy_health) | |
| st.write(f"You attacked the Enemy for {damage} damage!") | |
| # Enemy retaliates if alive | |
| if st.session_state.enemy_health > 0: | |
| damage, st.session_state.player_health = attack(enemy, player, st.session_state.player_health) | |
| st.write(f"The Enemy attacked you for {damage} damage!") | |
| # Check if game is over | |
| if st.session_state.enemy_health <= 0: | |
| st.success("You defeated the Enemy!") | |
| st.session_state.game_over = True | |
| elif st.session_state.player_health <= 0: | |
| st.error("You were defeated by the Enemy!") | |
| st.session_state.game_over = True | |
| else: | |
| if st.button("Restart Game"): | |
| st.session_state.game_over = False | |
| st.session_state.player_health = player["health"] | |
| st.session_state.enemy_health = enemy["health"] | |
| st.experimental_rerun() |