Programmer sur Script (partie 3)

Voir le sujet précédent Voir le sujet suivant Aller en bas

Tutoriel Programmer sur Script (partie 3)

Message par Morgan9195 le Dim 12 Mai - 3:01

Programmer sur Script (partie 3)
Les variables



Je dois vous apprendre les variables le plus tôt possible, ça vous permettra de comprendre énormément de choses par la suite. N'oubliez pas de prendre en note les choses importantes à retenir.

Les variables sont surement l'une des choses les plus importantes de la programmation. C'est absolument incontournable et impossible de créer un jeu ou un logiciel sans variables.
Si vous avez déjà étudié les variables en cours de maths, vous avez de la chance car c'est à peu près la même chose.

Pour faire simple, une variable est une lettre ou un mot dans lequel on peut stocker quelque chose.
Une variable peut être utilisée pour sauvegarder des points de vie, ou des points d'expérience, ou de mana, ou encore le nom de votre personnage, ou la texture du sol, ou encore des musiques, des fichiers et pleins d'autres...
Attention, les variables ne sont pas sauvegardés sur le long terme. C'est juste pour se souvenir temporairement de certaines informations. Elles ne sont pas sauvegardés sur le disque dur de votre ordinateur, mais dans la mémoire vive, elles seront toutes effacés lorsque vous fermerez votre jeu ou logiciel.

Pour créer une variable, c'est simple:
variable=17;
ou encore:
ceci_est_une_variable="Ahah ! Je suis un vilain texte !";

Comme vous pouvez le voir, on peut nommer une variable comme on le souhaite. Il y a cependant quelques règles: Le nom d'une variable doit être faite avec des caractères de A à Z (majuscule ou minuscule) et des chiffres de 0 à 9. Il ne faut donc pas mettre d'accents, de caractères spéciaux ou autre dans le nom d'une variable. Vous avez cependant le droit d'y mettre ce caractère: _

Une variable peut sauvegarder n'importe quoi:
- un nombre (entier, décimal, négatif, binaire, etc...)
- une lettre (un caractère)
- un texte (aussi appelé "chaine de caractères")
- une texture (on importera les textures en les enregistrant temporairement dans des variables)
- un son (idem)
- une sauvegarde
- une forme 3D
etc...

Attention, il faut toujours initialiser une variable avant de l'utiliser (vous pouvez pas afficher la barre de vie si le personnage n'a pas de variable "vie").
Pour initialiser une variable, c'est simple. Il suffit de créer la variable dès que le programme démarre.
Exemple:
Code:

points_de_vie=100;
La variable "point_de_vie" contient le nombre 100, on pourra modifier le contenu de cette variable au cours de l'exécution du programme.
Et ce code se place dans quel fichier? Réfléchissez et ouvrez cette réponse que lorsque vous pensez détenir la réponse:
Reponse:
start.script

Mais ce n'est pas tout! Vous pouvez aussi manipuler ces variables avec des calculs par exemple.
En voici un facile à comprendre:
Code:

variable1=100;
variable2=50;
variable3=variable1+variable2;
show_message(variable3);
Ce code affiche un message qui contient la réponse au calcul 100+50
Notez que j'ai mis un point-virgule après chaque fonction car ce sont que des instructions, je ne vous ai pas encore montré de condition mais on peut aussi utiliser les variables dans les conditions.
Vous remarquez une différence par rapport au tout premier show_message("Hello World !"); que je vous ai montré? Non? Rien ne vous saute aux yeux? Comparez bien ces deux fonctions:
- show_message("Hello World !");
- show_message(variable3);

Non? Vous ne voyez toujours pas? Regardez donc ces deux autres exemple:
- ceci_est_une_variable="Ahah ! Je suis un vilain texte !";
- variable=17;

Alors? La deuxième n'a pas de guillemets! Sinon elle afficherait le texte "variable3" au lieu d'écrire le nombre contenu dans cette variable.

Important: Les textes sont toujours entre guillemets contrairement aux nombres et aux variables.

Remarque: Si on écrit variable="17"; avec des guillemets, l'ordinateur croira que "17" est un mot, il pourra l'afficher comme un message, mais ne pourra pas faire de calculs avec. (erreur à ne pas faire)

Bon, je vais vous montrer les conditions car je pense que ça fait un moment que vous avez la curiosité de découvrir ce que c'est.
Et bien c'est très simple, vous connaissez le mot "Si" dans la langue Française? (j'espère)
C'est aussi simple que ça. Traduisez "Si" en anglais, ce qui donne "if", et voici une condition:
Code:

vie=100;
vie=vie-40;
vie=vie-60;
if vie=0
 show_message("Vous etes mort");
game_end();
Bon, alors là concentrez-vous bien car j'ai un tas de choses à vous dire au sujet de ce code.
Le jeu commence, la vie est initialisée à 100.
vie=vie-40; , ce qui signifie qu'on soustrait 40 à la variable vie (s'écrit aussi vie-=40; )
vie=vie-60;  ensuite on soustrait 60 à cette même variable
if vie=0 signifie "Si la variable vie est égale à 0, alors..."
la suite du "alors" est l'instruction qui suit la condition.

