Image de présentation d’un écran iOS qui affiche une présantation du langage Swift

Le devin (Exo)

Image de présentation d’un écran iOS qui affiche une présantation du langage Swift

Le devin (Exo)

Consigne

Aujourd’hui je suis content, cet exercice reste pour moi un bon souvenir de mes débuts dans le code. J’ai appris la programmation sur cet exo, c’était un script en Python ! Mais bon, on n’est pas là pour parler de ma nostalgie 😄

Le jeu du devin est sympa à mettre en place, et va te faire bosser tes bases en algo. Le but est simple, un joueur va devoir deviner un nombre mystère entre 1 et 20. Lorsque l’utilisateur rentre un chiffre, le programme va lui dire si c’est plus grand ou plus petit. Si c’est le bon… c’est bingo ! L’utilisateur aura gagné.

Pour fêter ça, on va faire apparaître un lancer de confettis ! Mais on ne va pas s’amuser à créer cette animation de confettis à la main, ce serait bien trop long…

Ici, on va utiliser un SPM qui s’appelle ConfettiSwiftUI, et qui permet justement d’afficher cette fameuse animation de confettis.

Maquette

 Tips

Sur cet exo, il faut prendre le temps de jouer sur la logique. Pas mal de control flow (de conditions) sont à mettre en place, si le joueur rentre une valeur inférieure, alors tu lui dis que c’est inférieur, si c’est supérieur, la même chose, etc. Prends le temps de bien réfléchir à cette mécanique qui n’est pas si compliquée, mais qui va te faire travailler ton algorithme.

Aussi, pense aux cas d’erreur. Si l’utilisateur rentre une valeur qui n’est pas attendue, par exemple 532, il faut lui afficher un message lui indiquant que la valeur n’est pas attendue, puisque par défaut on attend une valeur comprise entre 1 et 20.

Bonus

Cet exercice est parfait pour partir sur une version avec plein de bonus si tu veux te challenger. Par exemple, tu peux faire en sorte que l’utilisateur choisisse sa propre plage de valeurs. Par défaut, c’est de 0 à 20, mais tu peux lui permettre de définir une valeur minimum et une valeur maximum, et ainsi choisir un nombre entre 300 et 400 000 par exemple.

Aussi, tu peux imposer un nombre d’essais, l’utilisateur aurait droit à 10 essais maximum par exemple. Tu peux également ajouter un bouton de reset de partie quand il a trouvé le bon score, de façon à ce qu’il puisse recommencer facilement.

Et encore une idée, tu peux afficher une sheet sur laquelle on retrouvera l’archive de ses différents scores.

Tu vois, avec un peu d’imagination, on peut vraiment complexifier ce jeu et le rendre plus fun. Fais-toi plaisir !

SPM

L’important dans cet exercice reste de te tester une première fois en installant une dépendance via le Swift Package Manager. N’oublie pas ce qu’on a vu dans le cours précédent : prends le temps de consulter le dépôt GitHub de cette dépendance et surtout de bien lire la documentation. Je n’ai pas choisi cette dépendance par hasard : la doc est bien faite, et la dépendance est facile à utiliser. Prends bien le temps de la consulter.

Voici le lien de la dépendance → https://github.com/simibac/ConfettiSwiftUI

 

 

Correction

Correction

Pseudo Code

Note

As-tu déjà entendu parler de pseudo-code ? Si ce n’est pas le cas, eh bien il est temps que je t’en parle, car ça va vraiment pouvoir te servir, surtout quand tu as affaire à des algorithmes.

Déjà, on va prendre le temps de bien définir ce qu’est un algorithme. Bien que tu en aies déjà fait depuis le début de ta formation, on n’a jamais vraiment pris le temps de te présenter clairement ce que signifie ce mot. Un algorithme, c’est simplement une suite d’instructions et d’opérations qui permettent de résoudre un problème. Nous, développeurs iOS, on utilise les conditions, les boucles, les fonctions, etc., pour résoudre des problèmes algorithmiques dans nos applications.

Maintenant qu’on a bien défini ce qu’est un algo, parlons du pseudo-code. Quand on a appris les conditions, c’était relativement simple, et en trifouillant un peu dans le code, on trouvait facilement des solutions. Mais à partir de maintenant, on va avoir affaire à des problèmes de plus en plus complexes à résoudre, comme c’est le cas ici dans cet exercice du jeu du devin.

Si je rentre dans le code sans plan sur la résolution de mon algo, ça peut vite devenir compliqué de comprendre ce que je fais. Le pseudo-code entre alors en jeu pour éviter ça et y voir plus clair. En gros, le pseudo-code, c’est prendre un papier et un stylo, et régler le problème avec une description naturelle du raisonnement.

Par exemple, pour le jeu du devin, je vais écrire :

Si la valeur saisie est inférieure à la valeur minimale ou bien supérieure à la valeur maximale,

alors afficher : « Erreur : entre une valeur comprise entre [min] et [max]. »

Sinon, si la valeur saisie est strictement inférieure au nombre mystère,

alors afficher : « Trop bas ! »

Sinon, si la valeur saisie est strictement supérieure au nombre mystère,

alors afficher : « Trop haut ! »

Sinon,

afficher : « Bravo, tu as trouvé le bon numéro ! »

Ça, c’est du pseudo-code. Et si je prends le temps de bien regarder et d’analyser ce que je viens d’écrire, je peux facilement le transformer en code :


let minValue = 1
let maxValue = 20
let mysteryNumber = Int.random(in: minValue...maxValue)
let userInput: Int

if userInput < minValue || userInput > maxValue {
    print("Erreur : entre une valeur entre \(minValue) et \(maxValue) !")
} else if userInput < mysteryNumber {
    print("Trop bas !")
} else if userInput > mysteryNumber {
    print("Trop haut !")
} else {
    print("Bravo, tu as trouvé le bon numéro !")
}

En clair, le pseudo-code me permet d’écrire un plan clair de mon algo avant de coder. Ça va m’aider à y voir plus clair et à anticiper les problèmes que je pourrais rencontrer. Dès que tu rentres dans des algos, je te recommande fortement de passer par cette phase de déconstruction de ton problème.

Garde ton Asset Catalog propre

Note

Quand on débute, on a tendance à balancer les images une par une dans Assets.xcassets sans se poser de questions. Résultat ? Un catalogue illisible, avec 40 fichiers alignés en vrac.

Prends le réflexe de créer des groupes (clic droit > New Folder dans Xcode) pour organiser tes images par thématique :

📦 Icons: pour les pictos,

📦 Backgrounds : pour les visuels de fond,

📦 Avatars, Thumbnails, Placeholders, etc.

C’est un petit effort au départ, mais ça rendra ton projet scalable et beaucoup plus clair, surtout si tu travailles en équipe. Et crois-moi, chercher une image dans un asset bien rangé, ça fait gagner un temps fou.