|
2 years ago | |
---|---|---|
.. | ||
README.md | 2 years ago | |
subject_week1.md | 2 years ago |
README.md
Home | Semaine 1
Introduction
Cette introduction explique comment cette ressource va se dérouler, ce qu'il y aura à réaliser, et comment vous serez évaluées et évalués.
Pour découvrir le langage Swift, nous proposons de développer le modèle d'un jeu traditionnel chinois appelé le Dou Shou Qi dont les origines remontraient au Vème siècle.
Dou Shou Qi
But du jeu :
- occuper la tanière de son adversaire
- ou manger toutes ses pièces
- ou l'empêcher de bouger.
Matériel :
Chaque joueur possède 8 pions numérotés (pour représenter leur force) et représentant des animaux : Rat 🐭 (1), Chat 🐱 (2), Chien 🐶 (3), Loup 🐺 (4), Léopard 🐆 (5), Tigre 🐯 (6), Lion 🦁 (7) et Éléphant 🐘 (8).
Le plateau de jeu est une grille à deux dimensions de 10 lignes et 7 colonnes. Il est fait de 4 types de cases :
- Jungle 🌿 : aucune particularité
- Lac 💧 : interdit à tous les animaux sauf le Rat ; le Lion et le Tigre peuvent sauter par-dessus.
- Tanière 🪹 : un joueur ne peut pas se déplacer sur sa propre Tanière et doit aller sur la Tanière de l'adversaire pour gagner
- Piège 🪤 : un pion sur un piège (quel que soit le côté du plateau) a une force de 0.
La grille originale ressemble à :
🌿 🌿 🪤 🪹 🪤 🌿 🌿
🌿 🌿 🌿 🪤 🌿 🌿 🌿
🌿 🌿 🌿 🌿 🌿 🌿 🌿
🌿 💧 💧 🌿 💧 💧 🌿
🌿 💧 💧 🌿 💧 💧 🌿
🌿 💧 💧 🌿 💧 💧 🌿
🌿 💧 💧 🌿 💧 💧 🌿
🌿 🌿 🌿 🌿 🌿 🌿 🌿
🌿 🌿 🌿 🪤 🌿 🌿 🌿
🌿 🌿 🪤 🪹 🪤 🌿 🌿
(la tanière du haut est celle du joueur 1, celle du bas du joueur 2).
De plus, certaines cases sont les cases de départ des pions :
🦁 🌿 🪤 🪹 🪤 🌿 🐯
🌿 🐶 🌿 🪤 🌿 🐱 🌿
🐭 🌿 🐆 🌿 🐺 🌿 🐘
🌿 💧 💧 🌿 💧 💧 🌿
🌿 💧 💧 🌿 💧 💧 🌿
🌿 💧 💧 🌿 💧 💧 🌿
🌿 💧 💧 🌿 💧 💧 🌿
🐘 🌿 🐺 🌿 🐆 🌿 🐭
🌿 🐱 🌿 🪤 🌿 🐶 🌿
🐯 🌿 🪤 🪹 🪤 🌿 🦁
(où les animaux du haut sont ceux du joueur 1, et ceux du bas du joueur 2).
Pouvoir des animaux
- Tous les animaux peuvent manger un animal de force égale ou inférieure, avec les exceptions suivantes :
- l'éléphant ne peut pas manger le rat,
- le rat peut manger l'éléphant,
- on ne peut pas manger son propre animal.
- Les animaux ne peuvent se déplacer que sur une case adjacente (même ligne ou même colonne)
- Les animaux ne peuvent pas se déplacer sur leur propre Tanière
- Les animaux ne peuvent pas se déplacer dans l'eau (sauf le Rat). Attention, le Rat ne peut pas sortir de l'eau pour attaquer l'éléphant adverse, mais il peut le faire pour attaquer le rat adverse.
- Le lion et le tigre peuvent sauter par-dessus les lacs (en restant sur la même ligne ou sur la même colonne), sauf si un rat est dans le lac, sur la trajectoire du saut.
Déroulement du jeu
Chaque joueur doit à son tour de jeu déplacer l'un de ses animaux.
Déroulement des TP
L'objectif des TP est de réaliser cette application en 5 TP durant 6 semaines.
Les énoncés seront donnés en début de semaine ainsi qu'une liste de thème à travailler pour bien réussir le TP.
La sixième semaine sert de tampon, pour rattraper le retard accumulé pendant les semaines précédentes.
Pour chacune des 5 premières semaines, il est conseillé de :
- avant le TP :
- travailler les thèmes donnés en avance, via :
- profiter du résumé en cours et poser des questions sur les parties non comprises
- pendant le TP :
- réaliser au maximum les tâches demandées
- et les faire valider par l'enseignant pour obtenir validation de l'acquisition des compétences
- après le TP :
- faire le point sur le "reste à faire" et s'organiser pour la semaine suivante
- faire le point sur les acquis que vous n'avez pas fait valider pour solliciter l'enseignant à la séance suivante
Pour la sixième semaine :
- profiter du dernier cours pour poser les dernières questions techniques
- profiter du dernier TP pour rattraper le retard et faire valider ses derniers acquis non validés par l'enseignant.
Note :
Les ressources de cours sur code first ne remplacent pas la documentation officielle. Elles apportent des conseils sur l'ordre de lecture dans la réalisation des TP.
Évaluation
Une fiche de compétences à acquérir et des points à réaliser en TP sera préparée et accessible pour chaque TP sur code first.
Vous aurez accès aux évaluations de l'enseignant au fur et à mesure de son évaluation.
Pour obtenir une validation, vous devrez prouver votre acquisition des compétences à l'enseignant via : un entretien oral ou un examen écrit.
La note finale sera composée de l'ensemble des acquis validés par l'enseignant à la dernière minute du dernier TP.
Structure de l'application
Voici un diagramme de classes volontairement simplifié présentant grossièrement les différents acteurs de l'application que vous devez réaliser :
classDiagram
direction TB
Game --> "1" Rules : rules
Game --> "1" Board : board
Game --> "2" Player: players
Rules <|.. ClassicRules
Rules <|.. VerySimpleRules
Rules ..> Board
Board --> "*,*" Cell : grid
Player <|-- RandomPlayer
Player <|-- HumanPlayer
class Board {
+insert(piece:, atRow:, andColumn:)
+removePiece(atRow:, andColumn:)
}
class Cell {
+cellType : CellType
+initialOwner: Owner
+piece : Piece?
}
class Rules {
+createBoard() : Board$
+getNextPlayer() : Owner
+isMoveValid(Board, Move) : Bool
+isGameOver(Board, Int, Int) : Bool
}
class Player {
+chooseMove(in: Board, with: Rules) Move?
}
class Game {
+init(withRules:, andPlayer1:, andPlayer2: Player)
+start()
}
Board
représente le plateau de jeu et est composé d'un tableau à deux dimensions deCell
: il est responsable de l'insertion, de la suppression et donc du déplacement des pions.Rules
représente les règles du jeu. Comme elles sont assez touffues (ClassicRules
), je vous proposerai des règles simplifiées (VerySimpleRules
).Rules
indique qui est le prochain joueur, si un coup est valide, si la partie est terminée, etc.Player
représente un joueur. Nous en réaliserons deux versions en particulier : une IA qui jouera aléatoirement (RandomPlayer
) et un joueur humain (HumanPlayer
).Game
: sert de médiateur et d'ordonnanceur pour la gestion globale du jeu.
L'application à réaliser est une application en lignes de commandes qui permettra de jouer dans un terminal et ressemblera au résultat ci-dessous :

Vous travaillerez sur :
Board
etCell
pendant les deux premières semaines,Rules
etVerySimpleRules
pendant la 3ème semaine,Player
,RandomPlayer
etHumanPlayer
pendant la 4ème semaine,Game
et l'application finale pendant la 5ème semaine.
Des énoncés plus détaillés vous seront donnés au début de chaque semaine.
Énoncés
Home | Semaine 1
Copyright © 2023-2024 Marc Chevaldonné
While writing this tutorial, I was listening to...
![]() |
On The Corner Miles Davis (1972) |