Ce projet est un jeu RPG 2D développé en Python en groupe de 3 pour le cours de Numérique et Sciences Informatiques (NSI) de terminale. Le jeu combine des mécaniques classiques de RPG avec une base de données SQL pour la gestion des données des joueurs et du monde du jeu. Nous avions une limite d'un mois et demi pour le concevoir, le coder et préparer une présentation de 10 minutes évaluée qui comporte: un cahier des charges du projet, une analyse fonctionnelle et une présentation sur Canva.
Monde 2D avec système de combat au tour par tour, Amélioration des statistiques du personnage et difficulté progressive
Utilisation de SQL pour stocker les données des joueurs, des monstres, des armes et de la progression avec un identifiant unique par joueur.
Travail en équipe via GitHub avec gestion de versions et organisation des tâches
Système complet de progression avec niveaux, expérience et amélioration de statistiques
class checkDB :
import mysql.connector
import os
def createDB():
"""
Supprime la base de données si elle existe, puis la recrée avec les tables.
"""
mydb = mysql.connector.connect(
host="localhost",
user="root",
)
mycursor = mydb.cursor()
mycursor.execute("SHOW DATABASES")
dbPresent = False
for base in mycursor:
if base[0] == "testosterone":
dbPresent = True
if dbPresent:
mycursor.execute("DROP DATABASE testosterone")
print("Base de données supprimée.")
mycursor.execute("CREATE DATABASE testosterone")
print("Base de données créée.")
mydb = mysql.connector.connect(
host="localhost",
user="root",
database="testosterone"
)
mycursor = mydb.cursor()
with open(os.path.join(os.path.dirname(__file__), 'testosterone.sql'), 'r', encoding='utf-8') as f:
sql = f.read()
try:
# Diviser les requêtes par point-virgule et les exécuter une par une
for query in sql.split(';'):
query = query.strip()
if query:
mycursor.execute(query)
print("Tables créées avec succès.")
except mysql.connector.Error as e:
print(f"Erreur lors de l'exécution du script SQL : {e}")
return False
mydb.commit()
return False
if __name__ == '__main__':
result = createDB()
print("Terminé.")
class FightScene :
for i in range(self.nbEnemies):
if self.AllEnemy.GetAllEnnemies()[i][0] == "Singe":
self.ennemies[i] = [self.AllEnemy.ennemies[i],
arcade.Sprite(os.path.join(os.path.dirname(__file__), "..", "Images", "banana.png"), scale=0.5),
False]
elif self.AllEnemy.GetAllEnnemies()[i][0] == "Araignee":
self.ennemies[i] = [self.AllEnemy.ennemies[i],
arcade.Sprite(os.path.join(os.path.dirname(__file__), "..", "Images", "spider.png"), scale=0.06),
False]
elif self.AllEnemy.GetAllEnnemies()[i][0] == "Gorille":
self.ennemies[i] = [self.AllEnemy.ennemies[i],
arcade.Sprite(os.path.join(os.path.dirname(__file__), "..", "Images", "gorilla.png"), scale=0.4),
False]
elif self.AllEnemy.GetAllEnnemies()[i][0] == "Oazo":
self.ennemies[i] = [self.AllEnemy.ennemies[i],
arcade.Sprite(os.path.join(os.path.dirname(__file__), "..", "Images", "ouaso.png"), scale=0.4),
False]
elif self.AllEnemy.GetAllEnnemies()[i][0] == "Gro-oazo":
self.ennemies[i] = [self.AllEnemy.ennemies[i],
arcade.Sprite(os.path.join(os.path.dirname(__file__), "..", "Images", "groazo.png"), scale=0.6),
False]
elif self.AllEnemy.GetAllEnnemies()[i][0] == "Ours":
self.ennemies[i] = [self.AllEnemy.ennemies[i],
arcade.Sprite(os.path.join(os.path.dirname(__file__), "..", "Images", "ours.png"), scale=0.4),
False]
Vous pouvez accéder au code source du projet sur notre dépôt GitHub.
pip install arcade
pip install mysql.connector
Exécutez le script check_db.py pour initialiser
la base de données
Lancez Main.py pour démarrer le jeu.
Captures d'écran et moments du développement

