Skip to content

Azilbelaid/CoreWar

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

                ⚔️ Corewar Java : Simulateur MARS & Générateur Évolutionnaire ⚔️

📝 Présentation 

Ce projet est un simulateur complet de Corewar, un jeu de programmation où des programmes de bas niveau (appelés "guerriers") s'affrontent pour le contrôle de la mémoire d'une machine virtuelle.

Au-delà de la simple simulation, ce projet intègre un générateur automatique de programmes basé sur des algorithmes génétiques, permettant de faire évoluer des guerriers pour les rendre de plus en plus performants face à leurs adversaires.

🚀 Fonctionnalités Clés

Machine Virtuelle MARS : Implémentation du standard ICWS-88 avec une mémoire circulaire partagée.

Interpréteur RedCode : Support des instructions fondamentales (MOV, ADD, SPL, JMP, etc.) avec chargement dynamique des classes pour une meilleure extensibilité.

Modes d'adressage : Gestion des modes Direct, Immédiat, Indirect et Pré-décrémenté.

Algorithme Génétique : Évolution de populations de guerriers par sélection, croisement et mutation.

Interface Graphique (Swing) : Visualisation temps réel de la mémoire sous forme de grille colorée, suivi des instructions et contrôle de la vitesse d'exécution.

🛠️ Installation et Utilisation

Le projet utilise Apache Ant pour la gestion du cycle de vie.

Compiler le projet : ant compile (Compile le code source et les tests).

Lancer l'interface graphique : ant run-interface (Lance la classe Demo.java).

Lancer l'algorithme génétique : ant run-genetic (Exécute MainGenetic).

Lancer la console : ant run-console (Exécute la classe Main du cœur).

Lancer les tests : ant run-test (Exécute la suite de tests unitaires).

Nettoyer : ant clean (Supprime le dossier build/).

🏗️ Architecture du Projet

L'architecture respecte les principes du Modèle-Vue-Contrôleur (MVC) avec le pattern Observer.

model.coeur : Gère la mémoire, l'interpréteur et l'unité de contrôle.

model.genetic : Contient les mécanismes de mutation, croisement et sélection des programmes.

vue : Interface graphique permettant l'interaction et la visualisation en temps réel.

controleur : Coordonne les actions entre la vue et le modèle.

Shutterstock

🧬 Focus : Algorithme Génétique

Le processus d'évolution suit les étapes suivantes:

Évaluation : Les programmes s'affrontent pour mesurer leur efficacité.

Sélection : Les meilleurs candidats sont choisis comme parents.

Croisement : Échange de segments de code entre parents pour créer des enfants.

Mutation : Introduction de modifications aléatoires pour maintenir la diversité génétique.

📁 Structure du Dépôt

src/ : Code source Java. test/ : Fichiers de tests unitaires. lib/ : Bibliothèques externes (JUnit, Mockito). programmes/ : Exemples de guerriers RedCode. rapport/ : Documentation technique et sources LaTeX.

👥 Réaliser par :

                                  Belaid AZIL 

Université Caen Normandie (2024-2025)

About

Ce projet est un environnement de simulation de combat de programmes basé sur le célèbre jeu Corewar. Il permet à des programmes écrits en langage RedCode (standard ICWS-88) de s'affronter au sein d'une machine virtuelle MARS pour obtenir le contrôle exclusif de la mémoire circulaire.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors