1

Exercice : Attrapez-les tous !

Salut à tous les Swift-compatibles ! On se retrouve aujourd’hui pour tester un peu vos connaissances après l’apprentissage long et intensif de la POO, et pour cela rien de tel que le création d’un petit jeu en CLI pour stimuler vos méninges !

Les cours requis

Pour réaliser cet exercice vous aurez bien sûr besoin d’avoir les cours sur les bases d’Xcode et les bases de Swift, mais aussi le cours sur la programmation orientée objet ainsi que le cours sur le Swift avancé.

Je vous conseille également vivement d’avoir effectué le premier exercice : devine le nombre car la forme de celui-ci sera très similaire !

Objectifs

Le but de cet exercice est de réaliser un petit jeu en CLI (en lignes de commande) qui reproduira le moteur de combat du célèbre jeu Pokémon ! Il s’agira par conséquent d’un combat au tour par tour où vous ferez s’affronter vos pokémons à ceux d’un adversaire jusqu’a ce que l’un d’entre vous ait épuisé tous ses pokémons et perde le combat. Pour ce faire vous devrez écrire dans la console des instructions avec lesquelles vous interagirez en écrivant un numéro de commande. par exemple, la console affichera :

1
2
3
4
Qui souhaitez-vous envoyer au combat ?
1 ) Pikachu
2 ) Racaillou
3 ) Rondoudou

Et vous entrerez un chiffre correspondant au Pokémon choisi, par exemple 2 pour sélectionner Racaillou. Ainsi de suite pour toutes les actions que le jeu requière.

Règles du jeu

Vous jouerez contre une intelligence artificielle que vous devrez programmer pour jouer contre vous. Votre programme devra comporter les éléments suivants :

  • Un choix de plusieurs pokémons pour vous et d’un nombre identique pour votre adversaire.
  • L’adversaire doit choisir ses pokémons automatiquement
  • Les pokémons sont en seul exemplaire, l’IA ne peut pas choisir les mêmes pokémons que vous
  • Vous devrez pouvoir choisir lequel de vos pokémons envoyer au combat en premier
  • L’IA choisira un Pokémon à envoyer au premier combat

Une fois les pokémons répartis, la partie commence.

  • Chaque Pokémon à nombre de point de vie et un nombre de points de défense définis, ces derniers réduiront les dégâts subits
  • Chaque Pokémon possèdera plusieurs capacités, des attaques et des sorts à lancer
  • Chaque capacité aura un nombre d’utilisation maximale par partie
  • Les sorts pourront avoir au moins deux effets différents : soigner et réduire la défense adverse
  • Chaque Pokémon possède un élément (par exemple : pierre, feuille, ciseaux)
  • Chaque attaque PEUT posséder un élément aussi et sera plus ou moins efficace en fonction du Pokémon sur lequel elle est utilisée . Par exemple, un attaque de type pierre sera très efficace contre un Pokémon ciseaux, mais ne sera pas très efficace contre un Pokémon de type feuille, les dégâts devront donc être modifié en fonction de ce critère
  • Chaque tour, le joueur et l’IA peuvent choisir parmi la liste des capacités de son Pokémon, ou bien ont la possibilité de changer de Pokémon
  • Une fois qu’un Pokémon n’a plus de vie, le joueur doit changer et choisir un autre Pokémon
  • Si plus aucun de ses pokémons n’a de points de vie, la partie est finie
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Qui souhaitez-vous envoyer au combat ?
1 ) Pikachu
2 ) Racaillou
3 ) Rondoudou
--> 2

Racaillou à l'attaque !
Votre adversaire envoie Salamèche

A vous de jouer : (15.0/15.0)
1 ) Gravillons (7/7)
2 ) Coup de boule (4/4)
3 ) Intimidation (2/2)

4 ) Changer de pokemon
--> 1

Racaillou attaque Salamèche avec Gravillons
C'est très efficace !
Salamèche  subit  8.0  points de dégâts (6.0)
Salamèche attaque Racaillou avec Boule de feu
Racaillou  subit  2.0  points de dégâts (13.0)

A vous de jouer : (13.0/15.0)
1 ) Gravillons (6/7)
2 ) Coup de boule (4/4)
3 ) Intimidation (2/2)

4 ) Changer de pokemon

// etc...

L’IA n’a pas besoin de posséder une stratégie, mais devrai être capable de jouer de manière autonome en respectant les règles du jeu. Pas besoin non plus de faire un jeu équilibré avec une quantité énorme de sorts et de pokémons, je vous conseille de créer au moins 6 pokémons pour que chaque joueur puisse en sélectionner 3.

Quelques conseils

Pour faire cela vous aurez besoin de créer un projet macOS de type Command Line Tool ce qui vous permettra de l’exécuter directement dans la console de debug d’Xcode via de simples print(). l’exécution du programme s’effectuera dans le fichier main.swift mais n’hésitez pas à créer d’autres fichiers pour vos classes, structures, énumérations, etc…

Vous aurez besoin de cette fonction qui vous permettra de tirer un nombre au hasard entre 0 et 1 :

1
2
3
func random() -> Float {
    return Float(arc4random()) / 0xFFFFFFFF
}

Et de celle-ci qui permettra de lire l’entrée écrite dans la console, cela bloquera l’exécution du code tant que la touche entrée n’aura pas été pressée.

1
let entree: String? = readLine()

Voilà, je pense que vous avez tout pour démarrer, comme la dernière fois je vous fournis une correction bien commentée mais je vous conseille de vraiment prendre le temps d’essayer, c’est un programme déjà un peu complexe donc il est normal d’y passer du temps !

Télécharger “Swiftement-Pokemon.zip”

Swiftement-Pokemon.zip – Téléchargé 22 fois – 36 Ko

Prochains cours

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.