
Mes notes sur le C, partie 6 [Les fonctions]
Les fonctions sont très pratiques pour organiser votre code.
Imaginez si vous devez faire un jeu vidéo, un joueur prend un coup, vous allez devoir calculer la force du coup, l’armure de celui qui prend le coup, prendre en compte le facteur critique etc et finir par retourner le nombre de point de vie que le joueur a perdu.
Il serait donc beaucoup plus simple d’avoir une fonction de ce genre
#include <stdio.h> int calculDmg(int attaque) { int dmg; // Prise en compte de l'armure et des resistance... dmg = puissance / 2; return dmg; } int main(int argc, char *argv[]) { int puissance = 50; int pv = 100; int pvPerdu; pvPerdu = calculDmg(puissance); pv -= pvPerdu; printf("Le joueur a perdu : %d point de vie, il lui reste %d.", pvPerdu, pv); return 0; }
De quoi est composée une fonction ?
Une fonction prend un type en début de déclaration, il s’agit du type de la variable que va renvoyer la fonction, ici je vais renvoyer un nombre de dégât donc int est très bien.
Ensuite il faut un nom de fonction.
Et un ou plusieurs arguments.
Dans ce cas j’ai besoin d’avoir la puissance de l’attaque pour pouvoir calculer les dommages.
Je passe donc la variable puissance à ma fonction, noté qu’il n’est pas obligatoire d’avoir le même nom pour l’argument envoyer à la fonction que l’argument de la fonction elle même, attaque prendra la valeur de puissance.
Pour passer plusieurs paramètres il faut respecter l’ordre.
Dans le bloc de la fonction j’applique les calculs et pour finir je retourne un nombre de dommage.
La variable pvPerdu vaut maintenant puissance / 2.
La fonction calculDmg() peut donc être appelé depuis n’importe ou dans votre programme à condition de respecter certaines choses que je vais expliquer dans le prochain article.
Avant ça voici un exemple avec plusieurs paramètres :
#include <stdio.h> float calculDmg(int force, float vitesse, int puissance) { float dmg; printf("force : %d\n", force); printf("force : %f\n", vitesse); printf("force : %d\n", puissance); dmg = force * 0.5 + vitesse + puissance * 2; return dmg; } int main(int argc, char *argv[]) { int force = 5; float vitesse = 1.8; int puissance = 8; float pv = 100; float pvPerdu; pvPerdu = calculDmg(force, vitesse, puissance); pv -= pvPerdu; printf("Le joueur a perdu : %f point de vie, il lui en reste %f.", pvPerdu, pv); return 0; }