File size: 10,807 Bytes
863e252
 
 
 
 
 
 
1e9baf6
 
863e252
 
a073cd0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
f13dac5
1e9baf6
f13dac5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220



import streamlit as st
import pandas as pd
import random
import base64
import csv
import os


st.markdown("""

๐ŸŽฒ: This is the standard die used in many games, with each face showing a different number from 1 to 6.

๐ŸŽฏ: This emoji represents a dart board, but it can also be used to refer to a 6-sided die in which each face shows a different number from 1 to 6.

๐ŸŽด: This is a Japanese flower card game, but can also be used to represent a 6-sided die in which each face shows a different number from 1 to 6.

๐ŸŽฐ: This emoji represents a slot machine, but it can also be used to refer to a 6-sided die in which each face shows a different number from 1 to 6.

๐ŸŽณ: This emoji represents a bowling game, but it can also be used to refer to a 10-sided die in which each face shows a different number from 0 to 9.

๐ŸŽฎ: This emoji represents a video game controller, but it can also be used to refer to a 20-sided die often used in role-playing games, with each face showing a different number from 1 to 20.

๐ŸŽด: This is a Japanese flower card game, but it can also be used to represent a 6-sided die in which each face shows a different number from 1 to 6.

๐Ÿ€„: This is a mahjong tile representing the one of circles, but it can also be used to represent a 6-sided die in which each face shows a different number from 1 to 6.


""")



# Define the player card attributes
player_cards = {
    "Player 1": {
        "sketch": "๐Ÿ‘ฉ",
        "character": "Nurse",
        "player_board": "๐Ÿฅ",
        "action_dice": "๐ŸŽฒ",
        "health_tokens": "โค๏ธ",
        "coin": "๐Ÿ’ฐ",
        "battle_tokens": "โš”๏ธ",
        "score": 0,
        "trophy": ""
    },
    "Player 2": {
        "sketch": "๐Ÿ‘จ",
        "character": "Doctor",
        "player_board": "๐Ÿฅ",
        "action_dice": "๐ŸŽฒ",
        "health_tokens": "โค๏ธ",
        "coin": "๐Ÿ’ฐ",
        "battle_tokens": "โš”๏ธ",
        "score": 0,
        "trophy": ""
    }
}

# Define the health problems
health_problems = ["Flu", "COVID-19", "Diabetes", "Heart Disease", "Cancer"]

# Define the game rules
attack_range = (1, 20)
defense_range = (1, 10)

# Define the score, health tokens, and coin emoji sets
score_emojis = ["๐Ÿ”ฅ", "๐Ÿ’ฅ", "โšก๏ธ", "๐Ÿ‘Š", "๐Ÿ’ช", "๐Ÿ‹๏ธ", "๐Ÿ‘‘", "๐ŸŽ‰", "๐ŸŽŠ", "๐ŸŽ–๏ธ", "๐Ÿ…", "๐Ÿฅ‡", "๐Ÿฅˆ", "๐Ÿฅ‰"]
health_token_emojis = ["โค๏ธ", "๐Ÿ’–", "๐Ÿ’˜", "๐Ÿ’", "๐Ÿ’ž", "๐Ÿ’“", "๐Ÿ’—", "๐Ÿ’•", "๐Ÿ’Ÿ", "โฃ๏ธ", "๐Ÿฉธ", "๐Ÿงก", "๐Ÿ’›", "๐Ÿ’š", "๐Ÿ’™", "๐Ÿ’œ"]
coin_emojis = ["๐Ÿ’ฐ", "๐Ÿ’ธ", "๐Ÿ’ณ", "๐Ÿค‘", "๐Ÿ’Ž", "๐Ÿ’ท", "๐Ÿ’ต", "๐Ÿ’ฒ", "๐Ÿฆ", "๐Ÿ’น", "๐Ÿ“ˆ", "๐Ÿ“‰", "๐Ÿ’น", "๐Ÿค‘", "๐Ÿ’ฐ", "๐Ÿ’ต"]

