You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Louis DUFOUR bdcd281f02
Add(Tp1): Folder subjects
2 years ago
..
README.md Add(Tp1): Folder subjects 2 years ago
subject_week1.md Add(Tp1): Folder subjects 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 :
  • 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 de Cell : 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 et Cell pendant les deux premières semaines,
  • Rules et VerySimpleRules pendant la 3ème semaine,
  • Player, RandomPlayer et HumanPlayer 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)