rui3000 commited on
Commit
1e8c032
·
verified ·
1 Parent(s): 21554ff
RPS_Simple_Demo/README.md DELETED
@@ -1,8 +0,0 @@
1
- # Rock Paper Scissors - Simple Demo
2
-
3
- Play Rock Paper Scissors against a random AI!
4
-
5
- - Click one of the buttons (Rock, Paper, Scissors) to make your move.
6
- - The result of the round and the running score for this session will be displayed below.
7
-
8
- This is a basic demo built with Gradio and deployed on Hugging Face Spaces.
 
 
 
 
 
 
 
 
 
RPS_Simple_Demo/RockPaperScissor/__init__.py DELETED
File without changes
RPS_Simple_Demo/RockPaperScissor/__pycache__/__init__.cpython-313.pyc DELETED
Binary file (172 Bytes)
 
RPS_Simple_Demo/RockPaperScissor/models/__init__.py DELETED
@@ -1,3 +0,0 @@
1
- from .random_ai import RandomAI
2
-
3
- __all__ = ['RandomAI'] # Expose only RandomAI for this demo
 
 
 
 
RPS_Simple_Demo/RockPaperScissor/models/__pycache__/__init__.cpython-313.pyc DELETED
Binary file (251 Bytes)
 
RPS_Simple_Demo/RockPaperScissor/models/__pycache__/random_ai.cpython-313.pyc DELETED
Binary file (1.4 kB)
 
RPS_Simple_Demo/RockPaperScissor/models/random_ai.py DELETED
@@ -1,23 +0,0 @@
1
- import random
2
- from typing import Dict, Any, Tuple, Optional
3
-
4
- class RandomAI:
5
- """
6
- AI that makes random moves. Simple version for Gradio demo.
7
- """
8
- def __init__(self):
9
- self.possible_moves = ["rock", "paper", "scissors"]
10
-
11
- def make_move(self, model_state: Optional[Dict[str, Any]] = None) -> Tuple[str, Dict[str, Any]]:
12
- """
13
- Makes a random move. Ignores model_state in this simple version.
14
-
15
- Args:
16
- model_state (dict, optional): Not used in this strategy.
17
-
18
- Returns:
19
- tuple[str, dict]: A random choice and an empty state dictionary.
20
- """
21
- ai_choice = random.choice(self.possible_moves)
22
- # Return the move and an empty dictionary as the state (since it's stateless)
23
- return ai_choice, {}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
RPS_Simple_Demo/app.py DELETED
@@ -1,87 +0,0 @@
1
- import gradio as gr
2
- from RockPaperScissor.models import RandomAI # Import the AI model
3
-
4
- # --- Initialize AI ---
5
- ai_model = RandomAI()
6
-
7
- # --- Helper Function ---
8
- def _determine_winner(player_move, ai_move):
9
- """Determines the winner and returns a result code and message."""
10
- if player_move == ai_move:
11
- return "draw", f"It's a draw! (Both chose {player_move})"
12
- elif (player_move == "rock" and ai_move == "scissors") or \
13
- (player_move == "paper" and ai_move == "rock") or \
14
- (player_move == "scissors" and ai_move == "paper"):
15
- return "player_win", f"You win! ({player_move} beats {ai_move})"
16
- else:
17
- return "ai_win", f"AI wins! ({ai_move} beats {player_move})"
18
-
19
- # --- Main Gradio Function ---
20
- def play_round(player_choice, current_stats):
21
- """
22
- Handles one round of the game.
23
- Updates stats stored in the Gradio state.
24
- """
25
- print(f"Player chose: {player_choice}") # Optional: for debugging in Space logs
26
- print(f"Current stats before round: {current_stats}")
27
-
28
- # Get AI's move (state is ignored by RandomAI)
29
- ai_choice, _ = ai_model.make_move()
30
- print(f"AI chose: {ai_choice}")
31
-
32
- # Determine winner
33
- result_code, result_message = _determine_winner(player_choice, ai_choice)
34
-
35
- # Update stats (modify the dictionary directly)
36
- if result_code == "player_win":
37
- current_stats["wins"] += 1
38
- elif result_code == "ai_win":
39
- current_stats["losses"] += 1
40
- else:
41
- current_stats["draws"] += 1
42
-
43
- print(f"Current stats after round: {current_stats}")
44
-
45
- # Format output strings
46
- full_result_message = f"You chose: {player_choice}\nAI chose: {ai_choice}\n\n{result_message}"
47
- stats_string = f"Wins: {current_stats['wins']} | Losses: {current_stats['losses']} | Draws: {current_stats['draws']}"
48
-
49
- # Return updated components AND the modified state dictionary
50
- return full_result_message, stats_string, current_stats
51
-
52
- # --- Build Gradio Interface ---
53
- with gr.Blocks(title="Rock Paper Scissors Demo") as demo:
54
- gr.Markdown("# Rock Paper Scissors - Simple Demo")
55
- gr.Markdown("Play against a Random AI. Choose your move:")
56
-
57
- # State to store session scores
58
- session_state = gr.State(value={"wins": 0, "losses": 0, "draws": 0})
59
-
60
- with gr.Row():
61
- rock_btn = gr.Button("🪨 Rock")
62
- paper_btn = gr.Button("📄 Paper")
63
- scissors_btn = gr.Button("✂️ Scissors")
64
-
65
- result_output = gr.Textbox(label="Round Result", lines=3) # Use Textbox for multi-line
66
- stats_output = gr.Label(label="Session Score")
67
-
68
- # --- Connect Buttons to Function ---
69
- # Use lambda functions to pass the specific choice string
70
- rock_btn.click(
71
- fn=play_round,
72
- inputs=[gr.Textbox("rock", visible=False), session_state], # Pass "rock" implicitly
73
- outputs=[result_output, stats_output, session_state] # Update outputs AND state
74
- )
75
- paper_btn.click(
76
- fn=play_round,
77
- inputs=[gr.Textbox("paper", visible=False), session_state], # Pass "paper" implicitly
78
- outputs=[result_output, stats_output, session_state]
79
- )
80
- scissors_btn.click(
81
- fn=play_round,
82
- inputs=[gr.Textbox("scissors", visible=False), session_state], # Pass "scissors" implicitly
83
- outputs=[result_output, stats_output, session_state]
84
- )
85
-
86
- # --- Launch the App ---
87
- demo.launch() # share=True creates a public link when running locally
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
RPS_Simple_Demo/poetry.lock DELETED
The diff for this file is too large to render. See raw diff
 
RPS_Simple_Demo/pyproject.toml DELETED
@@ -1,17 +0,0 @@
1
- [project]
2
- name = "rps-simple-demo"
3
- version = "0.1.0"
4
- description = "Simple Rock Paper Scissors Gradio demo for Hugging Face Spaces"
5
- authors = [
6
- {name = "Your Name",email = "[email protected]"}
7
- ]
8
- readme = "README.md"
9
- requires-python = "^3.10"
10
- dependencies = [
11
- "gradio (>=5.29.0,<6.0.0)"
12
- ]
13
-
14
-
15
- [build-system]
16
- requires = ["poetry-core>=2.0.0,<3.0.0"]
17
- build-backend = "poetry.core.masonry.api"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
RPS_Simple_Demo/requirements.txt DELETED
@@ -1 +0,0 @@
1
- gradio