겨울이지만 불꽃 놀이가 싶어? ? 그렇다면 구현해야합니다.

12173 단어 processing불꽃자바
겨울입니다! 추워요!

춥기 때문에 따뜻한 기분을 맛보기 위해 불꽃 놀이를보고 싶지 않습니까?

그렇다면 불꽃 놀이를 구현하자!

불꽃 놀이 만드는 법



준비



처리을 설치하십시오!

Processing은 프로그래머블 벡터 드로우 툴입니다. 내용은 Java로 되어 있고, 문법도 Java입니다.

Particle 클래스 만들기



불꽃놀이 그 불꽃? 의 부분으로, Particle 클래스를 만들어 보자. 구현하고 싶은 기능은 이쪽입니다.
  • 불꽃? 하지만 포물선을 그리며 움직이길 바란다. 같은 물리적 법칙

  • 우선 Particle 클래스를 만듭니다.
    class Particle {
    }
    

    그런 다음 물리적 법칙을 원하기 때문에 필요한 멤버로 위치, 속도 및 가속도를 정의합니다.
    class Particle {
      PVector location;
      PVector velocity;
      PVector acceleration;
    
      Particle (float xpos, float ypos, float xsp, float ysp) {
        this.location = new PVector(xpos, ypos); // 初期位置
        this.velocity = new PVector(xsp, ysp); // 初速
        this.acceleration = new PVector(0, 0.001); // 重力加速度的なやつ
      }
    }
    

    이제 다음은 물리적 법칙에 따라 움직이는 방법입니다. 내용은 간단합니다. 그 유명한 물리 법칙을 정의했을 뿐입니다.

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

    그리고 불꽃? 그리기 위한 메서드를 작성합니다.
    class Particle {
      //...
      void display () {
        pushMatrix();
        resetMatrix();
        translate(this.location.x, this.location.y);
        ellipse(0, 0, 10, 10); // 円を描画
        popMatrix();
      }
    }
    

    Firework 클래스 만들기



    불꽃? 뿌려 놓는 클래스입니다. 필요한 것은 다음 기능!
  • 불꽃? 360도로 무작위로 흩어진다
  • class Firework {
    }
    

    불꽃? 와 불꽃의 위치를 ​​멤버에게 갖게합시다.
    class Firework {
      PVector location;
      ArrayList<Particle> particles;
    
      Firework (float xpos, float ypos) {
        this.location = new PVector(xpos, ypos);
        this.particles = new ArrayList<Particle>();
      }
    }
    

    후에는 불꽃? 을 뿌리는 방법을 쓰자. 이어서 그리기까지도.
    class Firework {
      //...
    
      // 撒き散らす
      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, // 花火の位置に火花を設置
            cos(theta), sin(theta) // 360度のどれかに初速を設定
          ));
        }
      }
    
      // 火花の物理計算
      void update () {
        for (int i = 0; i < 400; i++) {
          particles.get(i).update();
        }
      }
    
      // 火花たちの描画
      void display () {
        fill(255); // 火花を白色にしてみた
        for (int i = 0; i < 400; i++) {
          particles.get(i).display();
        }
      }
    }
    

    음, 준비 완료!



    불꽃놀이 발사? 위해 다음을 위해 준비! 끝나면 실행이다!
    Firework firework;
    
    void setup () {
      size(600, 600); // 600x600のキャンパスを作る
    
      firework = new Firework(width/2, height/2); // 花火をセットアップ
    
      firework.explode(); // 火花を撒き散らす
    }
    
    void draw () {
      background(0); // 背景はBlack
      firework.update(); 花火の計算
      firework.display(); // 花火の描画
    }
    

    그래? 어쩌면? 이런 불꽃이 아니야?

    어쩔 수 없어~

    마지막으로, 조금 불꽃 놀이와 함께



    이렇게 되었습니다!



    마지막으로



    이것은 대학 1학년 때 만든 프로그램입니다. 2년 정도 전일까?
    대학에 들어가고 처음으로 프로그래밍에 접해, 프로그래밍 슈퍼 재미 잖아! 라고 생각하면서 어쨌든 코드 쓰던 시기입니다. 물론 지금도 쓰고 있습니다만.

    재료가 생각나지 않았기 때문에 이것으로 해 보았습니다.

    소스 코드는 더럽지만 여기가됩니다.
    htps : // 기주 b. 코 m / 료스케 C / 푹신한 rks

    좋은 웹페이지 즐겨찾기