Remarque: j'ai ajouté un espace juste avant l'instruction qui dépend de la condition. C'est pour bien visualiser quelle instruction dépend de quelle condition. Je vous conseille très grandement de faire pareil, bien que ça soit facultatif. La grande majorité des programmeurs mettent des tabulations au lieu de mon espace, pour que ça soit encore plus visible.

Information: La fonction game_end(); etteind le programme lorsqu'il la lis. Il existe aussi la fonction game_restart(); qui redémarre le programme.

Effectuons quelques améliorations (lignes 2 et 3):
Code:

vie=100;
vie-=40;
vie-=60;
if vie=0
 show_message("Vous etes mort");
game_end();
Voila, j'espère que vous suivez, j'ai expliqué ça quelques lignes plus tôt.

Vous me direz: Mais attend! Le jeu s'arrête même si on a encore de la vie? Comment remédier à ça?
C'est simple, si vous souhaitez mettre un ensemble d'instructions dans une même condition, il suffit de les regrouper dans des accolades.

Code:

vie=100;
vie-=40;
vie-=60;
if vie=0
{
 show_message("Vous etes mort");
 game_end();
}

Remarquez que j'ai ajouté un espace avant le game_end(); car il fait partie des instructions qui dépendent de la condition if vie=0
Remarquez aussi qu'il n'y a pas de point-virgule après la condition. C'est normal, c'est strictement interdit après une condition.

Maintenant imaginez qu'on place ce code dans le fichier script0.script, il s'exécutera en boucle.
Voici ce qui se passera pour Script (je modifie le 60 en 30, vous verrez pourquoi):

Code:

vie=100;
vie-=40;
vie-=30;
if vie=0
{
 show_message("Vous etes mort");
 game_end();
}
vie=100;
vie-=40;
vie-=30;
if vie=0
{
 show_message("Vous etes mort");
 game_end();
}
vie=100;
vie-=40;
vie-=30;
if vie=0
{
 show_message("Vous etes mort");
 game_end();
}
etc...

J'ai fais exprès de copier coller plusieurs fois le même code, c'est pour schématiser l'exécution en boucle de Script.
Cette lecture en boucle peut parfois se répéter des centaines de fois d'affilé, au lieu de copier votre code pleins de fois, utilisez cette autre condition:
Code:

while vie!=0
"while" signifie "tant que"
"!" signifie qu'il fait l'inverse de la condition. Donc, ça donne: "Tant que la variable vie n'est PAS égale à 0"

Revenons au code sans la condition while:
Que ce passe t'il juste après une exécution? Le même code se relit encore et encore? Mais ce n'est pas sans conséquences puisque remarquez que la vie remonte sans arrêt à 100 à cause de la ligne vie=100;
Pourtant le joueur perd sans arrêt de la vie, mais il est soigné. La ligne vie=100; était censé initialiser la variable, pas soigner constamment le joueur. il faut donc la retirer de ce fichier et la placer dans le fichier start.script
Voila, vous commencez à comprendre l'intérêt d'avoir plusieurs fichiers .script?
Le joueur mourra donc après l'exécution du même code plusieurs fois.

Remarque: les modifications du fichier start.script nécessitent de redémarrer Script pour y appliquer les modifications. Or, les fichiers .script ont juste à être sauvegardés (CTRL+S) pour que la modification soit faite. Chaque sauvegarde de votre fichier actualisera l'affichage du jeu, à l'exception du fichier start.script qui nécessite une réouverture du programme.

Petit supplément:
Code:

vie-=40;
vie-=30;
if vie<=0
{
 show_message("Vous etes mort");
 game_end();
}
else
 show_message("Vous avez survecu pendant 1 exécution");

if vie<=0 = Si la vie est inférieure ou égale à zéro, vous auriez aussi pu écrire if vie!=0 (si la vie n'est pas égale à 0)

Remarque: if vie!=0 s'écrit aussi if !vie=0

else = sinon

Je vous met au défis d'ajouter une variable qui compte le nombre de tours que le joueur à survecu.

Aide pour incorporer une variable ET un texte dans un même message:
show_message("Vous avez survecu pendant "+string(variable)+" execution");

string = convertis le contenu des parenthèses qui le suivent en texte. Ici on converti le nombre de la variable en texte pour qu'il soit compatible avec le message.

Bon, J'ai conscience que tout ceci vous a surement fatigué les neurones, on fait une petite pause, on se retrouve dans la prochaine partie. A Bientôt !
avatar
Morgan9195
Fondateur
Fondateur

Messages : 168
Date d'inscription : 11/02/2013
Age : 22
Localisation : Entre le fauteuil et le clavier

Projet(s)
Niveau de connaissances dans Script: Professionnel
Spécialité: Programmeur

Voir le profil de l'utilisateur http://morgan9195.olympe.in/devblog/

Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum