If you're seeing this message, it means we're having trouble loading external resources on our website.

თუ ვებფილტრს იყენებთ, დარწმუნდით, რომ *.kastatic.org და *.kasandbox.org დომენები არ არის დაბლოკილი.

ძირითადი მასალა

კურსი: კომპიუტერული პროგრამირება > თემა 5

გაკვეთილი 8: ნაწილაკთა სისტემები

ნაწილაკთა სისტემების სისტემები

მოდით, მიმოვიხილოთ, სად ვართ. ვიცით, როგორ ვილაპარაკოთ ცალკეული Particle ობიექტის შესახებ. აგრეთვე ვიცით, როგორ ვილაპარაკოთ Particle ობიექტების სისტემაზე და მას „ნაწილაკების სისტემას" ვუწოდებთ. ჩვენ განვსაზღვრეთ ნაწილაკების სისტემა დამოუკიდებელი ობიექტების კოლექციად. მაგრამ თვითონ ნაწილაკების სისტემა განა ობიექტი არ არის? თუ ასეა (და ასეა), მაშინ შეგვიძლია, გვქონდეს ნაწილაკების ბევრი სისტემის კოლექცია, ანუ, სისტემების სისტემა.
ამგვარმა ფიქრმა შეიძლება, ჩვენ კიდევ უფრო შორს წაგვიყვანოს და თქვენ შეიძლება, ოთახში ჩაიკეტოთ დღეებით და ქმნიდეთ დიაგრამებს სისტემების სისტემების სისტემების სისტემების სისტემების სისტემებზე. სამყაროში ასე ხდება. ორგანო არის უჯრედების სისტემა, ადამიანის ორგანიზმი არის ორგანოების სისტემა, სამეზობლო არის ადამიანთა სხეულების სისტემა, ქალაქი არის სამეზობლოების სისტემა და ა.შ. მართალია, ეს საინტერესო გზაა, მაგრამ ის ახლა ჩვენს საჭიროებებს მიღმაა. მიუხედავად ამისა, საკმაოდ გამოსადეგია ისეთი პროგრამის წერის ცოდნა, რომელიც თვალ-ყურს ადევნებს ნაწილაკების ბევრ სისტემას, რომელთაგან თითოეული ბევრ ნაწილაკს ადევნებს თვალ-ყურს. განვიხილოთ შემდეგი სიტუაცია:
  • იწყებთ ცარიელი ეკრანით.
  • აწკაპუნებთ მაუსზე და ქმნით ნაწილაკების სისტემას მაუსის მდებარეობის ადგილზე.
  • ყოველ ჯერზე, როცა მაუსზე აწკაპუნებთ, იქმნება ახალი ნაწილაკების სისტემა მაუსის ადგილმდებარეობაზე.
თვითონ სცადეთ:
როგორ მივაღწევდით ამას კოდში? წინა პარაგრაფში ჩვენ შევინახეთ ერთი მიმთითებელი ParticleSystem ობიექტზე ცვლადში ps.
var ps = new ParticleSystem(new PVector(width/2, 50));

draw = function() {
  background(50, 50, 50);
  ps.addParticle();
  ps.run();
};
ახლა გვაქვს მრავალი სისტემა, პოტენციურად მუდამ ზრდადი რიცხვი. ჩვენ არ გვსურს მათი ცაკლეულ ცვლადებში შენახვა. ამის ნაცვლად, გამოვიყენებთ მასივს ყველა სისტემისათვის თვალყურის სადევნებლად. პროგრამის დასაწყისში ის ცარიელი იქნება:
var systems = [];
როდესაც მომხმარებელი მაუსს დააჭერს, ახალი ParticleSystem იქმნება და ემატება მასივს:
mousePressed = function() {
  systems.push(new ParticleSystem(new PVector(mouseX, mouseY)));
};
და draw()-ში კონკრეტულ ParticleSystem ობიექტზე მიმართვის ნაცვლად ჩვენ ახლა გადავუყვებით მასივში არსებულ ყველა სისტემას და ვიძახებთ run()-ს თითოეულ მათგანზე.
draw = function() {
  background(50, 50, 50);
  for(var i = 0; i < systems.length; i++){
    systems[i].addParticle();
    systems[i].run();
  }
};
სცადეთ ეს თქვენით კიდევ ერთხელ ახლა უკვე კოდით, რომელიც ჩვენ დავწერეთ:

გსურთ, შეუერთდეთ დისკუსიას?

პოსტები ჯერ არ არის.
გესმით ინგლისური? დააწკაპუნეთ აქ და გაეცანით განხილვას ხანის აკადემიის ინგლისურენოვან გვერდზე.