# Create a function to play a single round of the game
def play_round(player_card, health_problem):
    st.write(f"{player_card['sketch']} {player_card['character']} attacks {health_problem} with {player_card['action_dice']}...")
    attack_score = random.randint(*attack_range)
    defense_score = random.randint(*defense_range)
    health_ferocity = random.randint(*attack_range)
    health_resistance = random.randint(*defense_range)
    if attack_score > health_resistance:
        player_card["score"] += 1
        score_emoji = random.choice(score_emojis)
        player_card["score_emoji"] = player_card.get("score_emoji", "") + score_emoji
        st.write(f"{player_card['sketch']} {player_card['character']} deals {attack_score - health_resistance} damage to {health_problem}! {score_emoji}")
        player_card["health_tokens"] += 1
        health_token_emoji = random.choice(health_token_emojis)
        player_card["health_token_emoji"] = player_card.get("health_token_emoji", "") + health_token_emoji
        #player_card["coin"] += 10

        #player_card["coin"] += 10
        coin_emoji = random.choice(coin_emojis)
        player_card["coin_emojis"] = player_card.get("coin_emojis", "") + coin_emoji
        
        coin_emoji = random.choice(coin_emojis)
        player_card["coin_emoji"] = player_card.get("coin_emoji", "") + coin_emoji
    else:
        st.write(f"{player_card['sketch']} {player_card['character']} misses the attack!")
    if health_ferocity > defense_score:
        player_card["health_tokens"] -= 1
        health_token_emoji = random.choice(health_token_emojis)
        player_card["health_token_emoji"] = player_card.get("health_token_emoji", "") + health_token_emoji
        st.write(f"{health_problem} deals {health_ferocity - defense_score} damage to {player_card['sketch']} {player_card['character']}! {health_token_emoji}")
    else:
        st.write(f"{health_problem} fails to attack!")


# Create a function to play multiple rounds of the game
def play_game(num_games):
    # Initialize the game state
    for player in player_cards:
        player_cards[player]["health_tokens"] = 20
    health_problem_scores = {problem: 0 for problem in health_problems}
    for i in range(num_games):
        # Randomly select a player and health problem
        player = random.choice(list(player_cards.keys()))
        health_problem = random.choice(health_problems)
        # Play the round
        play_round(player_cards[player], health_problem)
        # Update the scores
        health_problem_scores[health_problem] += 1
        # Check for a player win
        for player, attributes in player_cards.items():
            if attributes["health_tokens"] <= 0:
                st.write(f"{attributes['sketch']} {attributes['character']} has lost the game!")
            else:
                if attributes["score"] >= num_games / 2:
                    st.write(f"{attributes['sketch']} {attributes['character']} has won the game!")
            # Add a trophy emoji to the player card on the sidebar
            if attributes["trophy"] == "":
                attributes["trophy"] = "๐Ÿ†"
            if st.session_state.get(player + "_win", False):
                if attributes["trophy"] == "๐Ÿ†":
                    attributes["trophy"] = random.choice(["๐Ÿฅ‡", "๐Ÿฅˆ", "๐Ÿฅ‰"])
                st.sidebar.write(f"{attributes['sketch']} {attributes['character']} {attributes['trophy']}")
        # Save the game state to a CSV file
        with open("game_state.csv", "a", newline="") as f:
            writer = csv.writer(f)
            if os.stat("game_state.csv").st_size == 0:
                writer.writerow(["Player", "Sketch", "Character", "Player Board", "Action Dice", "Health Tokens", "Coin", "Battle Tokens", "Score", "Trophy"])
            for player, attributes in player_cards.items():
                row = [player, attributes["sketch"], attributes["character"], attributes["player_board"], attributes["action_dice"], attributes["health_tokens"], attributes["coin"], attributes["battle_tokens"], attributes["score"], attributes["trophy"]]
                writer.writerow(row)
            for problem in health_problems:
                row = [problem, health_problem_scores[problem]]
                writer.writerow(row)
    # Display the game results
    st.write("# Game Results")
    for player, attributes in player_cards.items():
        st.write(f"{attributes['sketch']} {attributes['character']}: {attributes['score']} successful attacks, {attributes['health_tokens']} health tokens, {attributes['coin']} coins")
    for problem, score in health_problem_scores.items():
        st.write(f"{problem}: {score} defeats")
    # Display a button to download the game state CSV file
    if os.path.exists("game_state.csv"):
        st.write("# Download Game State")
        files = [f for f in os.listdir(".") if os.path.isfile(f) and f.endswith(".csv")]
        if "game_state.csv" in files:
            files.remove("game_state.csv")
        if len(files) > 0:
            file_to_delete = st.selectbox("Select a file to delete", files)
            if st.button("Delete File"):
                os.remove(file_to_delete)
        if st.button("Download Game State"):
            with open("game_state.csv", "r") as f:
                csv_data = f.read()
            st.download_button("game_state.csv", csv_data, file_name="game_state.csv", mime="text/csv")
        st.write("*Note: Downloaded files are saved in your browser's default download location*")



