Clément 'Clix' GARCIA
Clément GARCIA Développeur logiciel et de jeu vidéo passionné avec une expertise particulière dans les domaines suivants :
Clément 'Clix' GARCIA
Clément
App Étude
BlackJack JavaFX

Informations du projet

App Étude
Date 15 mars 2024
Statut Terminé

Faits notables

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

Contributeurs

1 contributeur
P
1 contributeur
Développeur en binôme (1)
Développeur en binôme
P
Personnes
Développeur en binôme

Temps de développement

3 semaines
3 semaines
Temps total
Méthodologie

Développement continu

Spécifications techniques

3 spécifications
Langages de programmation
Java SQL
Frameworks & Moteurs
JavaFX
Cliquez sur les technologies pour voir les détails et projets associés

Spécialités utilisées

2 domaines appliqués
2 domaines appliqués
Clément 'Clix' GARCIA
Spécialités de Clément pour ce projet
Développeur logiciel et de jeu vidéo passionné avec une expertise particulière dans les domaines suivants :
Algorithmique
2 ANS
Interface utilisateur
2 ANS
Cliquez sur une spécialité pour voir les projets associés et plus de détails

Compétences transversales

2 compétences mobilisées
💬 Communication
🔍 Résolution Problèmes
2 compétences mobilisées
Clément 'Clix' GARCIA
Compétences transversales de Clément pour ce projet
Développeur logiciel et de jeu vidéo passionné avec une expertise particulière dans les domaines suivants :
Communication
Présentation
Compétence clé
Résolution Problèmes
Debug
Compétence clé
Cliquez sur une compétence pour voir les projets et expériences associés

Outils utilisés

4 outils employés
GitLab
Fork
Photoshop
JetBrains
4 outils
Contrôle de version (14)
Design (7)
IDE (7)
Clément 'Clix' GARCIA
Outils utilisés par Clément pour ce projet
Développeur logiciel et de jeu vidéo passionné avec une expertise particulière dans les domaines suivants :
Contrôle de version
GitLab
Gestion de versions, CI/CD, collaboration en équipe
3 ans
Fork
Collaboration et gestion des repositories par le biais d'une interface graphique
3 ans
Design
Photoshop
Retouche d'images et création graphique
4 ans
IDE
JetBrains
Suite d'environnements de développement
3 ans
Cliquez sur un outil pour voir les projets associés et plus de détails
Chargement...

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.

×