madamasterclass.com

📔 Mini-jeu

Création d'un petit jeu avec flask


Activité : Création d'une Application de Jeu de Mots Croisés 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.

1. Prérequis
  •                 1️⃣ Python installé sur votre machine.
  •                 2️⃣ Flask installé. Si ce n'est pas fait, exécutez la commande suivante :
  • pip install Flask
  • SQLite pour la base de données.
2. Créer la structure du projet

Créez un dossier pour votre projet, par exemple crossword_app, et à l'intérieur, créez les sous-dossiers suivants :

  •                 1️⃣ static : pour vos fichiers CSS et JavaScript.
  •                 2️⃣ templates : pour vos fichiers HTML.
3. Créer la base de données

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.

4. Créer les fichiers HTML

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>
5. Créer le fichier Python principal

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)
6. Démarrer le serveur

Pour démarrer votre application, exécutez le fichier Python principal :

python app.py
7. Accéder à l'application

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.

8. Conclusion

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é !


Ajout de Fonctionnalités Avancées à l'Application de Mots Croisés

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.

1. Gestion des Scores

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 :

  • Base de données : Ajoutez une table scores pour stocker les scores des utilisateurs.
  • c.execute('''CREATE TABLE IF NOT EXISTS scores (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    username TEXT,
    score INTEGER
    )''')
  • Logique de score : Dans la fonction de soumission, calculez le score en fonction du nombre de bonnes réponses.
  • Affichage des scores : Créez une page pour afficher le classement des joueurs.
2. Niveaux de Difficulté

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.

  • Interface utilisateur : Ajoutez un menu déroulant pour sélectionner le niveau de difficulté.
  • Logique de génération : Modifiez la logique de génération de la grille en fonction du niveau choisi.
3. Statistiques de Jeu

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.

  • Base de données : Ajoutez une table 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
    )''')
  • Calcul des statistiques : Enregistrez les statistiques après chaque partie et affichez-les sur une page dédiée.
4. Conclusion

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 !

Forum(s) associé(s)

Page: