Веб-игра с Python: Flask отдаёт страницу, браузер рисует
В примере Python обслуживает HTTP, а интерактивность выполняет JavaScript. Обычный Pygame не превращается в браузерную игру от одного import в Flask: это отдельная технология с другой средой запуска.
Структура и сервер
game.py
templates/game.html
static/game.jsfrom 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-размещения.