Développement XNA pour la XBox et le PC
210
Dernière méthode de cette classe, ResetPosition () se chargera de placer le vaisseau du
joueur au centre de la largeur de l’écran et en retrait de 10 % de sa hauteur. Cette
méthode sera appelée en début de partie (après le chargement de la texture du vaisseau),
ainsi qu’à chaque fois que le joueur aura perdu.
public void ResetPosition()
{
Position = new Vector2(ChapitreDix.SCREEN_WIDTH / 2 - (Texture.Width / 2), 9 *
➥(ChapitreDix.SCREEN_HEIGHT / 10) - Texture.Height);
}
Créer les astéroïdes
À présent, vous allez vous occuper des astéroïdes. Tout d’abord, créez une texture ou
récupérez-la sur Internet, par exemple sur http://www.cgtextures.com/. Comme vous le
voyez à la figure 10-2, nous utilisons un simple disque marron.
Créez une classe Asteroid et ajoutez-lui un attribut speed de type Vector2 : il pourra y
avoir plusieurs astéroïdes à l’écran, la position et la vitesse de chacun d’entre eux sera
aléatoire. Vous fixez ces deux éléments dans une méthode privée Initialize (). Pour la
génération de nombres aléatoires, vous utiliserez un objet statique de la classe Random et
vous passerez à son constructeur le nombre de millisecondes à cet instant.
static Random random = new Random(DateTime.Now.Millisecond);
La méthode Next() de l’objet random attend comme paramètres une borne inférieure et une
borne supérieure, puis retourne un entier. Initialement, le sprite devra se situer légèrement
au-dessus de la fenêtre et n’importe où sur l’axe des abcisses. Pour la vitesse, en ce qui
concerne l’axe X, l’astéroïde doit pouvoir aller vers la gauche comme vers la droite ; en
ce qui concerne l’axe Y, il doit uniquement pouvoir aller vers le bas.
private void Initialize()
{
Position = new Vector2(random.Next(0, ChapitreDix.SCREEN_WIDTH - Texture.Width),
➥-Texture.Height);
speed = new Vector2((float)random.Next(-7, 7) / 10, (float)random.Next(1, 7)
➥/ 10);
}
Figure 10-2
Des sphères parfaites se cachent peut-être dans l’espace…
Avancé. Les nombres aléatoires
Il faut savoir qu’en informatique, les nombres aléatoires ne le sont pas réellement. En fait, il est impossible de
générer une suite de nombres réellement aléatoires, il faudrait plutôt les appeler nombres pseudo-aléatoires.
La détermination de ces nombres se fait via l’utilisation d’une graine, c’est-à-dire d’une valeur de départ.
Si la valeur de cette graine est toujours la même, les nombres générés par le programme seront toujours
les mêmes. Pour éviter ce problème, vous pouvez faire varier la valeur de la graine en fonction du temps.
=Labat FM.book Page 210 Vendredi, 19. juin 2009 4:01 16
210
Dernière méthode de cette classe, ResetPosition () se chargera de placer le vaisseau du
joueur au centre de la largeur de l’écran et en retrait de 10 % de sa hauteur. Cette
méthode sera appelée en début de partie (après le chargement de la texture du vaisseau),
ainsi qu’à chaque fois que le joueur aura perdu.
public void ResetPosition()
{
Position = new Vector2(ChapitreDix.SCREEN_WIDTH / 2 - (Texture.Width / 2), 9 *
➥(ChapitreDix.SCREEN_HEIGHT / 10) - Texture.Height);
}
Créer les astéroïdes
À présent, vous allez vous occuper des astéroïdes. Tout d’abord, créez une texture ou
récupérez-la sur Internet, par exemple sur http://www.cgtextures.com/. Comme vous le
voyez à la figure 10-2, nous utilisons un simple disque marron.
Créez une classe Asteroid et ajoutez-lui un attribut speed de type Vector2 : il pourra y
avoir plusieurs astéroïdes à l’écran, la position et la vitesse de chacun d’entre eux sera
aléatoire. Vous fixez ces deux éléments dans une méthode privée Initialize (). Pour la
génération de nombres aléatoires, vous utiliserez un objet statique de la classe Random et
vous passerez à son constructeur le nombre de millisecondes à cet instant.
static Random random = new Random(DateTime.Now.Millisecond);
La méthode Next() de l’objet random attend comme paramètres une borne inférieure et une
borne supérieure, puis retourne un entier. Initialement, le sprite devra se situer légèrement
au-dessus de la fenêtre et n’importe où sur l’axe des abcisses. Pour la vitesse, en ce qui
concerne l’axe X, l’astéroïde doit pouvoir aller vers la gauche comme vers la droite ; en
ce qui concerne l’axe Y, il doit uniquement pouvoir aller vers le bas.
private void Initialize()
{
Position = new Vector2(random.Next(0, ChapitreDix.SCREEN_WIDTH - Texture.Width),
➥-Texture.Height);
speed = new Vector2((float)random.Next(-7, 7) / 10, (float)random.Next(1, 7)
➥/ 10);
}
Figure 10-2
Des sphères parfaites se cachent peut-être dans l’espace…
Avancé. Les nombres aléatoires
Il faut savoir qu’en informatique, les nombres aléatoires ne le sont pas réellement. En fait, il est impossible de
générer une suite de nombres réellement aléatoires, il faudrait plutôt les appeler nombres pseudo-aléatoires.
La détermination de ces nombres se fait via l’utilisation d’une graine, c’est-à-dire d’une valeur de départ.
Si la valeur de cette graine est toujours la même, les nombres générés par le programme seront toujours
les mêmes. Pour éviter ce problème, vous pouvez faire varier la valeur de la graine en fonction du temps.
=Labat FM.book Page 210 Vendredi, 19. juin 2009 4:01 16
