[JAVA] C'est l'hiver mais tu veux des feux d'artifice? ?? Puis implémentez-le

C'est l'hiver! Il fait froid!

Puisqu'il fait froid, pourquoi ne voulez-vous pas voir des feux d'artifice pour vous sentir chaud?

Alors implémentons des feux d'artifice!

Comment faire des feux d'artifice

Préparation

Installez Processing!

Le traitement est un outil de dessin vectoriel programmable. Le contenu est fait de Java et la grammaire est également Java.

Créer une classe de particules

Cette étincelle de feu d'artifice? Dans le cadre de, créons une classe Particle. Voici la fonction que vous souhaitez implémenter.

--Étincelle? Je veux que vous dessiniez une ligne parabolique et que vous bougiez. Yoha la loi de la physique

Pour le moment, créez une classe Particle.

class Particle {
}

Ensuite, nous voulons les lois de la physique, nous définissons donc la position, la vitesse et l'accélération comme les membres requis.

class Particle {
  PVector location;
  PVector velocity;
  PVector acceleration;

  Particle (float xpos, float ypos, float xsp, float ysp) {
    this.location = new PVector(xpos, ypos); //Position initiale
    this.velocity = new PVector(xsp, ysp); //Vitesse initiale
    this.acceleration = new PVector(0, 0.001); //Guy de l'accélération par gravité
  }
}

Maintenant, voici la méthode pour se déplacer selon les lois de la physique. Le contenu est simple. Je viens de définir cette fameuse loi de la physique.

a = \frac{dv}{dt}, v = \frac{dx}{dt}
class Particle {
  //...
  void update () {
    this.velocity.add(this.acceleration);
    this.location.add(this.velocity);
  }
}

Et des étincelles? Écrivez une méthode de dessin.

class Particle {
  //...
  void display () {
    pushMatrix();
    resetMatrix();
    translate(this.location.x, this.location.y);
    ellipse(0, 0, 10, 10); //Tracez un cercle
    popMatrix();
  }
}

Créer une classe Firework

étincelle? C'est une classe à disperser. Les fonctions suivantes sont nécessaires!

--Étincelle? Dispersion aléatoire à 360 degrés

class Firework {
}

étincelle? Donnons aux membres la position du feu d'artifice.

class Firework {
  PVector location;
  ArrayList<Particle> particles;
  
  Firework (float xpos, float ypos) {
    this.location = new PVector(xpos, ypos);
    this.particles = new ArrayList<Particle>();
  }
}

Après ça, des étincelles? Écrivons une méthode pour disperser. Au fait, même le dessin.

class Firework {
  //...

  //Propagé
  void explode () {
    for (int i = 0; i < 400; i++) {
      float theta = random(0, TWO_PI);
      particles.add(new Particle(
        this.location.x, this.location.y, //Installez des étincelles à la position des feux d'artifice
        cos(theta), sin(theta) //Réglez la vitesse initiale sur l'un des 360 degrés
      ));
    }
  }
  
  //Calcul physique des étincelles
  void update () {
    for (int i = 0; i < 400; i++) {
      particles.get(i).update();
    }
  }
  
  //Dessin d'étincelles
  void display () {
    fill(255); //J'ai essayé de rendre l'étincelle blanche
    for (int i = 0; i < 400; i++) {
      particles.get(i).display();
    }
  }
}

Eh bien, prêt!

Lancer des feux d'artifice? Préparer à: Lorsque vous avez terminé, faites-le!

Firework firework;

void setup () {
  size(600, 600); //Construisez un campus 600x600

  firework = new Firework(width/2, height/2); //Mettre en place des feux d'artifice
  
  firework.explode(); //Saupoudrer d'étincelles
}

void draw () {
  background(0); //Le fond est noir
  firework.update();Calcul des feux d'artifice
  firework.display(); //Dessin de feux d'artifice
}

e? Qu'est-ce que le shoboi? N'est-ce pas un tel feu d'artifice?

Ugh, bien je vais le faire ~

Enfin, quand ça commence à ressembler à des feux d'artifice

Maintenant ça!

firework.gif

finalement

C'est un programme que j'ai créé lorsque j'étais en première année d'université. Est-ce qu'il y a environ deux ans? C'est super amusant de découvrir la programmation pour la première fois depuis mon entrée à l'université! C'était un moment où j'écrivais le code. Bien sûr, je l'écris toujours.

Je ne pouvais penser à rien, alors j'ai essayé ça.

Le code source est sale, mais le voici. https://github.com/RyosukeCla/fireworks

Recommended Posts

C'est l'hiver mais tu veux des feux d'artifice? ?? Puis implémentez-le
Pouvez-vous le faire? Java EE