Giter VIP home page Giter VIP logo

spaceoutvaders's Introduction

Space Outvaders

Space Outvaders est un projet de première année donné a l'IUT Informatique d'Aix-en-Provence.
Le but est d'améliorer un Space Invaders déjà existant en CLI afin de le rendre plus attractif auprès du joueur.

Usage

Pré-requis

Ce projet a été fait sur Qt Creator, il vous sera donc nécessaire de l'avoir installé avant toute chose.

Attention, la seule compatibilité de ce programme est avec Linux. Il est possible de le compiler sous macOS en installant freeglut via brew, et en changeant l'emplacement des bibliothèques dans le fichier de projet.
Enfin, il vous faudra GCC 8.2+ ou Clang 6.0+ pour compiler ce projet.

Compilation

Il vous suffit simplement de cloner ce repo:

git clone [email protected]:Kuruyia/SpaceOutvaders.git

Puis, ouvrir le fichier .pro avec Qt Creator, configurer le projet et cliquer sur le bouton d'exécution du programme.

Documentation

Toute la documentation du code peut être trouvée dans ce lien.

Fonctionnalités ajoutées

  • Passage d'une CLI vers une GUI: Le jeu a été très fortement modifié afin d'intégrer une interface graphique en lieu et place de l'usage du terminal. Pour ceci, nous utilisons la bibliothèque fournie par les professeurs, minGL, que nous avons fortement modifiée.
  • Système d'événements utiliasteur: Un gestionnaire d'événement a été ajoutée sur minGL afin de pouvoir traiter les entrées clavier et souris sans interrompre le cours du jeu. Cela permet de faire des menus cliquables a la souris, ainsi que de déplacer le joueur dans le jeu.
  • Gestion d'images: Un format d'image a été créé afin de stocker des pixels sous la forme RGBA, afin de ne pas avoir a charger une grosse bibliothèque pour utiliser un format plus complexe et avoir des graphismes plus poussés.
  • Séparation des écrans: Chaque écran est séparé dans le code afin de ne pas avoir un gros fichier qui gère tout les états du jeu.
  • Score et configuration: Un système de score est en place, il dépend du nombre d'ennemis touchés et du nombre de vie lors d'une victoire. La configuration permet de changer ses touches et la difficulté du jeu. Ces deux propriétés sont persistantes entre deux lancement du programme car sauvegardées sur le disque.
  • Difficulté et vies: Un système de difficulté a été ajouté afin de pouvoir rajouter du challenge. Les difficultés peuvent multiplier les fréquences du jeu pour le modifier sa vitesse générale, mais aussi donner un bonus de score et changer le nombre de vies. Un système de vie a aussi été ajouté, le joueur perd une vie a chaque fois qu'il est touché et perd si il n'en a plus.
  • Animation de l'interface: Un moteur de transition est présent dans le jeu afin de pouvoir animer des éléments de l'interface utilisateur facilement. Cela permet d'être plus attrayant a l'oeil du joueur. Un exemple flagrant de ce moteur est le titre principal du menu titre.

Captures d'écran

Menu titre En jeu

Remerciements

  • Les membres de mon équipe qui ont contribués a ce projet, leurs noms sont présents dans leurs fichiers respectifs
  • Les professeurs de l'IUT pour la base de minGL ainsi que leur critique sur ce code

spaceoutvaders's People

Contributors

arc13 avatar kuruyia avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.