Création d'un petit jeu avec flask
Dans cette activité, vous allez créer une application de jeu de mots croisés. Les utilisateurs pourront remplir des grilles et vérifier leurs réponses. Cette application inclura des fonctionnalités pour générer des grilles, stocker les mots dans une base de données et soumettre des réponses.
pip install Flask
Créez un dossier pour votre projet, par exemple crossword_app
, et à l'intérieur, créez les sous-dossiers suivants :
static
: pour vos fichiers CSS et JavaScript.templates
: pour vos fichiers HTML.Créez un fichier nommé database.py
pour initialiser votre base de données SQLite :
import sqlite3
def init_db():
conn = sqlite3.connect('crossword.db')
c = conn.cursor()
c.execute('''CREATE TABLE IF NOT EXISTS words (
id INTEGER PRIMARY KEY AUTOINCREMENT,
word TEXT,
position_x INTEGER,
position_y INTEGER,
direction TEXT
)''')
# Exemple de mots à ajouter
words = [('PYTHON', 0, 0, 'horizontal'), ('FLASK', 1, 0, 'vertical')]
c.executemany('INSERT INTO words (word, position_x, position_y, direction) VALUES (?, ?, ?, ?)', words)
conn.commit()
conn.close()
if __name__ == '__main__':
init_db()
Ce code crée une table words
pour stocker les mots du jeu de mots croisés.
Dans le dossier templates
, créez un fichier nommé index.html
avec le contenu suivant :
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>Jeu de Mots Croisés</title>
<link rel="stylesheet" href="static/style.css">
</head>
<body>
<h1>Mots Croisés</h1>
<form action="/submit" method="post">
<table>
{% for row in range(10) %}
<tr>
{% for col in range(10) %}
<td><input type="text" maxlength="1" name="cell_{{ row }}_{{ col }}"></td>
{% endfor %}
</tr>
{% endfor %}
</table>
<input type="submit" value="Soumettre">
</form>
</body>
</html>
Dans le dossier principal, créez un fichier nommé app.py
et ajoutez le code suivant :
from flask import Flask, render_template, request, redirect
import sqlite3
app = Flask(__name__)
def get_db_connection():
conn = sqlite3.connect('crossword.db')
conn.row_factory = sqlite3.Row
return conn
@app.route('/')
def index():
conn = get_db_connection()
words = conn.execute('SELECT * FROM words').fetchall()
conn.close()
return render_template('index.html', words=words)
@app.route('/submit', methods=['POST'])
def submit():
# Logique pour vérifier les réponses
return redirect('/')
if __name__ == '__main__':
app.run(debug=True)
Pour démarrer votre application, exécutez le fichier Python principal :
python app.py
Ouvrez votre navigateur et accédez à http://localhost:5000
. Vous devriez voir votre jeu de mots croisés. Remplissez les cases et soumettez vos réponses.
Vous avez maintenant créé une application de jeu de mots croisés avec Flask et une base de données. Les utilisateurs peuvent remplir des grilles et soumettre leurs réponses. Explorez davantage en ajoutant des indices ou des niveaux de difficulté !
Dans cette section, nous allons explorer comment enrichir notre application de mots croisés avec des fonctionnalités supplémentaires telles que la gestion des scores, des niveaux de difficulté et des statistiques de jeu.
Pour rendre le jeu plus compétitif, vous pouvez ajouter un système de score. Chaque fois qu'un utilisateur soumet une bonne réponse, il obtient des points. Voici comment procéder :
scores
pour stocker les scores des utilisateurs.c.execute('''CREATE TABLE IF NOT EXISTS scores (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT,
score INTEGER
)''')
Pour rendre le jeu plus intéressant, vous pouvez ajouter des niveaux de difficulté. Par exemple, vous pouvez proposer des grilles plus grandes ou des mots plus difficiles selon le niveau choisi par l'utilisateur.
Enregistrez des statistiques sur les performances des utilisateurs, comme le temps nécessaire pour terminer un jeu ou le nombre de tentatives avant d'obtenir la bonne réponse.
game_stats
pour stocker les statistiques.c.execute('''CREATE TABLE IF NOT EXISTS game_stats (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT,
attempts INTEGER,
time_taken REAL
)''')
En ajoutant des fonctionnalités telles que la gestion des scores, des niveaux de difficulté et des statistiques de jeu, vous pouvez rendre votre application de mots croisés plus engageante et interactive. N'hésitez pas à explorer d'autres idées et à personnaliser votre application selon vos préférences !
Abonnez-vous maintenant et recevez notre newsletter hebdomadaire avec des matériaux éducatifs, de nouveaux cours, des articles intéressants, des livres populaires et bien plus encore !