def showPressRelease():
    st.markdown("""
    
title: ๐Ÿค–๐Ÿง AI-RPG-Self-Play-RLML-Health-Battler-Game๐Ÿ†๐ŸŽ๐ŸŽฎ
emoji: ๐Ÿ‹๏ธโ€โ™€๏ธ๐Ÿ’ช๐Ÿฅ
# AI RPG Self-Play RL ML Health Battler Game Press Release
## Introduction
๐ŸŽ‰๐ŸŽฎ๐Ÿค– Attention all gamers and health enthusiasts! The ultimate weapon to battle health problems has arrived - the AI RPG Self-Play RL ML Health Battler Game! ๐Ÿค–๐ŸŽฎ๐ŸŽ‰
## Gamified Health Battles
- ๐Ÿ‹๏ธโ€โ™€๏ธ๐Ÿ’ช๐Ÿฅ Sick of boring workouts and mundane health routines? Get ready to take on health problems like never before with our gamified approach. ๐ŸŽ‰๐Ÿ•น๏ธ
## Advanced AI Technology
- ๐Ÿค–๐Ÿง ๐Ÿ”ฅ The AI technology behind our game is so advanced, you'll think you're battling a real-life disease! Let the personalized gameplay experience adapt to your style and keep you engaged for hours on end. ๐Ÿ’ป๐Ÿ‘จโ€๐Ÿ”ฌ
## Healthy Competition
- ๐Ÿ†๐ŸŽ๐ŸŽฎ Ready for some healthy competition? Compete against friends and other players around the world, earning rewards and achievements with our self-play reinforcement learning algorithms. ๐ŸŒŽ๐Ÿ†
## Availability
- ๐Ÿ‘จโ€๐Ÿ’ป๐Ÿ“ฒ The AI RPG Self-Play RL ML Health Battler Game is now available for public open source use on all platforms, including iOS and Android devices, via the world's largest ML platform Huggingface! Download now and start fighting for your health. ๐Ÿ“ฒ๐Ÿ’ฅ
## Conclusion
- Don't let health problems get the best of you - join the fight with our AI RPG Self-Play RL ML Health Battler Game! ๐ŸŽฎ๐Ÿ’ช๐Ÿฉบ
    
    """)
        
# Define the Streamlit app
def app():
    st.title("Health Care Game")
    st.sidebar.write("# Game Settings")
    num_games = st.sidebar.slider("Number of games to play", 1, 100, 10)
    st.sidebar.write("# Player Cards")
    for player, attributes in player_cards.items():
        st.sidebar.write(f"## {player}")
        st.sidebar.write(f"Sketch: {attributes['sketch']}")
        st.sidebar.write(f"Character: {attributes['character']}")
        st.sidebar.write(f"Player Board: {attributes['player_board']}")
        st.sidebar.write(f"Action Dice: {attributes['action_dice']}")
        st.sidebar.write(f"Health Tokens: {attributes['health_tokens']}")
        st.sidebar.write(f"Coin: {attributes['coin']}")
        st.sidebar.write(f"Battle Tokens: {attributes['battle_tokens']}")
    st.sidebar.write("# Health Problems")
    for problem in health_problems:
        st.sidebar.write(f"- {problem}")
    # Start the game when the user clicks the "Play Game" button
    if st.button("Play Game"):
        play_game(num_games)
    showPressRelease()




if __name__ == "__main__":
    app()