2011-02-17 7 views
1

J'ai une application où j'ai besoin de dessiner un nombre aléatoire de points à des endroits aléatoires dans l'activité. Ensuite, je dois déplacer ces points dans toutes les directions, comme les stéroïdes. Comment puis je faire ça? S'il vous plaît voir l'image ci-dessous.Dessiner des cercles à des points aléatoires

enter image description here

Répondre

2

regard Hav à http://www.droidnova.com/playing-with-graphics-in-android-part-iii,176.html

Dans la méthode onDraw créer un objet aléatoire, il ensemencement avec la largeur et la hauteur de l'écran et dessiner des points sur ces points autant de fois que vous voulez

et contrôleront onTouchevent() la méthode en lien changer la position de ces points

+0

Merci de faire référence à mon blog :) – WarrenFaith

+0

ouais oublié de mentionner la courtoisie à M. Warren Faith votre blog m'a vraiment aidé beaucoup et merci beaucoup de mon côté aussi – ingsaurabh

4

Eh bien, si je vous ai bien compris, vous souhaitez faire des « astéroïdes » pour votre application. Ceci n'est pas spécifique à Android, mais vous avez probablement besoin de définir un astéroïde en tant qu'entité dans votre application et lorsque vous avez besoin des astéroïdes, vous créez simplement un nombre aléatoire d'entre eux avec des positions aléatoires (vous pouvez vérifier s'il y a est déjà un astéroïde ou un autre objet dans cette position pour éviter les collisions). À part cela, il suffit de donner une vélocité à chaque astéroïde (dans un plan 2D, une vitesse X et Y) et de le mettre à jour en conséquence au fur et à mesure que l'application progresse.

Ceci est un exemple simple, mais voilà:

//To make things easier, let's assume you have an Entity class, from which every game object is inherited 
public abstract class Entity { 

    // Fields used to know object position 
    private float x; 
    private float y; 

    // Fields used to calculate object motion 
    private float x_speed; 
    private float y_speed; 

    ... 

    // You would probably have a generic method to draw every entity - details are not relevant to your question, but you should draw the object taking it's x and y coordinates into account here 
    public void draw() { ... } 

    // Generic function to update the object's position regarding its speed 
    public void updatePosition() { 
     this.x += this.x_speed; 
     this.y += this.y_speed; 
    } 

    ... 

} 

//Let's say you have an Asteroid class, which represents each asteroid 

public class Asteroid extends Entity { 

    // Just add a constructor to set it's initial position and speed 
    public Asteroid(float initial_x, float initial_y, float ini_x_speed, float ini_y_speed) { 
     this.x = initial_x; 
     this.y = initial_y; 
     this.x_speed = ini_x_speed; 
     this.y_speed = ini_y_speed; 
    } 
} 

A partir de là, vous suffit de créer un nombre aléatoire d'objets Asteroid, avec des positions aléatoires et sur la boucle principale de votre application appeler le updatePosition et dessiner des méthodes pour chaque entité.

EDIT: Oh, et n'oubliez pas de "effacer" ce que vous avez dessiné à chaque cycle de boucle, ainsi vous ne verrez pas les objets déjà dessinés dans leurs anciennes positions. :)

Questions connexes