Skip to content

Instantly share code, notes, and snippets.

@Manapyzz
Last active February 27, 2021 12:29
Show Gist options
  • Save Manapyzz/54042449517e03c4b16a0afd4fd23718 to your computer and use it in GitHub Desktop.
Save Manapyzz/54042449517e03c4b16a0afd4fd23718 to your computer and use it in GitHub Desktop.

But

Le but de ce devoir est de créer un jeu de carte simple et de pouvoir faire des parties.

Les règles

Chaque joueur possède 30 points de vie.

Toutes les cartes se verront distribuées entre les 2 joueurs. (Ce jeu de carte se joue à 2)

Chaque carte possède des points de vie ainsi qu'une puissance d'attaque.

À chaque tour les 2 joueurs jouent la première carte de leur paquet. Les deux cartes vont alors "s'attaquer" : si la puissance d'attaque de la carte dépasse les points de vie de la carte adverse alors le restant des points d'attaque sera infligé au joueur adverse.

Voici des exemples:

1er tour: Carte Player 1 -> 5PA/5PDV Carte Player 2 4PA/4PDV = Le joueur 2 prendra 1 de dégat sur ses points de vie.

2ème tour: Carte Player 1 -> 5PA/5PDV Carte Player 2 3PA/5PDV = Aucun des joueurs ne prend des dégats.

3ème tour: Carte Player 1 -> 10PA/5PDV Carte Player 2 5PA/5PDV = Le joueur 2 prendra 5 de dégat sur ses points de vie.

4ème tour: Carte Player 1 -> 10PA/5PDV Carte Player 2 10PA/5PDV = Les deux joueurs prennent 5 de dégat sur leurs points de vie.

Le perdant est le joueur qui n'a plus de point de vie ou celui qui a le moins de point de vie lorsque toutes les cartes ont été jouées. Les joueurs peuvent également finir à égalité.

Points techniques:

3 Classes seront utilisées :

Player Deck Card

La classe Card contiendra les attributs suivants: name, life, damage.

La classe Deck contiendra l'attribut suivant: cards.

La classe Player contiendra les attributs suivants: name, health, cards.

La classe Deck devra au moment de son instantiation générer un deck de 30 cartes (Classe Cards). La façon de générer chacune des cartes est libre cependant il est interdit d'avoir 2 fois la même carte dans le deck.

Les cartes devront forcément être mêlangées avant distribution aux joueurs. Pour cela il faudra obligatoirement ajouter une méthode "shuffle" (interdit d'utiliser directement la fonction shuffle de php) ainsi qu'une méthode "distributeCards" à la classe Deck. La distribution des cartes se fera une par une à chaque joueur.

Vous pouvez ajouter toutes les méthodes que vous souhaitez en plus de celles obligatoires.

Bonus

Bonus: Pouvoir recommencer une partie sans relancer le script.
Bonus 2: Pouvoir jouer sur le navigateur (Pas de HTML dans les classes !).

Rendu

Le code devra être en ANGLAIS.
Vous devez également utiliser du type hint pour toutes vos méthodes: https://mlocati.github.io/articles/php-type-hinting.html.
Tous les noms de variables, de fonctions, d'attributs, de méthodes, etc... devront être sensés (pas de variable "$test" ou de "getData" par exemple).

Un non respect d'une de ses consignes = -5 points sur le projet.

Rendu à faire avant le AVANT le 01/03/2021. Rendu à faire sur un repository Github/Gitlab privé à partager à mon compte (Manapyzz).

Envoyez moi vos questions sur discord si nécessaire !

Bon courage !

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment