Accueil Freelance Projets Compétences Blog Expériences Formation
← Tous les projets
BlackJack JavaFX

Jeu de cartes développé en Java avec interface JavaFX

Règles de jeu complètes avec gestion des As (1 ou 11)
Implémentation complète des règles du Blackjack
Protection des scores avec chiffrement HMAC + SHA-256
Système de chiffrement des données
Pipeline GitHub Actions pour tests automatisés
Intégration continue

Contexte du projet

BlackJack JavaFX est un projet académique réalisé en deuxième année dans le cadre de la SAE (Situation d’Apprentissage et d’Évaluation). L’objectif était de développer un jeu de Blackjack complet en Java avec une interface graphique JavaFX, en mettant l’accent sur :

  • La programmation orientée objet (POO) en Java
  • La conception d’interface utilisateur (IHM)
  • L’algorithmique appliquée à la logique de jeu
  • La gestion de projet en équipe

Fonctionnalités principales

🎮 Logique de jeu complète

  • Distribution aléatoire de cartes avec gestion de pioche sans remise
  • Calcul automatique des scores avec règles spécifiques des As
  • Gestion des actions : tirer une carte, rester, doubler la mise
  • Décisions automatiques de la banque selon les règles officielles

🖥️ Interface utilisateur interactive

  • Écrans multiples : accueil, mise, jeu principal
  • Affichage dynamique des cartes et scores en temps réel
  • Animations fluides pour la distribution des cartes
  • Messages contextuels de victoire/défaite
  • Expérience utilisateur optimisée

🔒 Sécurité et persistance

  • Base de données SQLite pour stocker les meilleurs scores
  • Chiffrement HMAC + SHA-256 des données sensibles
  • Protection contre la triche avec hashage sécurisé

Activités techniques réalisées

🧮 Développement algorithmique

Compétences mobilisées :

  • CE 2.02 – Recenser les algorithmes et structures de données usuels
  • CE 2.04 – Justifier les choix et valider les résultats

Réalisations :

  • Algorithme de mélange de Fisher-Yates pour la distribution aléatoire
  • Système de calcul dynamique des scores avec gestion des As
  • Logique de décision automatique pour la banque
  • Optimisation des structures de données pour la performance
public void melanger() {
    for (int i = 0; i < 52; i++) {
        int randIndex = i + new Random().nextInt(52 - i);
        Carte temp = paquet.get(i);
        paquet.set(i, paquet.get(randIndex));
        paquet.set(randIndex, temp);
    }
}

🎨 Conception d’interface

Compétences mobilisées :

  • CE 1.04 – Veiller à la qualité du code et à sa documentation
  • CE 6.04 – Développer une communication efficace et collaborative

Réalisations :

  • Architecture MVC pour séparer logique métier et présentation
  • Interface responsive avec gestion d’événements
  • Synchronisation temps réel entre modèle et vue
  • Amélioration continue de l’expérience utilisateur

🔧 DevOps et sécurité

Compétences mobilisées :

  • AC 13.03 – Installer et configurer un système et des outils
  • AC 33.01 – Créer des processus de traitement automatisé
  • AC 21.02 – Mettre en œuvre des principes de sécurité informatique

Réalisations :

  • Configuration Maven pour la gestion des dépendances
  • Pipeline GitHub Actions pour l’intégration continue
  • Implémentation de chiffrement sécurisé pour les données
  • Versionning collaboratif avec Git
public static String hash(String clearPassword) {
    try {
        // Génération de HMAC avec SHA-256
        Mac sha256Hmac = Mac.getInstance(ALGORITHM);
        SecretKeySpec secretKey = new SecretKeySpec(PEPPER.getBytes(), ALGORITHM);
        sha256Hmac.init(secretKey);
        // ... Processus de hachage complet
    } catch (NoSuchAlgorithmException | InvalidKeyException e) {
        e.printStackTrace();
        return null;
    }
}

Architecture technique

🏗️ Structure du projet

  • Modèle MVC pour une architecture claire et maintenable
  • Séparation des responsabilités entre logique métier et interface
  • Programmation orientée objet avec encapsulation et héritage
  • Design patterns appliqués pour la robustesse du code

🛠️ Technologies utilisées

  • Java pour la logique métier et les algorithmes
  • JavaFX pour l’interface graphique moderne
  • SQLite pour la persistance des données
  • Maven pour la gestion des dépendances
  • GitHub Actions pour l’intégration continue

Compétences développées

DomaineApprentissage CritiqueComposante EssentielleNiveau
AlgorithmiqueAC 12.02 – Comparer des algorithmesCE 2.02 – Structures de données usuellesApplication
Interface utilisateurAC 11.01 – Implémenter des conceptionsCE 1.04 – Qualité du codeMaîtrise
Outils de développementAC 13.03 – Installer et configurerCE 5.04 – Démarche proactiveApplication
Gestion de projetAC 15.03 – Identifier les phasesCE 6.04 – Communication efficaceApplication
SécuritéAC 21.02 – Principes de sécuritéCE 4.02 – Bonnes pratiquesApplication
AutomatisationAC 33.01 – Processus automatisésCE 5.04 – Démarche proactiveApplication

Résultats et apprentissages

Ce projet m’a permis de :

  • Maîtriser la POO en Java avec une architecture solide
  • Développer des interfaces utilisateur modernes avec JavaFX
  • Implémenter des algorithmes complexes pour la logique de jeu
  • Collaborer efficacement en équipe avec les outils Git
  • Appliquer la sécurité informatique dans un contexte réel
  • Mettre en place l’intégration continue pour la qualité du code

Le projet a abouti à un prototype jouable et complet, respectant toutes les règles du Blackjack, avec une interface intuitive et des fonctionnalités avancées de sécurité et de persistance des données.

Équipe

Équipe de développement
Équipe de développement
Développeur en binôme