feat: implement basic RPG mechanics with boss counter-attack

- Add Player and Boss data models (models.py)
- Implement command processing via regex matching (attack/heal/status)
- Add boss counter-attack mechanism (15 dmg per player attack)
- Add player death/respawn system (lose half gold, respawn full HP)
- Update frontend with boss HP bar, player stats panel, quick action buttons
- Add colored event log (red for attack, green for heal)
- Change port from 8000 to 8080

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
empty
2025-12-30 16:50:07 +08:00
parent 714b5824ba
commit 4c08b00832
7 changed files with 615 additions and 51 deletions

View File

@@ -5,9 +5,12 @@ Configures the application, WebSocket routes, and lifecycle events.
import logging
from contextlib import asynccontextmanager
from pathlib import Path
from fastapi import FastAPI, WebSocket, WebSocketDisconnect
from fastapi.middleware.cors import CORSMiddleware
from fastapi.staticfiles import StaticFiles
from fastapi.responses import FileResponse
from .server import ConnectionManager
from .engine import GameEngine
@@ -24,6 +27,9 @@ logger = logging.getLogger(__name__)
manager = ConnectionManager()
engine = GameEngine(manager)
# Frontend path
FRONTEND_DIR = Path(__file__).parent.parent.parent / "frontend"
@asynccontextmanager
async def lifespan(app: FastAPI):
@@ -55,9 +61,14 @@ app.add_middleware(
allow_headers=["*"],
)
@app.get("/")
async def root():
"""Serve the debug client page."""
return FileResponse(FRONTEND_DIR / "debug_client.html")
@app.get("/health")
async def health():
"""Health check endpoint."""
return {
"status": "running",
@@ -100,3 +111,7 @@ async def websocket_endpoint(websocket: WebSocket):
except Exception as e:
logger.error(f"WebSocket error: {e}")
manager.disconnect(websocket)
# Mount static files (must be after all routes)
app.mount("/static", StaticFiles(directory=FRONTEND_DIR), name="static")