SmartQuery /ВОПРОС → ПРИМЕР → ПОНЯТНЫЙ ОТВЕТ
Языки и платформы

Веб-игра с Python: Flask отдаёт страницу, браузер рисует

В примере Python обслуживает HTTP, а интерактивность выполняет JavaScript. Обычный Pygame не превращается в браузерную игру от одного import в Flask: это отдельная технология с другой средой запуска.

Структура и сервер

game.py
templates/game.html
static/game.js
from flask import Flask, render_template

app = Flask(__name__)

@app.get("/")
def game():
    return render_template("game.html")

templates/game.html

<!doctype html>
<html lang="ru">
<meta charset="utf-8">
<title>Попади в кнопку</title>
<button id="target" type="button">Попасть</button>
<p id="score" role="status">Очки: 0</p>
<script src="{{ url_for('static', filename='game.js') }}" defer></script>
</html>

static/game.js

let score = 0;
const target = document.querySelector("#target");
const output = document.querySelector("#score");
target.addEventListener("click", () => {
  score += 1;
  output.textContent = `Очки: ${score}`;
});

Запуск и развитие

В отдельном окружении установите Flask и запустите flask --app game run. Откройте URL, напечатанный сервером. Проверьте загрузку game.js, увеличение счёта мышью и клавиатурой, а также сброс после перезагрузки.

Это минимальный игровой цикл взаимодействия, а не законченный сетевой проект. Для canvas добавляйте requestAnimationFrame и координаты, для серверного рекорда — проверку результата на сервере: присланному браузером score нельзя слепо доверять. Development server не предназначен для production-размещения.

Документация