Pages traduites Pages à traduire Pages en cours de traduction
A propos
 

Différences

Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.

ags32 19/11/2008 19:58 ags32 30/04/2011 11:38 version actuelle
Ligne 5: Ligne 5:
Diverses commandes dans le nouveau langage de script nécessiteront que vous utilisiez des pointeurs. Diverses commandes dans le nouveau langage de script nécessiteront que vous utilisiez des pointeurs.
Cette section a été divisée en trois parties séparées pour vous expliquer les pointeurs Cette section a été divisée en trois parties séparées pour vous expliquer les pointeurs
-en fonction de votre expérience précédente en programmation. -- selectionnez un des liens ci-dessous:\\ \\  +en fonction de votre expérience précédente en programmation. -- sélectionnez un des liens ci-dessous :\\ \\  
-[[#Pointers for programming newbies|Les Pointeurs pour les debutants ]]+[[#Les Pointeurs pour les débutants|Les Pointeurs pour les débutants]]
-[[#Pointers for people who know Java or C#|Les Pointeurs pour ceux qui connaissent Java ou C#]]+[[#Les Pointeurs pour ceux qui connaissent Java ou C#|Les Pointeurs pour ceux qui connaissent Java ou C#]]
-[[#Pointers for people who know C or C++|Les Pointeurs pour ceux qui connaissent C ou C++]]+[[#Les Pointeurs pour ceux qui connaissent C ou C++|Les Pointeurs pour ceux qui connaissent C ou C++]]
---- ----
-====Pointers for programming newbies====+====Les Pointeurs pour les débutants====
Les pointeurs peuvent être d'apparence décourageante, et dans des langages comme le C ou le Les pointeurs peuvent être d'apparence décourageante, et dans des langages comme le C ou le
C++, ils le sont ; mais AGS essaye de rendre les choses aussi simples que possible. C++, ils le sont ; mais AGS essaye de rendre les choses aussi simples que possible.
Ligne 20: Ligne 20:
Simplement, un pointeur est une variable qui // pointe // vers quelque chose d'un type particulier. Simplement, un pointeur est une variable qui // pointe // vers quelque chose d'un type particulier.
Par exemple, un pointeur // personnage (Character ) // va pointer vers un personnage. Par exemple, un pointeur // personnage (Character ) // va pointer vers un personnage.
-Quel est l'intéret de tout cela, me direz vous?+Quel est l'intéret de tout cela, me direz vous ?
Et bien, regardons en arrière AGS 2.62. Si vous vouliez référencer un hotspot particulier, Et bien, regardons en arrière AGS 2.62. Si vous vouliez référencer un hotspot particulier,
-vous deviez vous rappeler son numero. Si vous vouliez basculer un objet sur On, vous deviez aussi  +vous deviez vous rappeler son numéro. Si vous vouliez basculer un objet sur On, vous deviez aussi  
-vous rappeler son numero. Et puisque vous pouviez par erreur utiliser un numéro d'objet là où+vous rappeler son numéro. Et puisque vous pouviez par erreur utiliser un numéro d'objet là où
vous vouliez un numéro de hotspot, des erreurs pouvaient arriver facilement et ça devenait plutôt vous vouliez un numéro de hotspot, des erreurs pouvaient arriver facilement et ça devenait plutôt
embrouillé.\\ \\ embrouillé.\\ \\
Ligne 29: Ligne 29:
pour identifier les éléments et en même temps ils fournissent // une vérification de type // évitant ainsi pour identifier les éléments et en même temps ils fournissent // une vérification de type // évitant ainsi
d'utiliser un hotspot là où vous pensiez utiliser un objet.\\ \\ d'utiliser un hotspot là où vous pensiez utiliser un objet.\\ \\
-Regardons un exemple. Si vous vouliez écrire une chaine de caractères dans un fichier en 2.62, vous feriez ceci : +Regardons un exemple. Si vous vouliez écrire une chaîne de caractères dans un fichier en 2.62, vous feriez ceci :
   
  int handle = FileOpen("temp.txt", FILE_WRITE);   int handle = FileOpen("temp.txt", FILE_WRITE);
-  FileWrite(handle, "Test!");+  FileWrite(handle, "Test !");
  FileClose(handle);   FileClose(handle);
-Plutot simple ; mais si vous vouliez ouvrir le fichier à un endroit et l'écrire à un autre? +Plutot simple ; mais si vous vouliez ouvrir le fichier à un endroit et l'écrire à un autre ? 
-Vous deviez faire un // handle // une variable globale, puis vous rappeler que ce nombre +Vous deviez avoir recours à une variable globale, puis vous rappeler que ce nombre
est un identifiant de fichier et non un identifiant de hotspot ou autre. est un identifiant de fichier et non un identifiant de hotspot ou autre.
Maintenant , en 2.7 ce code devient : Maintenant , en 2.7 ce code devient :
   
-  File *file = File.Open("temp.txt", eFileWrite); +  File *fichier = File.Open("temp.txt", eFileWrite); 
-  file.WriteString("Test!"); +  fichier.WriteString("Test !"); 
-  file.Close();+  fichier.Close();
-Simple, n'est ce pas? La seule partie "confuse" est de s'habituer à +Simple, n'est-ce pas ? La seule partie "confuse" est de s'habituer à
déclarer la variable en File* au lieu de int ; mais vous vous y ferez rapidement déclarer la variable en File* au lieu de int ; mais vous vous y ferez rapidement
et tous les exemples dans la documentation vous pointeront dans la bonne direction.\\ \\ et tous les exemples dans la documentation vous pointeront dans la bonne direction.\\ \\
Regardons un autre exemple. Supposons que vous vouliez une variable contenant le hotspot Regardons un autre exemple. Supposons que vous vouliez une variable contenant le hotspot
-que la souris survole. En 2.62, vous pourriez avoir un code comme ceci :this:+que la souris survole. En 2.62, vous pourriez avoir un code comme ceci :
   
-  // top of global script +  // haut du global script 
-  int mouseOverHotspot;+  int sourisSurvoleHotspot;
   
  // repeatedly_execute   // repeatedly_execute
-  mouseOverHotspot = GetHotspotAt(mouse.x, mouse.y);+  sourisSurvoleHotspot = GetHotspotAt(mouse.x, mouse.y);
-Comment faire en 2.7? simplement :+Comment faire en 2.7 ? Simplement :
   
-  // top of global script +  // haut du global script 
-  Hotspot *mouseOverHotspot;+  Hotspot *sourisSurvoleHotspot;
   
  // repeatedly_execute   // repeatedly_execute
-  mouseOverHotspot = Hotspot.GetAtScreenXY(mouse.x, mouse.y);+  sourisSurvoleHotspot = Hotspot.GetAtScreenXY(mouse.x, mouse.y);
Mais attendez, et si vous vouliez savoir si la souris survole votre hotspot porte (disons Mais attendez, et si vous vouliez savoir si la souris survole votre hotspot porte (disons
-le hotspot 2 ). En 2.62 vous feriez  :+le hotspot 2). En 2.62 vous feriez  :
   
  if (mouseOverHotspot == 2) {   if (mouseOverHotspot == 2) {
-    Display("Mouse over the door");+    Display("La souris est sur la porte");
  }   }
Mais ça devient vite confus, parce que si vous changez le numéro d'hotspot de la porte, Mais ça devient vite confus, parce que si vous changez le numéro d'hotspot de la porte,
-que ce passe t'il? Vous devriez alors vous rappeler de changer tous les 2 en 3 dans votre code. +que se passe-t-il ? Vous devriez alors vous rappeler de changer tous les 2 en 3 dans votre code. 
-En 2.7 , vous feriez seulement ceci (en supposant que votre Hotspot a un script du nom de hDoor) :+En 2.7, vous feriez seulement ceci (en supposant que votre Hotspot a un script du nom de hPorte) :
   
-  if (mouseOverHotspot == hDoor) { +  if (mouseOverHotspot == hPorte) { 
-    Display("Mouse over the door");+    Display("La souris est sur la porte");
  }   }
-Si vous êtes un fan des nombres pour d'étranges raisons, vous pouvez toujour faire ceci :+Si vous êtes un fan des nombres pour d'étranges raisons, vous pouvez toujours faire ceci :
   
  if (mouseOverHotspot == hotspot[2]) {   if (mouseOverHotspot == hotspot[2]) {
-    Display("Mouse over the door");+    Display("La souris est sur la porte");
  }   }
Donc, ceci conclut notre introduction aux pointeurs. J'espère que vous avez compris ce qu'ils sont Donc, ceci conclut notre introduction aux pointeurs. J'espère que vous avez compris ce qu'ils sont
-et à quoi ils servent. Si vous avez des questions, n'hésitez pas à poser des questions sur notre +et à quoi ils servent. Si vous avez des questions, n'hésitez pas à les poser sur notre
forum technique.\\ forum technique.\\
Ligne 93: Ligne 92:
---- ----
-====Pointers for people who know Java or C#==== +====Les Pointeurs pour ceux qui connaissent Java ou C#==== 
-Les pointeur AGS fonctinnent comme les variables objet en Java et c#. La différence+Les pointeurs AGS fonctionnent comme les variables objet en Java et C#. La différence
principale est que les pointeurs AGS sont déclarés comme en C avec une astérisque (*) principale est que les pointeurs AGS sont déclarés comme en C avec une astérisque (*)
pour représenter le pointeur. Donc : pour représenter le pointeur. Donc :
Ligne 105: Ligne 104:
  Hotspot hs ;   Hotspot hs ;
-Dans AGS, les pointeurs sont utiliés pour pointer vers différents types prédéfinis comme  +Dans AGS, les pointeurs sont utilisés pour pointer vers différents types prédéfinis comme  
-les Hotspots, les éléments d'inventaire, les personnages , ainsi de suite. +les Hotspots, les éléments d'inventaire, les personnages, ainsi de suite. 
-Comme AGS n'a pas de mot clé // new // il n'est pas possible de créer des pointeurs vers +Comme AGS n'a pas de mot-clé // new // il n'est pas possible de créer des pointeurs vers
des types de structures personnalisées. \\ \\ des types de structures personnalisées. \\ \\
Vous utilisez les pointeurs comme en Java ou en C#. Diverses méthodes statiques d'AGS retournent Vous utilisez les pointeurs comme en Java ou en C#. Diverses méthodes statiques d'AGS retournent
Ligne 115: Ligne 114:
Les exemples suivants sont tous valides : Les exemples suivants sont tous valides :
   
-  File *theFile = File.Open("test.dat", eFileWrite); +  File *leFichier = File.Open("test.dat", eFileWrite); 
-  if (theFile == null) Display("It's null!"); +  if (leFichier == null) Display("C'est null !"); 
-  File *file2 = theFile+  File *fichier2 = leFichier
-  if (theFile == file2) Display("They're the same file!"); +  if (leFichier == fichier2) Display("Ce sont les mêmes fichiers !"); 
-  theFile = null; +  leFichier = null; 
-  file2.WriteInt(10); +  fichier2.WriteInt(10); 
-  file2.Close();+  fichier2.Close();
Si vous essayez d'appeler une méthode sur un pointeur null, une erreur va se produire (comme en Si vous essayez d'appeler une méthode sur un pointeur null, une erreur va se produire (comme en
Java ou en C#, vous auriez une exception).\\ \\ Java ou en C#, vous auriez une exception).\\ \\
-La gestion de mémoire des pointeurs dans AGS est automatique-- la mémoire est libérée  +La gestion de mémoire des pointeurs dans AGS est automatique -- la mémoire est libérée  
-quand il n'y a plus de variables pointant vers l'instance. Cepandant, si vous avez+quand il n'y a plus de variables pointant vers l'instance. Cependant, si vous avez
une variable pointeur globale, il est conseillé d'initialiser ce pointeur à // null // quand une variable pointeur globale, il est conseillé d'initialiser ce pointeur à // null // quand
vous n'en avez plus besoin pour libérer la mémoire.\\ vous n'en avez plus besoin pour libérer la mémoire.\\
Ligne 132: Ligne 131:
---- ----
-====Pointers for people who know C or C++====+====Les Pointeurs pour ceux qui connaissent C ou C++====
Les pointeurs dans AGS sont basés sur la syntaxe C/C++, ils sont donc déclarés avec une astérisque ( * ). Les pointeurs dans AGS sont basés sur la syntaxe C/C++, ils sont donc déclarés avec une astérisque ( * ).
-Cependant, dans AGS, les pointeurs sont utiliés pour pointer vers différents types prédéfinis,+Cependant, dans AGS, les pointeurs sont utilisés pour pointer vers différents types prédéfinis,
mais il n'est pas possible de créer des pointeurs vers des types de structures personnalisées. \\ \\ mais il n'est pas possible de créer des pointeurs vers des types de structures personnalisées. \\ \\
Les membres des pointeurs sont accessibles avec l'opérateur point ( . ) et non avec %%->%% , l'opérateur C. Les membres des pointeurs sont accessibles avec l'opérateur point ( . ) et non avec %%->%% , l'opérateur C.
Ligne 140: Ligne 139:
séparateur spécifique.\\ \\ séparateur spécifique.\\ \\
Dans AGS, la gestion de mémoire des pointeurs est faite automatiquement sur la base d'un comptage Dans AGS, la gestion de mémoire des pointeurs est faite automatiquement sur la base d'un comptage
-par reférence (sur le même pricipe que COM), il n'y a donc pas de mot clé // new // +par référence (sur le même principe que COM), il n'y a donc pas de mot-clé // new //
ou // delete //. ou // delete //.
Quand un objet n'est plus référencé par aucune variable de pointeur, il est libéré. Quand un objet n'est plus référencé par aucune variable de pointeur, il est libéré.
Ligne 148: Ligne 147:
Les pointeurs AGS sont fortement typés et vous ne pouvez pas les passer d'un type à l'autre Les pointeurs AGS sont fortement typés et vous ne pouvez pas les passer d'un type à l'autre
comme vous le feriez en C ou C++. comme vous le feriez en C ou C++.
-AGS vous autorisera uniquement à comparer ou à assigner des pointeurs du meme type ou +AGS vous autorisera uniquement à comparer ou à assigner des pointeurs du même type ou 
-du meme type de base. Il existe un mot clé spécial // null // auquel tous les pointeurs +du même type de base. Il existe un mot clé spécial // null // auquel tous les pointeurs 
-peuvent etre assignés ou comparés, vous indiquequant qu'ils sont désasigné\\ \\ +peuvent être assignés ou comparés, vous indiquant qu'ils ne sont plus assignés.\\ \\
Parce qu'il n'y a pas de mot clé // new //, vous ne pouvez pas créer d'instances d'objets, par contre Parce qu'il n'y a pas de mot clé // new //, vous ne pouvez pas créer d'instances d'objets, par contre
Ligne 157: Ligne 156:
comprendre comment les utiliser. comprendre comment les utiliser.
-{{tag>français révision}}+{{tag>français}}
 
ags32.1227121103.txt.gz · Dernière modification: 19/11/2008 19:58 par 77.201.162.46
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki