idioten versenken
This commit is contained in:
28
app.py
28
app.py
@ -11,11 +11,11 @@ DB_PATH = str(BASE_DIR / "schiffe_versenken.db")
|
||||
BOARD_SIZE = 10
|
||||
|
||||
FLEET = [
|
||||
{"id": "koenig", "name": "Zwergenkönig", "size": 5, "hat": "#c0392b"},
|
||||
{"id": "hauptmann", "name": "Zwergenhauptmann", "size": 4, "hat": "#2980b9"},
|
||||
{"id": "krieger1", "name": "Zwergenkrieger I", "size": 3, "hat": "#27ae60"},
|
||||
{"id": "krieger2", "name": "Zwergenkrieger II", "size": 3, "hat": "#8e44ad"},
|
||||
{"id": "kundschafter", "name": "Zwergenkundschafter", "size": 2, "hat": "#d35400"},
|
||||
{"id": "koenig", "name": "Oberidiot", "size": 5, "hat": "#c0392b"},
|
||||
{"id": "hauptmann", "name": "Chefidiot", "size": 4, "hat": "#2980b9"},
|
||||
{"id": "krieger1", "name": "Idiot I", "size": 3, "hat": "#27ae60"},
|
||||
{"id": "krieger2", "name": "Idiot II", "size": 3, "hat": "#8e44ad"},
|
||||
{"id": "kundschafter", "name": "Trotteltrupp", "size": 2, "hat": "#d35400"},
|
||||
]
|
||||
FLEET_BY_ID = {s["id"]: s for s in FLEET}
|
||||
|
||||
@ -116,7 +116,7 @@ def new_game_row():
|
||||
"computer_shots": empty_shots(),
|
||||
"computer_ai_state": {"mode": "random", "targets": [], "tried": []},
|
||||
"status": "placing",
|
||||
"message": "Platziere deine Zwerge auf dem Spielfeld.",
|
||||
"message": "Platziere deine Idioten auf dem Spielfeld.",
|
||||
}
|
||||
db = get_db()
|
||||
db.execute(
|
||||
@ -311,22 +311,22 @@ def api_place_ship():
|
||||
|
||||
ship = FLEET_BY_ID.get(ship_id)
|
||||
if ship is None:
|
||||
return jsonify({"error": "Unbekannter Zwerg."}), 400
|
||||
return jsonify({"error": "Unbekannter Idiot."}), 400
|
||||
|
||||
board = game["player_board"]
|
||||
already_placed = any(ship_id in row_ for row_ in board)
|
||||
if already_placed:
|
||||
return jsonify({"error": "Dieser Zwerg steht schon auf dem Feld."}), 400
|
||||
return jsonify({"error": "Dieser Idiot steht schon auf dem Feld."}), 400
|
||||
|
||||
if not can_place(board, row, col, ship["size"], orientation):
|
||||
return jsonify({"error": "Hier passt der Zwerg nicht hin."}), 400
|
||||
return jsonify({"error": "Hier passt der Idiot nicht hin."}), 400
|
||||
|
||||
place_ship(board, ship_id, row, col, ship["size"], orientation)
|
||||
game["player_board"] = board
|
||||
|
||||
placed_ids = {cell for row_ in board for cell in row_ if cell is not None}
|
||||
if len(placed_ids) == len(FLEET):
|
||||
game["message"] = "Alle Zwerge stehen bereit! Klicke auf 'Kampf beginnen'."
|
||||
game["message"] = "Alle Idioten stehen bereit! Klicke auf 'Kampf beginnen'."
|
||||
else:
|
||||
game["message"] = f"{ship['name']} platziert."
|
||||
|
||||
@ -340,7 +340,7 @@ def api_random_place():
|
||||
if game is None or game["status"] != "placing":
|
||||
return jsonify({"error": "Kein aktives Platzierungsspiel."}), 400
|
||||
game["player_board"] = random_place_all_ships()
|
||||
game["message"] = "Alle Zwerge wurden zufällig aufgestellt."
|
||||
game["message"] = "Alle Idioten wurden zufällig aufgestellt."
|
||||
save_game(game)
|
||||
return jsonify(build_state_payload(game))
|
||||
|
||||
@ -364,7 +364,7 @@ def api_start():
|
||||
|
||||
placed_ids = {cell for row_ in game["player_board"] for cell in row_ if cell is not None}
|
||||
if len(placed_ids) != len(FLEET):
|
||||
return jsonify({"error": "Bitte alle Zwerge platzieren, bevor der Kampf beginnt."}), 400
|
||||
return jsonify({"error": "Bitte alle Idioten platzieren, bevor der Kampf beginnt."}), 400
|
||||
|
||||
game["status"] = "playing"
|
||||
game["message"] = "Der Kampf hat begonnen! Du bist am Zug – ziehe in die feindlichen Berge."
|
||||
@ -401,12 +401,12 @@ def api_fire():
|
||||
computer_result = None
|
||||
if all_ships_sunk(game["computer_board"], game["player_shots"]):
|
||||
game["status"] = "player_win"
|
||||
game["message"] = "Sieg! Du hast alle Zwergensiedlungen des Computers zerstört."
|
||||
game["message"] = "Sieg! Du hast alle Idioten des Computers versenkt."
|
||||
else:
|
||||
computer_result = computer_take_shot(game)
|
||||
if all_ships_sunk(game["player_board"], game["computer_shots"]):
|
||||
game["status"] = "computer_win"
|
||||
game["message"] = "Niederlage! Der Computer hat all deine Zwerge besiegt."
|
||||
game["message"] = "Niederlage! Der Computer hat all deine Idioten besiegt."
|
||||
else:
|
||||
msgs = []
|
||||
msgs.append(
|
||||
|
||||
@ -105,7 +105,7 @@ function renderPlacementBoard(data) {
|
||||
|
||||
async function handlePlacementClick(r, c) {
|
||||
if (!state.selectedShip) {
|
||||
setMessage("Wähle zuerst einen Zwergenclan aus.", true);
|
||||
setMessage("Wähle zuerst einen Idioten aus.", true);
|
||||
return;
|
||||
}
|
||||
try {
|
||||
|
||||
@ -3,21 +3,21 @@
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Zwerge versenken</title>
|
||||
<title>Idioten versenken</title>
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/style.css') }}">
|
||||
</head>
|
||||
<body>
|
||||
<div class="app">
|
||||
<header>
|
||||
<h1>⛏️ Zwerge versenken</h1>
|
||||
<p class="subtitle">Schiffe versenken mit Zwergenclans – du gegen den Computer</p>
|
||||
<h1>🤡 Idioten versenken</h1>
|
||||
<p class="subtitle">Schiffe versenken mit Idioten – du gegen den Computer</p>
|
||||
</header>
|
||||
|
||||
<div id="message" class="message"></div>
|
||||
|
||||
<section id="placement-screen" class="screen">
|
||||
<h2>Aufstellung</h2>
|
||||
<p>Wähle einen Zwergenclan und klicke auf dein Feld, um ihn zu platzieren.</p>
|
||||
<p>Wähle einen Idioten und klicke auf dein Feld, um ihn zu platzieren.</p>
|
||||
|
||||
<div class="placement-controls">
|
||||
<div id="fleet-picker" class="fleet-picker"></div>
|
||||
|
||||
Reference in New Issue
Block a user