Mündəricat:
- Addım 1: Dəyişən
- Addım 2: Dəyişənlərin Yaradılması
- Addım 3: Dəyişənlərin Adlandırılması Qaydası
- Addım 4: Dəyişən tip
- Addım 5: Operator
- Addım 6: Əməliyyat Nəticəsi:
- Addım 7: Əməliyyat Tənzimlənməsi
- Addım 8: Funksiyanı qurun və funksiyanı çəkin
- Addım 9: Üfüqi Hərəkətdə Dairə
- Addım 10: Hərəkət istiqaməti
- Addım 11: Baxılmayan Arxa Plan
- Addım 12: Sarsıntı dairəsi
- Addım 13: Köçəri Dairə
- Addım 14: Siçan tərəfindən Daşınan Dairə
- Addım 15: Bitirin
- Addım 16: Nisbi oxunuşlar:
Video: Dizayner üçün Maraqlı Proqramlaşdırma Təlimatı-Şəkilinizi Çalışdırın (Birinci hissə): 16 addım
2025 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2025-01-13 06:56
Qaç! Qaç! Qaç!
Proqramlaşdırma o qədər də çətin deyil. Əsas məqam ritminizi tapmaq və tək -tək etməkdir.
Bu fəsli oxumadan əvvəl ümid edirəm ki, əsas funksiya çəkmə üsulu ilə artıq tanış olmusunuz və ya iki böyük baş funksiyası ilə başınız gicəllənəcək və qarışıq olacaqsınız: quraşdırma və çəkmə.
Hərəkətli qrafika yaratmaq istədiyimiz üçün, animasiyanın necə istehsal edildiyini bilməliyik.
Yuxarıdakı şəkil olduqca cəlbedici görünür və vizual olaraq animasiyanın tətbiq prinsipini ortaya qoyur.
Animasiya sehrdir. Vizual aldatma haqqında bir sehrdir. Ancaq bu məlumatların partladığı, video sel çağında, biz artıq buna öyrəşmişik. Animasiyanı görməyin inanılmaz bir şey olduğuna az adam təəccüblənəcək.
Eyni prinsip, proqramla animasiya çəkərkən də tətbiq oluna bilər. Hər bir çərçivədə fərqli qrafiklərin necə çəkiləcəyini düşünməliyik və başımıza tamamlanmış bir animasiya əlavə edərkən proqram avtomatik olaraq səhifələri çevirəcək. Növbəti fəsildə, əsas qrafik hərəkətini necə həyata keçirəcəyimizdən bəhs edəcəyik. Bundan əvvəl, dəyişənlər haqqında bəzi əsas biliklərə sahib olmalıyıq.
Addım 1: Dəyişən
Dəyişən məlumat üçün konteynerdir. Bir proqramda dəfələrlə istifadə edilə bilər.
Misal üçün:
[cceN_cpp theme = "şəfəq"] ölçüsü (500, 500); ellips (100, 250, 50, 50); ellips (200, 250, 50, 50); ellips (300, 250, 50, 50); ellips (400, 250, 50, 50);
[/cceN_cpp]
Kodun bu bölməsi heç bir dəyişəndən istifadə etməmişdir. Ekranda dörd dairə çəkir. Eyni eni və hündürlüyü olduğunu görə bilərik. İndi eyni olduğu üçün, təkrarlanan məlumat girişini minimuma endirmək üçün onu təmsil edəcək bir işarə təyin edə bilərik. Bu işarə dəyişkəndir.
Dəyişən əlavə edildikdən sonra kod budur:
[cceN_cpp theme = "şəfəq"] ölçüsü (500, 500); int a = 50; ellips (100, 250, a, a); ellips (200, 250, a, a); ellips (300, 250, a, a); ellips (400, 250, a, a);
[/cceN_cpp]
Tamamilə eyni nəticə əldə edirik!
A dəyişənini təyin etdiyimiz üçün parametrləri rahatlıqla dəyişə bilərik. A = 50 -ni a = 100 -ə dəyişsək, bütün dairələrin eni və hündürlüyü bərabər şəkildə 100 olacaq. Buna görə parametrləri bir -bir dəyişdirmək məcburiyyətində deyilik. Dəyişən həqiqətən yaxşı bir ixtiradır.
Addım 2: Dəyişənlərin Yaradılması
Dəyişəndən istifadə etməzdən əvvəl bəyanat verməliyik və məlumat növünü təyin etməliyik.
int i;
i = 50;
Kodun ilk cümləsi i dəyişəninə bir açıqlama verdi. int, əsasən dəyişəni elan etmək üçün istifadə olunan bir simvoldur. Bəyan edərkən, kompüter yaddaşında, tam ədədləri bərpa etmək üçün xüsusi olaraq istifadə edilən "qutu" yaratmağa bərabər olan bir otaq ayıracaq. İkinci cümlə, i dəyişəninin yerinə yetirəcəyi 50 -ci tapşırığın verilməsi deməkdir. Bu cümlənin tətbiqindən sonra məlumatlar sabit olaraq i dəyişənində saxlanılacaq. Yoxsa bəyanat verərkən yuxarıdakı iki cümləni bir yerə birləşdirmək və tapşırığı tamamlamaq üçün daha tənbəl ola bilərsiniz.
int i = 50;
Bir dəyişənin adını çəkmək nisbətən pulsuzdur. Ancaq bəzən bir şeyə diqqət yetirməliyik.
Addım 3: Dəyişənlərin Adlandırılması Qaydası
• Əlifba və alt xəttinin birləşməsi olmalıdır. Bu simvol və ya söz ola bilər.
• Böyük / kiçik hərflərə həssas. Ad və ad fərqli dəyişənlər üçün dayana bilər.
• Bir baxışda başa düşmək üçün mümkün qədər asan adlandırmağa çalışın. İlkin simvol rəqəm və ya xüsusi simvol əvəzinə əlifba olmalıdır.
• int, float kimi heç bir açar söz yoxdur
Aşağıdakılar bəzi yanlış ifadələrdir.
int $ a;
int 89b;
İşdə doğru ifadələr:
int r;
int super_24;
int openTheDoor;
Addım 4: Dəyişən tip
Tam ədəd məlumatlarını elan etmək istisna olmaqla, float açar sözü ilə ondalık məlumatları (üzən nöqtə məlumatları da deyilir) elan edə bilərik.
üzmək b = 0.5
Bəyanat üçün hansı növ məlumatlardan istifadə etdiyimizi nəzərə almalıyıq. İnt açar sözünü işlətmişiksə, sonuncu tapşırıq i = 0.5 və ya buna bənzər bir şey yaza bilməz və ya proqram səhv olar. Ancaq əksini yazsaq, hər şey qaydasındadır. Məsələn, float i = 5 düzgün qrammatikadır, lakin proqram onu onluq ədəd kimi tanıyacaq.
Bəzi dəyişənlər artıq sistem tərəfindən müəyyən edilmişdir. Onları özümüz elan etməyimizə ehtiyac yoxdur. Daha əvvəl qeyd olunan "en, hündürlük" kimi, avtomatik olaraq kompüter ekranının genişliyini və hündürlüyünü əldə edəcək. İstifadədə o qədər yüksək tezlik ki, dizayner istifadə etməyimizi daha rahat etmək üçün onu birbaşa dəyişən olaraq təyin edir.
Addım 5: Operator
Aşağıdakılar emal operatorlarıdır:
+ artı
- mənfi
* çoxaltmaq
bölmək
% Qalan modul
%İstisna olmaqla bütün bu operatorlarla tanış olmalısınız. Nəticəsi qalıcı olduğu üçün olduqca qəribə görünür. 9%3 0, 9%5 isə 4 -dir.
Tapşırıqlar və dəyişənlər arasında operatorlar istifadə edilə bilər.
[cceN_cpp theme = "şəfəq"] int a = 1; // a tamsayı dəyişənini elan edin, təyinat 1 -dir. int b = 2; // b tam dəyişənini elan edin, təyinat 2 -dir. İnt c; // Tam ədəd dəyişənini elan edin c. c = a + b; // Əlavə iki tapşırıq və nəticəsini c -yə təyin edin. çap (c); // Çıxış dəyişən c.
[/cceN_cpp]
Addım 6: Əməliyyat Nəticəsi:
Çıxış nəticəsi pəncərədə deyil, altındakı konsolda göstəriləcək.
Dördüncü sətrin yazı üsulu olduqca qəribə görünür. Ancaq kompüter tapşırığı zamanı tez -tez istifadə olunan ümumi bir formatdır. Bərabər simvolun sol tərəfi son təyin olunan dəyişən, sağ tərəfi isə əməliyyat prosesi olmalıdır.
Beşinci sətirdəki çap funksiyası, konsoldakı dəyişənləri çap edə bilər ki, bu da tez -tez məlumatların çıxış vəziyyətini yoxlamaq üçün istifadə olunur.
Addım 7: Əməliyyat Tənzimlənməsi
İşlənmənin çətin bir nöqtəsi, dəyişənin növünü aydınlaşdırmağımızdır. Üzən nöqtə sayı və tam ədəd tipinə xüsusi diqqət yetirməliyik.
çap (6/5); // nəticə 1
Tam ədədlər arasındakı əməliyyat yeni bir tamsayı olacaq. 6 -nın 5 -ə bölünməsi 1.2 -dir. Amma proqramın nəticəsi 1 -dir. Bu, bizim intuisiyamıza ziddir. Proqram dəyirmi ilə məşğul olmayacaq, ancaq ondalık nöqtənin arxasındakı nömrəni siləcək.
çap (6.0 / 5.0); // nəticə 1.2
Üzən nöqtələr arasındakı əməliyyat yeni bir üzən nöqtə nömrəsi ilə nəticələnəcək. Həqiqi nəticə 1,2 olarsa, proqramın çıxışı eyni olacaq.
çap (6 / 5.0); // nəticə 1.2
çap (6.0 / 5); // nəticə 1.2
Nəhayət, tam ədəd və üzən nöqtə nömrəsinin qarışığıdır. Son çıxış nəticəsi 1.2 olacaq.
• Əslində, bu tənzimləmə dizaynının məqsədinin məlumatların dəqiqliyini itirməmək olduğunu unutmayın. Beləliklə, bir element üzən nöqtə sayıdırsa, nəticə də üzən nöqtə sayı olacaq.
Addım 8: Funksiyanı qurun və funksiyanı çəkin
Daha əvvəl bir sıra əsaslandırıcı biliklərdən bəhs etdik. İndi nəhayət maraqlı bir şey oynamağa gəlirik. Funksiyanın qurulması və çəkilməsi əsas emal funksiyalarına bərabərdir. Bu iki funksiya çox özəldir. Proqramın gedişatını idarə edə bilər. Nisbətən mürəkkəb proqram bu iki funksiyanı ehtiva edəcək, çünki onlar proqramın əsas çərçivəsidir. Format:
boş quraşdırma () {
}
boş çəkmə () {
}
Xüsusi istifadə onların çağırış formatını digər funksiyalardan fərqləndirir. Funksiya adından əvvəl "void" əlavə etməliyik ki, bu da "qaytarılmış dəyər" deyil. Funksiya adının arxasına mötərizələr və mötərizələr əlavə etməliyik.
[cceN_cpp theme = "şəfəq"] boş quraşdırma () {print (1); } void draw () {print (2); } [/cceN_cpp]
Bir nümunəyə baxaq:
Əməliyyat düyməsini basıldığında, konsol əvvəlcə "1" çıxardacaq və sonra dayan düyməsini basıb ya da pəncərəni bağlayana qədər daim "2" çıxacaq.
Quraşdırma funksiyasındakı mötərizədə olan kod yalnız bir dəfə tətbiq ediləcək. Funksiya çəkilişində olan kod daim dövriyyədə işləyəcək (standart tətbiq 60 dəfə/saniyə).
Bu xarakterə görə, quraşdırma ümumiyyətlə ekranın eni və hündürlüyü, arxa plan rəngi və hər cür dəyişənlərin təyin edilməsi kimi ətraf mühit xüsusiyyətlərini işə salmaq üçün istifadə olunur. Tez -tez dəyişən qrafika yaratmaq üçün rəsm funksiyalarını funksiya çəkilişinə yerləşdirsək də.
Addım 9: Üfüqi Hərəkətdə Dairə
Funksiya çəkmə ilə animasiyalarımızı yaratmağa başlaya bilərik. Emal ilə animasiya effekti yazma üsulu olduqca "yöndəmsizdir". Mövcud heç bir əmri yoxdur. Məsələn, əyri xətlər etmək üçün müəyyən bir forma təyin edin.
Bu detalları özümüz müəyyənləşdirməliyik. Proqrama hər bir çərçivənin mütləq hansı növ qrafikə ehtiyacı olduğunu söyləməlisiniz.
Aşağıdakı kodu daxil edin (İndi əllə etməyə başlayaq):
[cceN_cpp theme = "şəfəq"] int x; int y; void setup () {size (300, 300); x = 0; y = yüksəklik/2; } void draw () {background (234, 113, 107); noStroke (); ellips (x, y, 50, 50); x = x+1; }
[/cceN_cpp]
Kodun bu hissəsində hərəkət dairəsi göstərilir. Əvvəlki elan edilmiş dəyişən x, y koordinat mövqeyini saxlamaq üçün istifadə olunur. Onun tapşırıqları funksiya quruluşunda işləyir. Açar kodu funksiya çəkilişində aşağıdakı kimidir:
x = x + 1
Buna riyazi tənlik kimi baxmayın, yoxsa çox qəribə olar. Burada "=" tapşırıq üçün bir simvoldur. Doğru nömrələri sol dəyişənə yerləşdirməyi təmsil edir. X -in 50 olduğunu düşünün, kod işə düşdükdə "=" nin sağ tərəfi 50+1 -ə bərabərdir, yəni 51. Yekun nəticə x dəyişəninə veriləcək. Beləliklə, x -in dəyəri 51 olur.
Proqramın proseduruna əməl edin, hər dəfə çəkiliş funksiyası bir dəfə işlədikdə x -in dəyəri 1 -ə yüksələcək. Beləliklə, hər dəfə çəkdiyimiz zaman dairə əvvəlki çərçivəyə nisbətən bir üfüqi istiqamətdə sağa doğru hərəkət edəcək. Buna görə də qrafik hərəkətə çevrilir.
• Kodun daha yaxşı oxunmasını təmin etmək üçün, mötərizədə hər bir kod sətrindən əvvəl müəyyən bir otaq ayırmalıyıq. Və mümkün qədər uyğunlaşdırılmalıdır. TAB və ya bir neçə boş yerə basın, geri çəkilə bilər.
• Proqramda boş yer və sətir qırılma işarəsi proqrama təsir etməyəcək. Bir və ya daha çox yazsaq yaxşı olar.
Bunu ifadə etməyin daha sadə bir yolu var. Dəyişən dairəni avtomatik olaraq 1 artırmaq üçün onu aşağıdakı format olaraq yazmalıyıq.
dairə = dairə +1
Olduqca əlverişsizdir! Dəyişənin adı daha uzun olarsa, daha çox söz yazmalıyıq. Tənbəl sələflərimiz belə bir fikir düşünürlər.
dairə ++
Çox sadə deyilmi? 1 -in avtomatik olaraq artırılması deməkdir. Buna bənzər şəkildə - - var, bu da avtomatik olaraq 1 azalması deməkdir.
Ancaq avtomatik artımın miqdarının 2 kimi başqa bir rəqəm olacağına ümid etsək, başqa bir ifadəni sınamalıyıq.
dairə += 2
Bu bərabərdir
dairə = dairə + 2
Eynilə, var - =, /=, *=.
Addım 10: Hərəkət istiqaməti
Qrafikin hansı istiqamətdə hərəkət etməsi koordinatınızı necə dəyişdiyinizdən asılıdır. Y = y + 1 olaraq dəyişdirilərsə, dairə aşağıya doğru hərəkət edəcək. Həm x, həm də y 1 artarsa, dairə sağ altdan aşağıya doğru hərəkət edəcək. Bunu mənfi simvol olaraq yazsaq, əks istiqamətdə hərəkət edəcək.
[cceN_cpp theme = "şəfəq"] int x, y; // Eyni anda birdən çox dəyişən elan edə bilər, ayırmaq üçün vergül istifadə edin. void setup () {size (300, 300); x = 0; y = 0; } void draw () {background (234, 113, 107); noStroke (); ellips (x, y, 50, 50); x ++; y ++; }
[/cceN_cpp]
Hərəkət dərəcəsi
Funksiya çəkilişində saniyədə standart 60 kadr yadınızdadırmı? Bu nisbətə görə yuxarıdakı dairə saniyədə 60 piksel sağa hərəkət edəcək.
Qrafik hərəkət sürətini dəyişdirmək istəyiriksə, iki üsul var: biri dəyişdiriləcəkdən bəri hər dəfə x dəyərini artırmaqdır.
x = x + 10
Orijinal sürətlə müqayisədə sürəti 10 dəfə artırdı!
Digər üsul, kətanların təzələnmə tezliyini dəyişdirməkdir. frameRate ()
Bu funksiya kətanın yayım tezliyini dəyişə bilər. FrameRate (10) funksiya quruluşuna yazın, saniyədə orijinal 60 kadrı saniyədə 10 kadra dəyişəcək. Sürət əvvəlkindən 6 dəfə yavaşladı.
Addım 11: Baxılmayan Arxa Plan
Əvvəlki nümunələrin hamısı funksiya çəkilişinə fon yazır. Bunu funksiya quruluşuna yazmağı heç düşünmüsünüzmü? Bunun hər hansı bir fərqi olacaqmı? İndi üfüqi hərəkət nümunəsini yeniləyək.
[cceN_cpp theme = "şəfəq"] int x, y; void setup () {size (300, 300); fon (234, 113, 107); x = 0; y = yüksəklik/2; } void draw () {noStroke (); ellips (x, y, 50, 50); x += 1; } [/cceN_cpp]
Nə baş verdi? Bəlkə problemin düzgün istehsal olunmasının səbəbini anlaya bilmir. NoStroke funksiyasını silin, yenidən vuruş əlavə edin və dairənin hərəkət yolunu görün.
Oh, əvvəllər yaradılan dairə silinmədiyinə görədir! Funksiya quruluşu yalnız bir dəfə işlədiyi üçün arxa plana yazsaq, arxa planı yalnız bir dəfə doldurar və sonradan heç bir təsiri olmayacaq. Fonksiyon fonu boya kovası alətinə bənzəyir. İstifadə edildikdən sonra, yalnız fon rəngini təyin etmək əvəzinə, kətandakı bütün məzmunu əhatə edəcək. Yeni bir nümunə yaratdığımız zaman əvvəlki çərçivənin örtülməsi üçün funksiya çəkilməzdən əvvəl yazırıq. Buna görə də dairə gözlədiyimiz kimi davam edə bilər. Hər bir funksiyanın istifadəsini xatırlamaq istisna olmaqla, kodun mövqeyi haqqında düşünməliyik. Çox vaxt, koda üçün yuxarı və ya aşağı bir xətt və onu mötərizənin içərisinə və ya xaricinə yazmaq olduqca fərqli effektlər yaradacaq. Kodun istiqaməti iki ölçülüdür. Bir səhv görünürsə, bu iki ölçüdə kalibrləmə etməliyik.
• Bu təkrarlanmayan rəsm üsulu düzgün istifadə edildikdə çox xüsusi effekt yarada bilər. Aşağıdakı kodu kopyalayıb sınaya bilərsiniz.
[cceN_cpp theme = "şəfəq"] void setup () {size (400, 400); } void draw () {ellipse (eni/2-mouseX, hündürlük/2-mouseX, mouseY, mouseY); ellips (eni/2-mouseX, hündürlüyü/2+mouseX, mouseY, mouseY); ellips (eni/2+mouseX, hündürlük/2-mouseX, mouseY, mouseY); ellips (eni/2+mouseX, hündürlüyü/2+mouseX, mouseY, mouseY); } [/cceN_cpp]
Burada sehrli dəyişən mouseX və mouseY istifadə etdik. Sonda bu barədə ətraflı danışacağıq.
Addım 12: Sarsıntı dairəsi
Dairənin hərəkət istiqamətini düzensiz hala gətirmək istəsəm nə olar? Təsadüfi bir funksiya ilə bu təsiri də həyata keçirə bilərsiniz. Random tez -tez istifadə olunan bir funksiyadır. Təsadüfi bir funksiya yaratmaq üçün istifadə edilə bilər. İzsiz ruha bənzəyir. Dəyişənlərlə əlaqəli olduqdan sonra, nəyin olacağını təsəvvür edə bilməzsən.
Çağırış Formatı:
təsadüfi (yüksək)
Yüksək təsadüfi yuxarı həddi, standart alt həddi isə 0 -dır. Məsələn, təsadüfi (10). Təsadüfi olaraq 0 -dan 10 -a qədər bir nömrə çıxaracaq (0 daxildir, lakin 10 daxil deyil).
təsadüfi (aşağı, yüksək)
İki parametr təyin etsək, aralarındakı təsadüfi dəyərə qayıdır, məsələn, təsadüfi (5, 10). Təsadüfi olaraq 5 -dən 10 -a qədər bir ədəd çıxaracaq (5 daxil, lakin 10 daxil deyil).
Misal:
[cceN_cpp theme = "şəfəq"] float x;
x = təsadüfi (50, 100);
çap (x); [/cceN_cpp]
Proqramı hər dəfə işə saldığımız zaman konsol fərqli dəyərlər çıxaracaq.
• Qeyd: Təsadüfi funksiya ilə yaradılan dəyərlər üzən nöqtə tipinə (ondalık sayı növü) aiddir. Tam ədəd dəyişəninə bir dəyər təyin etmək istəyiriksə, onu int () funksiyası vasitəsilə çevirməliyik. Dönüşüm yuvarlaq deyil, ondalık hissəni birbaşa silin. İnt (təsadüfi (5)) çıxışı, yalnız 5 imkanı var: 0, 1, 2, 3, 4.
Təsadüfi funksiyanın istifadəsi ilə tanış olduqdan sonra birbaşa aşağıdakı vəziyyətə gələ bilərik.
[cceN_cpp theme = "şəfəq"] int x, y; void setup () {size (300, 300); x = eni/2; y = yüksəklik/2; } void draw () {background (234, 113, 107); noStroke (); x += int (təsadüfi (-5, 5)); y += int (təsadüfi (-5, 5)); ellips (x, y, 50, 50); }
[/cceN_cpp]
Əvvəlki əlavə edilmiş koordinat dəyərləri sabitdir. Yalnız təsadüfi bir dəyəri artırsaq, dairə qeyri -müəyyən istiqamətdə hərəkət edəcək. Daha böyük təsadüfi diapazonla daha tez -tez sarsılır. Çərçivələr arasındakı dəyər dəyişikliyi geri çəkildiyindən hərəkət artıq hamar olmayacaq. Əvvəlki çərçivə (150, 150) ikən, sonuncu çərçivə bir baxışda (170, 170) mövqeyinə keçəcək.
Addım 13: Köçəri Dairə
Köçəri Dairə
Hamar bir hərəkət yaradacaqmı? Funksiya səs -küyü bizə kömək edə bilər. Standart təsadüfi daha yaxşı ritm var. Və təsadüfi yaradılan təsadüfi ədədlər davamlı olaraq olur.
Çağırış Formatı:
səs -küy
Funksiya səs -küyü onun çıxış diapazonunu təyin edə bilməz. Proqram yalnız 0 -dan 1 -ə qədər üzən nöqtə nömrələri yarada biləcəyini və sabit girişin yalnız sabit çıxışı ola biləcəyini təyin edir.
[cceN_cpp theme = "şəfəq"] float x = səs -küy (5); float y = səs -küy (5); çap (x, y); [/cceN_cpp]
Yuxarıdakı giriş parametrləri 5 olduğu üçün, nəticələr eynidir, sonra nəticəni necə dəyişdirmək olar? Cavab, giriş parametrlərini dinamik olaraq dəyişdirməkdir. Əslində səs -küyü sonsuz bir səs parçası olaraq qəbul edə bilərik, giriş parametrləri "indiki vaxt" kimidir. Parametr girişi davamlı olarsa, çıxış da davamlı olacaq.
[cceN_cpp theme = "şəfəq"] x, y; void setup () {size (700, 100); x = 0; fon (0); } void draw () {x += 1; y = səs -küy (frameCount/100.0)*100; noStroke (); ellips (x, y, 2, 2); }
[/cceN_cpp]
Bu vəziyyətdə funksiyanın səs -küyünü daha yaxşı başa düşməyimiz üçün Y -nin dəyişmə yolunu çəkirik.
• Arasında dəyişən frameCount indiki çərçivəni əldə edəcək. Əvvəlki genişlikdən, hündürlükdən fərqli olaraq heç bir dəyişikliyə uğramadan sabitdir. Bundan əlavə, 0 -dan başlayaraq artmağa başlayır. Bunu ilk göstərdiyimiz cizgi qrafikası ilə başa düşsək, müraciət etdiyimiz səhifəni (daha doğrusu proqramdakı vaxt anlayışına) göstərir.
• frameCount tam dəyişəndir. Başqa bir tam ədəd dəyişəninə bölündükdə, proqram nəticəni tamsayı halına gətirəcək. Nəticənin dəqiqliyini artırmaq üçün 100 -ü 100.0 -a dəyişməliyik. Üzən nöqtə nömrəsinə bölündükdə, biz də üzən nöqtə nömrəsi alacağıq.
• Y oxunu 0 -dan 100 -ə dəyişdirmək üçün səs -küyün nəticəsini 100 -ə vurmalıyıq. Beləliklə, təsadüfi dəyər aralığını idarə edə bilərik.
Bəziləriniz yaxşı düşünə bilərsiniz ki, "niyə frameCountby 100 -ü bölmək məcburiyyətindəyik? Çərçivəni birbaşa yazmaq düzgün deyilmi?" Əlbəttə edə bilərsiniz! Ancaq burada funksional səs -küyün xüsusiyyətlərini daha yaxşı göstərmək üçün "yayım sürətini" yavaşlatırıq. Aşağıdakı nümunə, çıxış dəyərinin fərqli dəyişiklik nisbətində dəyişdiyini göstərir.
[cceN_cpp theme = "şəfəq"] üzmək x, y1, y2, y3, y4, y5; void setup () {size (700, 500); x = 0; fon (0); } void draw () {x += 1; y1 = səs -küy (frameCount)*100; y2 = səs -küy (frameCount/10.0)*100; y3 = səs -küy (frameCount/100.0)*100; y4 = səs -küy (frameCount/1000.0)*100; y5 = səs -küy (frameCount/10000.0)*100; noStroke (); ellips (x, y1, 2, 2); ellips (x, y2+100, 2, 2); ellips (x, y3+200, 2, 2); ellips (x, y4+300, 2, 2); ellips (x, y5+400, 2, 2); vuruş (80); xətt (0, 100, en, 100); xətt (0, 200, en, 200); xətt (0, 300, en, 300); xətt (0, 400, en, 400); }
[/cceN_cpp]
Funksiya səs -küyündə dəyişən parametrləri irəliləyiş çubuğu kimi qəbul edə bilərsiniz. Parametrini dəyişdirmək, irəliləmə çubuğunu hərəkət etdirdiyimiz kimidir. Bu "səs parçası" nın dəyişən əhatə dairəsi daha böyük olduqda, çıxış dəyərinin ön və arxa davamlı xüsusiyyətləri daha zəif olacaq. dəfə sürət, 20 dəfə sürət). Əhatə dairəsi müəyyən bir dəyərdən daha böyük olduqda, dəyər istehsalında təsadüfi fəaliyyət göstərmək üçün heç bir fərqi yoxdur.
Yuxarıdakı bütün nümunələri anlaya bilsəniz, köçən bir dairə çəkməkdən daha asan bir şey olmadığını hiss edəcəksiniz. Daxili prinsipləri də başa düşə bilərsiniz.
[cceN_cpp theme = "şəfəq"] x, y; void setup () {size (300, 300); x = 0; } void draw () {background (234, 113, 107); x = səs -küy (frameCount/100.0 + 100)*300; y = səs -küy (frameCount/100.0)*300; noStroke (); ellips (x, y, 50, 50); }
[/cceN_cpp]
İndi hərəkət, fırlanan ciro kimi daha maraqlıdır.
• Funksiya səs -küyü içərisində x dəyişəninin artı 100 -ə bərabər olmasının səbəbi, onları bir məsafəyə ayırmaqdır. Funksiya səs -küyü içərisində xy -nin parametrləri eyni və ya olduqca yaxındırsa, x, y koordinatının dəyişməsi də buna yaxın olacaq. Bu, hərəkəti daha təsadüfi hala gətirmək üçündür.
Addım 14: Siçan tərəfindən Daşınan Dairə
Nəhayət, ən çox bəyəndiyim iki dəyişənə gəlirik: mouseX və mouseY. İki anlayışa ilk baxanda gözlərim işıldayır. Çünki qrafiklə qarşılıqlı əlaqə qurmağın ən birbaşa yoludur. Bununla çox maraqlı proqramlar yarada bilərik.
Dava olduqca sadədir:
[cceN_cpp theme = "şəfəq"] int x, y; void setup () {size (300, 300); x = 0; y = 0; } void draw () {background (234, 113, 107); noStroke (); x = mouseX; y = siçan Y; ellips (x, y, 50, 50); }
[/cceN_cpp]
mouseX siçanın x koordinatını, mouseY isə y koordinatını əldə edə bilər.
• Müsbət və mənfi simvolu dəyişdirməyə və ya mouseX və mouseY mübadiləsinə çalışaq.
Addım 15: Bitirin
Bu tanış əmrlərdən qrafik hərəkətini edə bilərsiniz. Son fəslin məzmunu ilə təsəvvürünüzü düzgün istifadə edin, çox maraqlı cizgi effektləri yarada bilərsiniz.
Növbəti fəsildə daha çox nümunə görə bilərik. Eyni zamanda riyazi funksiyalardan istifadə edib qrafik hərəkəti ilə birləşdirəcəyik.
Bu məqalə dizayner Wenzy -dən gəlir.
Addım 16: Nisbi oxunuşlar:
Dizayner üçün Maraqlı Proqramlaşdırma Təlimatı-İlkin Toxunuşun İşlənməsi
Dizayner üçün Maraqlı Proqramlaşdırma Təlimatı-İlk İşləmə Proqramınızı yaradın
Bu məqalə:
Kömək lazımdırsa, əlaqə saxlaya bilərsiniz: [email protected].