Ver Mensaje Individual
  #25 (permalink)  
Antiguo 06/05/2005, 18:44
Avatar de Boxmaster
Boxmaster
 
Fecha de Ingreso: agosto-2004
Ubicación: Ahorita... frente a mi PC
Mensajes: 74
Antigüedad: 20 años, 9 meses
Puntos: 0
Exclamación Tutorial del PACMAN en VB.NET (3a Parte y ultima)

Classes internes
Si vous avez lu l’article du mois dernier sur les classes internes du JDK 1.1 de Java par Philippe Prados, sachez que maintenant, avec VB.NET, vous pouvez définir une classe au sein d’une autre classe. Si vous la définissez comme Private, elle ne sera visible que par les membres de la classe. C’est ce que vous allez faire avec la classe Delta qui représente la position du sprite dans une case :

Public Class cSprite

Private Delta

End Class
End Class

C’est une solution avantageuse par rapport à la définition de structure privée puisqu’elle apporte toute la puissance de la programmation orientée objet.

Rendons nos fantômes intelligents


Comme je vous l’ai dis plus haut, au moment où l’on dessine un fantôme (Change), vous calculez sa trajectoire. Ce calcul peut-être très long et il peut être intéressant de l’effectuer dans un autre thread. Bon, je l’avoue, l’implémentation du multithread dans ce programme n’est là juste qu’à titre pédagogique et pourrait être évitée. Faire cela avec VB6 était un véritable casse-tête qui, il faut l’avouer, ne marchait pas (si un lecteur à un exemple qui fonctionne, je suis preneur mais très sceptique). Sous VB.NET, deux lignes suffisent :

Dim t As New Thread(AddressOf Me.CalculTrajectoire)
t.Start()

Plus simple, je ne pense pas que ce soit possible. Dans le NameSpace System.Threading, vous créez un objet Thread en indiquant l’adresse de la procédure à exécuter (ici, CalculTrajectoire). Puis, pour démarrer le nouveau thread, vous utilisez sa méthode Start. Il existe d’autres méthodes qui vous permettent par exemple d’interrompre ou de mettre en veille l’exécution d’un thread de différentes façons(Abort, Interrupt, Stop, Sleep).

Une fois votre Thread créé, vous allez devoir calculer la trajectoire de vos fantômes. La solution retenue est l’implémentation de l’algorithme A* que nous vous avons présentée dans un précédent article. D’accord, c’est un peu comme utiliser un Boeing 747 pour transporter une lettre mais ce qui est intéressant dans ce cas précis, c’est que le code existait déjà sous VB6.

On en arrive au cas délicat de la migration de projets.

VB.NET est livré (pour la Beta 1) avec un wizard qui effectue la migration de vos projets VB6. Quand on pose la question à Microsoft sur l’efficacité de ce Wizard, la réponse est étonnante :

« si ca marche, tant mieux »

Je pense que la question n’est pas la bonne, je dirais plutôt, pourquoi migrer ? Votre projet fonctionne parfaitement sous VB6, pourquoi allez-vous passer 6 mois de déboggage pour simplement utiliser VB.NET ? De plus, vous n’allez certainement pas profiter des avantages de MS.NET. Je reprends l’exemple du mois dernier sur les collections. Votre projet utilise un objet collection de VB6. Si vous migrez celui-ci sous VB.NET, il utilisera un objet collection de compatibilité avec VB6 qui est largement moins performant que les nouveaux objets collections de MS.NET.

Dans le cas de l’implémentation de l’algorithme A*, la migration du code s’est effectuée sans aucun problèmes mais en analysant le code, il a fallu réécrire une bonne partie de celui-ci pour pouvoir profiter de tous les avantages de VB.NET. Par exemple, l’algorithme A* utilise une collection type Fist In, First Out. Celle-ci n’existait pas sous VB6, il fallait donc créer « à la main » une classe qui implémentait cette fonctionnalité. Sous VB.NET, elle existe en natif et est beaucoup plus rapide. De même, au niveau des tests conditionnels du type :

If a=True And b=True Then

End If

ceux-ci étaient décomposés pour des raisons d’optimisation comme suit puisque VB6 évaluait les deux conditions :

If a=True Then
If b=True Then

End If
End If

alors que ce n’est pas nécessaire avec VB.NET. En effet il n’évalue la seconde condition que si la première est vérifiée. Cela permet une meilleure lisibilité du code. Ce ne sont que deux exemples, mais ils sont symptomatiques des problèmes que vous risquez de rencontrer dans le cas d’une migration.

Pour conclure
MS.NET et Visual Basic.NET vous permettent de créer de véritables applications orientées objets. C’est le grand saut pour les développeurs Visual Basic, cela nécessitera certainement un temps d’apprentissage important, mais, franchement, cela en vaut la chandelle. Juste un conseil : n’essayez pas de porter vos développements VB6 sous VB.Net, vous seriez déçus. Il y a une telle différence que c’est comme si vous attendiez une mise en page sophistiquée de vos textes écrits sous NotePad dans Word 2000. VB.NET est un nouveau produit, avec une nouvelle approche mais qui vous permettra de développer très rapidement des applications sophistiquées, robustes et évolutives.

****
Soluciones, no discusiones.
****