Skip to content
This repository was archived by the owner on Dec 29, 2024. It is now read-only.

444chak/Diamant

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

41 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Diamants

iut-velizy

Auteurs : Eliott, Chakib
Années : 2022-2023
GitHub : https://github.com/Chakib-Eliott/sae-1.01
IA liée au jeu : https://github.com/Chakib-Eliott/sae-1-02

Sommaire

Description

Diamants est un jeu de société. Il a été ici développé sur Python pour pouvoir y jouer sur ordinateur par Eliott et Chakib.
Ce projet a été développé afin de réaliser une SAé à l'IUT de Vélizy pendant le 1er semestre du BUT 1.

Règle du jeu

Les règles officiels du jeu sont disponibles ici.
Le but de ce jeu est de gagner le plus de diamants durant 5 expéditions dans des mines.
Pendant les expéditions, les joueurs choisissent entre rester dans la grotte ou y sortir. Les joueurs font ce choix par rapport aux cartes qui sortent à chaques tours. Les cartes qui peuvent sortir sont :

  • des cartes diamants
  • des cartes pièges
  • des cartes reliques

Les cartes diamants comportent un trésor qui sera partagé entre tous les participants de l'expédition et le reste du trésor sera redéposé sur la carte. Le reste des diamants peut être récupéré si vous sortez de la grotte, le trésor est donc partagé avec tous les joueurs sortant.
Les cartes pièges peuvent vous faire perdre tous vos diamants récoltés pendant votre expédition si un piège sort 2 fois.
Les reliques sont des cartes qui rapporte beaucoup de diamants à la fin de la partie mais pour la récupérer il faut être le seul joueur à sortir. Les diamants des reliques sont par rapport à quand est-ce que vous les avez obtenu :

  • 1ère relique : 5 diamants
  • 2ème relique : 5 diamants
  • 3ème relique : 5 diamants
  • 4ème relique : 10 diamants
  • 5ème relique : 10 diamants

Contenu du jeu

  • 15 cartes trésors (1,2,3,4,5,5,7,7,9,11,11,13,14,15,17)
  • 15 cartes pièges (3 araignées, 3 serpents, 3 laves, 3 boulets, 3 béliers)
  • 5 reliques

Fonctionnement

Pour lancer le jeu il vous suffit d'aller dans le répertoire où est le programme Python dans un terminal et taper la commande suivante :

python3 main.py [arg]

Le 'Python3' peut parfait être simplement 'Python'.
Dans l'argument 'arg' il faut que vous mettre un argument qui va lancer le jeu dans le mode que vous voulez. Si vous ne mettez pas d'argument le jeu va vous le demander par la suite.
Les arguments possibles :

  • terminal
  • graphique

Bugs rencontrés

Lors de la réalisation du projet, nous avons fait face à plusieurs bugs.
Le premier bug était un bug sur les vérifications des monstres. En effet nous vérifions si un monstre sortait et on retournait True si il était déjà sorti. Mais nous analysons jamais ce booléen et donc cela ne stoppait jamais la partie. Nous avons donc analysé ce booléen dans la fonction piocheCarte
Le deuxième bug était un problème de type. Nous avions utilisé un dictionnaire pour représenter le tapis mais le dictionnaire n'était pas le type le plus adapté à ce problème vu que les cartes ne pouvaient donc pas sortir deux fois et on avait donc un problème de tour 'vide'. Nous avons donc remplacé la type du tapis par une liste à 2 dimensions.
Le troisième bug était qu'on n'attribuait jamais les bonus de la relique. Ce bug a rapidement été réglé après le rajout du bonus.
Le quatrième bug était qu'on ne pouvait pas utiliser les 'print format' de la manière suivante avec les machines de l'IUT :

text = "Hello World!"
print(f"{text}")

Nous avons donc modifié nos 'print' afin de les rendre utilisable avec la méthode suivante :

print("Hello {w}!".format(w="World"))

Le cinquième bug était un bug où le dernier joueur sorti ne récupérait jamais son bultin. Nous avons règler ce problème après de longs moments d'analyse du code en remarquant que ne finissions le tour avant de faire jouer le joueur.
Le sixième bug est que lors qu'on joue avec des bots dans l'interface graphique, on ne voit pas leurs actions et les tours se téléportent. Ce problème n'a pas pu être réglé car nous n'avons pas trouvé la solution compatible avec le module 'Tkinter' qui n'est pas adapté au module 'sleep'.

Idées

Afin d'améliorer notre programme, nous avons décidé de nettoyer (clear) le terminal à chaque interraction différente afin d'avoir un terminal clair et cohérent avec l'action du jeu.
Nous avons aussi ajouté des couleurs à ce terminal pour le rendre plus lisible.
Au lancement du jeu vous choisissez directement la version du jeu, soit dans le terminal soit avec l'interface graphique, et vous pouvez même rentrer ce choix avec des arguments après la commande Python.
Pour mieux implémenter le jeu dans le terminal et l'interface graphique, nous avons décidé de construire le module diamants.py avec une classe (Class).

Illustration des cartes

Voici à quoi ressemble les cartes en jeu :

Nom de la carte Illustration
Diamants 1 diamants1
Diamants 2 diamants2
Reliques relique
Araignées araignees
Serpents serpents
Boulets boulets
Béliers beliers
Laves laves

Captures d'écran

  • Au démarage du jeu
    demarage
  • Affichage dans le terminal
    affichage-terminal
  • Classement dans le terminal
    classement-terminal
  • Page d'accueil de l'interface graphique
    accueil-graphique
  • Partie dans l'interface graphique
    partie-graphique
  • Classement dans l'interface graphique
    classement-graphique

(Les images ont été prise sur un Mac, les graphismes de la page sont donc pas ceux d'un ordinateur sur Linux ou Windows)


Lien vers le sujet.


© Eliott / Chakib

About

SAé 1.01

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Python 100.0%