Агуулгын хүснэгт:

Загвар зохион бүтээгчийн хувьд сонирхолтой програмчлалын заавар-Зургаа ажиллуулах (Нэгдүгээр хэсэг): 16 алхам
Загвар зохион бүтээгчийн хувьд сонирхолтой програмчлалын заавар-Зургаа ажиллуулах (Нэгдүгээр хэсэг): 16 алхам

Видео: Загвар зохион бүтээгчийн хувьд сонирхолтой програмчлалын заавар-Зургаа ажиллуулах (Нэгдүгээр хэсэг): 16 алхам

Видео: Загвар зохион бүтээгчийн хувьд сонирхолтой програмчлалын заавар-Зургаа ажиллуулах (Нэгдүгээр хэсэг): 16 алхам
Видео: Is Genesis History? - Watch the Full Film 2024, Долдугаар сарын
Anonim
Дизайнерын хувьд сонирхолтой програмчлалын заавар-Зургаа ажиллуулаарай (нэгдүгээр хэсэг)
Дизайнерын хувьд сонирхолтой програмчлалын заавар-Зургаа ажиллуулаарай (нэгдүгээр хэсэг)

Гүй! Гүй! Гүй!

Програмчлах нь тийм ч хэцүү биш юм. Гол зүйл бол хэмнэлээ олж, үүнийг нэг нэгээр нь хийх явдал юм.

Энэ бүлгийг уншихаасаа өмнө та зураг зурах үндсэн функцийг аль хэдийн мэддэг байсан гэж найдаж байна, эс тэгвээс толгойны хоёр том функц болох толгой эргэх, будилах болно: тохируулах, зурах.

Бид хөдөлгөөнт график хийхийг хүсч байгаа тул анимац хэрхэн бүтдэгийг мэдэх ёстой.

Дээрх зураг нь нэлээд сэтгэл татам мэт санагдаж байгаа бөгөөд анимацыг хэрэгжүүлэх зарчмыг харуулсан болно.

Анимаци бол ид шид юм. Энэ бол харааны хууран мэхлэх тухай ид шид юм. Гэсэн хэдий ч, энэ мэдээлэл дэлбэрч, видео үерийн эрин үе, бид аль хэдийн үүнд дассан байсан. Анимейшнийг үзэх нь үнэхээр гайхалтай зүйл гэдгийг цөөн хүн гайхах болно.

Үүнтэй ижил зарчмыг програмын тусламжтайгаар анимац зурахдаа ашиглаж болно. Хүрээ бүрт өөр өөр график зурах талаар бодох ёстой бөгөөд бидний толгойд дууссан анимацийг нэмж байх үед програм нь хуудсыг автоматаар эргүүлэх болно. Дараагийн бүлэгт бид үндсэн график хөдөлгөөнийг хэрхэн хэрэгжүүлэх талаар ярих болно. Үүнээс өмнө бид хувьсагчийн талаархи анхан шатны мэдлэгтэй байх хэрэгтэй.

Алхам 1: Хувьсагч

Хувьсагч бол өгөгдөл хадгалах сав юм. Үүнийг програм дотор дахин дахин ашиглах боломжтой.

Жишээлбэл:

[cceN_cpp theme = "үүр цайх"] хэмжээ (500, 500); эллипс (100, 250, 50, 50); эллипс (200, 250, 50, 50); эллипс (300, 250, 50, 50); эллипс (400, 250, 50, 50);

[/cceN_cpp]

Кодын энэ хэсэгт ямар ч хувьсагч ашиглаагүй болно. Энэ нь дэлгэцэн дээр дөрвөн тойрог зурдаг. Тэд ижил өргөн, өндөртэй болохыг бид олж чадна. Энэ нь адилхан болсон тул давтагдсан өгөгдөл оруулахыг багасгахын тулд бид үүнийг илэрхийлэх тэмдгийг тодорхойлж болно. Энэ тэмдэг нь хувьсах шинж чанартай байдаг.

Хувьсагч нэмсний дараа код энд байна:

[cceN_cpp theme = "үүр цайх"] хэмжээ (500, 500); int a = 50; эллипс (100, 250, а, а); эллипс (200, 250, а, а); эллипс (300, 250, а, а); эллипс (400, 250, а, а);

[/cceN_cpp]

Бид яг ижил үр дүнд хүрдэг!

Бид а хувьсагчийг тодорхойлсон тул параметрүүдийг хялбархан өөрчилж болно. Хэрэв бид a = 50 -г a = 100 болгон өөрчилвөл бүх тойргийн өргөн ба өндөр 100 нэгэн төрлийн болно. Тиймээс бид параметрүүдийг нэг нэгээр нь өөрчлөх шаардлагагүй болно. Хувьсагч бол үнэхээр сайн бүтээл юм.

Алхам 2: Хувьсагчийг бий болгох

Хувьсагчийг ашиглахын өмнө бид мэдэгдэл хийж, өгөгдлийн төрлийг тодорхойлох ёстой.

int i;

би = 50;

Кодын эхний өгүүлбэр нь i хувьсагчийн талаар мэдэгдэл хийсэн болно. int нь хувьсагчийг зарлахад голчлон ашигладаг тэмдэг юм. Зарлахдаа энэ нь бүхэл тоон өгөгдлийг сэргээхэд тусгайлан ашигладаг "хайрцаг" үүсгэхтэй тэнцэх компьютерийн санах ойд өрөө хадгалах болно. Хоёрдахь өгүүлбэр нь 50 -р даалгаварыг i хувьсагчаар хэрэгжүүлэхийг хэлнэ. Энэ өгүүлбэрийг хэрэгжүүлсний дараа өгөгдлийг i хувьсагчид тогтвортой хадгалах болно. Эсвэл мэдэгдэл хийхдээ дээрх хоёр өгүүлбэрийг нэг болгож, даалгавраа биелүүлэхээс залхуурч болно.

int i = 50;

Хувьсагчийг нэрлэх нь харьцангуй үнэ төлбөргүй байдаг. Гэхдээ заримдаа бид ямар нэг зүйлд анхаарлаа хандуулах хэрэгтэй болдог.

Алхам 3: Хувьсагчийг нэрлэх журам

• Энэ нь цагаан толгой ба доогуур зураасны хослол байх ёстой. Энэ нь бэлэг тэмдэг эсвэл үг байж болно.

• Том жижгээр бичхээс хамаарна. Нэр, нэр нь өөр өөр хувьсагчийг илэрхийлж болно.

• Нэг хараад ойлгох боломжийг олгохын тулд аль болох хялбар нэрлэхийг хичээгээрэй. Анхны тэмдэгт нь тоо эсвэл тусгай тэмдэгтийн оронд цагаан толгой байх ёстой.

• int, float гэх мэт түлхүүр үг байхгүй

Дараахь зүйл бол зарим буруу мэдэгдэл юм.

int $ a;

int 89b;

Энд зөв мэдэгдэл байна:

int r;

int super_24;

int openTheDoor;

Алхам 4: Хувьсах төрөл

Бүхэл тоон өгөгдлийг зарлахаас бусад тохиолдолд бид float түлхүүр үгээр аравтын өгөгдлийг (хөвөгч цэгийн өгөгдөл гэж нэрлэдэг) зарлаж болно.

хөвөх b = 0.5

Бид мэдэгдэл хийхдээ ямар төрлийн өгөгдөл ашигласан гэдгээ санаж байх ёстой. Хэрэв бид int гэсэн түлхүүр үгийг ашигласан бол сүүлчийн даалгавар нь i = 0.5 эсвэл үүнтэй төстэй зүйлийг бичиж чадахгүй, эс тэгвээс програм алдаа болно. Гэхдээ бид эсрэгээр нь бичвэл зүгээр юм байна. Жишээлбэл, float i = 5 бол зөв дүрэм боловч програм нь үүнийг аравтын тоо гэж хүлээн зөвшөөрөх болно.

Зарим хувьсагчдыг аль хэдийн системээр тодорхойлсон байдаг. Бид тэдгээрийг өөрсдөө зарлах шаардлагагүй. Өмнө нь дурдсан "өргөн, өндөр" шиг компьютерийн дэлгэцийн өргөн, өндрийг автоматаар олж авах болно. Ашиглалтын ийм өндөр давтамжийг дизайнер үүнийг ашиглахад илүү тохиромжтой болгох үүднээс анхдагч хувьсагч гэж шууд тодорхойлдог.

Алхам 5: Оператор

Дараахь нь боловсруулалтын операторууд юм.

+ нэмэх

- хасах

* үржүүлэх

divide

Үлдэгдлийн модуль

%-С бусад бүх операторуудтай танилцсан байх ёстой. Үр дүн нь үлддэг тул энэ нь маш хачирхалтай санагдаж байна. 9%3 бол 0. 9%5 бол 4.

Операторуудыг даалгавар болон хувьсагчийн дунд ашиглаж болно.

[cceN_cpp theme = "үүр цайх"] int a = 1; // a бүхэл тоон хувьсагчийг зарлах, даалгавар нь 1. int b = 2; // b бүхэл тоон хувьсагчийг зарлах, даалгавар нь 2. int c; // Бүхэл тоон хувьсагчийг зарлах c. c = a + b; // Дээрээс нь хоёр даалгавар өгөөд үр дүнг нь c -д онооно. хэвлэх (в); // Гаралтын хувьсагч c.

[/cceN_cpp]

Алхам 6: Үйл ажиллагааны үр дүн:

Гаралтын үр дүнг цонхонд харуулахгүй, харин доод талын консол дээр харуулна.

Дөрөв дэх мөрийг бичих арга нь нэлээд хачин харагдаж байна. Гэхдээ энэ нь компьютер дээр ажиллахад ихэвчлэн хэрэглэгддэг түгээмэл хэлбэр юм. Тэнцүү тэмдгийн зүүн тал нь эцсийн хуваарилагдсан хувьсагч байх ёстой, харин баруун тал нь үйл ажиллагааны процесс байх ёстой.

Тав дахь мөрийн хэвлэх функц нь консол дахь хувьсагчдыг хэвлэх боломжтой бөгөөд үүнийг ихэвчлэн өгөгдлийн гаралтын байдлыг шалгахад ашигладаг.

Алхам 7: Үйл ажиллагааны журам

Боловсруулалтын хамгийн хэцүү цэг бол хувьсагчийн төрлийг тодруулах явдал юм. Бид хөвөгч цэгийн дугаар, бүхэл тооны төрөлд онцгой анхаарал хандуулах ёстой.

хэвлэх (6/5); // үр дүн 1

Бүхэл тоонуудын хоорондох үйлдэл шинэ бүхэл тоотой болно. 6 -г 5 -т хуваах нь 1.2 байна. Гэхдээ програмын гаралтын үр дүн нь 1. Энэ нь бидний зөн совинтой зөрчилдөж байна. Хөтөлбөр нь тойрог хийхгүй, харин аравтын бутархай цэгийн ард байгаа тоог устгах болно.

хэвлэх (6.0 / 5.0); // үр дүн 1.2

Хөвөгч цэгүүдийн хоорондох үйл ажиллагаа нь шинэ хөвөгч цэгийн дугаарыг бий болгоно. Хэрэв бодит үр дүн 1.2 байвал програмын гаралтын үр дүн ижил байх болно.

хэвлэх (6 / 5.0); // үр дүн 1.2

хэвлэх (6.0 / 5); // үр дүн 1.2

Эцэст нь энэ нь бүхэл тоо ба хөвөгч цэгийн холимог юм. Эцсийн гаралтын үр дүн 1.2 болно.

• Үнэн хэрэгтээ энэхүү зохицуулалтын дизайны зорилго нь мэдээллийн үнэн зөв байдлыг алдагдуулахгүй байх явдал гэдгийг та санаж байх ёстой. Тиймээс хэрэв нэг элемент нь хөвөгч цэгийн тоо байвал үр дүн нь бас хөвөгч цэгийн тоо байх болно.

Алхам 8: Функцийг тохируулах, зурах функц

Өмнө нь бид суурь мэдлэгийн талаар ярьсан. Эцэст нь бид сонирхолтой зүйл тоглохоор ирлээ. Функцийг тохируулах, зурах нь боловсруулах үндсэн функцүүдтэй тэнцүү юм. Эдгээр хоёр функц нь маш онцгой юм. Энэ нь програмын журмыг хянах боломжтой. Харьцангуй төвөгтэй програм нь эдгээр хоёр функцийг багтаах болно, учир нь тэдгээр нь програмын үндсэн хүрээ юм. Формат:

хүчингүй тохиргоо () {

}

хүчингүй сугалаа () {

}

Тусгай хэрэглээ нь тэдний дуудлагын форматыг бусад функцээс ялгаатай болгодог. Бид функцын нэрний өмнө "буцаагдсан утга" гэсэн утгагүй "void" нэмэх ёстой. Функцийн нэрний ард бид хаалт, хаалт нэмэх ёстой.

[cceN_cpp theme = "үүр цайх"] хүчингүй тохиргоо () {хэвлэх (1); } void draw () {хэвлэх (2); } [/cceN_cpp]

Нэг жишээг авч үзье.

Үйлдлийн товчлуурыг дарахад консол нь эхлээд "1" гаргадаг бөгөөд дараа нь зогсоох товчлуурыг дарах эсвэл цонхыг хаах хүртэл "2" гарч ирнэ.

Тохиргооны функц доторх хаалт доторх кодыг зөвхөн нэг удаа хэрэгжүүлнэ. Функцийн сугалааны код үргэлж эргэлтэнд байх болно (анхдагч хэрэгжилт 60 удаа/секунд).

Энэ тэмдэгтийн ачаар тохиргоог ихэвчлэн дэлгэцийн өргөн, өндөр, дэвсгэр өнгө, бүх төрлийн хувьсагчийн даалгавар гэх мэт орчны шинж чанарыг эхлүүлэхэд ашигладаг. Тасралтгүй өөрчлөгдөж буй график үүсгэхийн тулд бид зургийн функцийг функцын зурганд ихэвчлэн байрлуулдаг.

Алхам 9: Хэвтээ хөдөлгөөнөөр тойрог хийх

Функцийн зургийн тусламжтайгаар бид анимац үүсгэж эхэлж болно. Боловсруулах замаар анимацийн эффект бичих арга нь нэлээд "эвгүй" юм. Үүнд одоо байгаа ямар ч тушаал байхгүй. Жишээлбэл, муруй шугам хийх тодорхой хэлбэрийг тодорхойл.

Эдгээр нарийн ширийн зүйлийг бид өөрсдөө тодорхойлох ёстой. Хүрээ бүрт ямар төрлийн график хэрэгтэйг та програмд хэлэх ёстой.

Дараах кодыг бичээрэй (Одоо үүнийг гараар хийж эхэлье):

[cceN_cpp theme = "үүр цайх"] int x; int y; void setup () {size (300, 300); x = 0; y = өндөр/2; } void draw () {background (234, 113, 107); цус харвалтгүй (); эллипс (x, y, 50, 50); x = x+1; }

[/cceN_cpp]

Кодын энэ хэсэгт хөдөлгөөний тойрог харуулав. Хуучин зарлагдсан x, y хувьсагчийг координатын байрлалыг хадгалахад ашигладаг. Түүний даалгавар нь функцын тохиргоонд ажилладаг. Түлхүүр код нь функцын зургийн доорх код юм.

x = x + 1

Үүнийг математикийн тэгшитгэл гэж бүү бодоорой, эс тэгвээс энэ нь маш хачирхалтай байх болно. Энд "=" нь үүрэг даалгавар өгөх тэмдэг юм. Энэ нь зөв тоонуудыг зүүн хувьсагч руу оруулахыг илэрхийлдэг. Код нь ажиллаж эхэлмэгц "=" -ийн баруун тал нь 50+1 -тэй тэнцүү, өөрөөр хэлбэл 51 -тэй тэнцүү байх болно. Тиймээс x -ийн утга 51 болно.

Хөтөлбөрийн журмыг дагаж мөрдөх, функц сугалах үйл ажиллагаа нэг удаа үргэлжлэх тусам x -ийн утга 1 нэмэгдэх болно. Тиймээс зурах болгондоо тойрог нь өмнөх хүрээтэй харьцуулахад пикселийн чиглэлийг баруун тийш хэвтээ чиглэлд шилжүүлэх болно. Тиймээс график нь хөдөлгөөнтэй болдог.

• Кодыг илүү сайн унших боломжтой болгохын тулд бид хаалтанд байгаа кодын мөр бүрийн өмнө тодорхой өрөөг нөөцлөх ёстой. Мөн энэ нь аль болох нийцсэн байх ёстой. TAB эсвэл хэд хэдэн хоосон зай дарахад буцааж авах боломжтой.

• Програмын хоосон зай, мөр таслах гэсэн тэмдэг нь програмд нөлөөлөхгүй. Тиймээс хэрэв бид нэгийг их эсвэл бага хэмжээгээр бичвэл зүгээр юм.

Үүнийг илэрхийлэх өөр нэг энгийн аргыг энд оруулав. Хувьсах тойрог 1 -ийг автоматаар нэмэгдүүлэхийн тулд бид үүнийг дараах форматаар бичих ёстой.

тойрог, тойрог +1

Маш эвгүй байна! Хэрэв хувьсагчийн нэр урт байвал бид илүү олон үг бичих шаардлагатай болно. Тиймээс бидний залхуу өмнөх хүмүүс ийм санаа бодож олдог.

тойрог ++

Энэ нь маш энгийн биш гэж үү? Энэ нь автоматаар 1 -ийг нэмэгдүүлнэ гэсэн үг юм. Үүнтэй адилаар - - байдаг бөгөөд энэ нь 1 -ийг автоматаар бууруулдаг гэсэн үг юм.

Гэхдээ хэрэв бид автоматаар нэмэгдэх тоо нь 2 шиг өөр тоо гэж найдаж байгаа бол өөр нэг илэрхийлэлийг туршиж үзэх хэрэгтэй болно.

тойрог += 2

Энэ нь тэнцүү байна

тойрог = тойрог + 2

Үүний нэгэн адил, - =, /=, *= байдаг.

Алхам 10: Хөдөлгөөний чиглэл

График ямар чиглэлд шилжих нь координатыг хэрхэн өөрчлөхөөс хамаарна. Хэрэв үүнийг y = y + 1 болгож өөрчилвөл тойрог доошоо хөдөлнө. Хэрэв x ба y хоёулаа 1 -ийг ихэсгэвэл тойрог баруун доод талаас доошоо хөдөлнө. Хэрэв бид үүнийг хасах тэмдэг гэж бичвэл эсрэг чиглэлд шилжих болно.

[cceN_cpp theme = "үүр цайх"] int x, y; // Олон хувьсагчийг нэгэн зэрэг зарлах боломжтой, таслалаар тусгаарлана. void setup () {size (300, 300); x = 0; y = 0; } void draw () {background (234, 113, 107); цус харвалтгүй (); эллипс (x, y, 50, 50); x ++; y ++; }

[/cceN_cpp]

Хөдөлгөөний хувь

Функцийн сугалаанд секундэд 60 фрэймийн үндсэн өгөгдлийг санаж байна уу? Энэ хурдны дагуу дээрх тойрог секундэд 60 пикселийг баруун тийш шилжүүлэх болно.

Хэрэв бид график хөдөлгөөний хурдыг өөрчлөхийг хүсч байвал хоёр арга байдаг: нэг нь өөрчлөгдөхөөс хойш x утгыг нэмэгдүүлэх явдал юм.

x = x + 10

Энэ нь анхныхтай харьцуулахад хурдыг 10 дахин сайжруулсан!

Өөр нэг арга бол зотон даавууг сэргээх давтамжийг өөрчлөх явдал юм. frameRate ()

Энэ функц нь зурагны цацах давтамжийг өөрчлөх боломжтой. FrameRate (10) -г функцын тохиргоонд бичвэл энэ нь анхны 60 хүрээг секундэд 10 фрэйм болгон өөрчлөх болно. Хурд өмнөхөөсөө 6 дахин удааширсан.

Алхам 11: Анзаарагдаагүй мэдээлэл

Өмнөх бүх жишээнүүд нь функцийн зургийн дэвсгэр дээр бичдэг. Та үүнийг функцын тохиргоонд бичихийг бодож байсан уу? Үүнд ямар нэгэн ялгаа байх болов уу? Одоо хэвтээ хөдөлгөөний жишээг шинэчилье.

[cceN_cpp theme = "үүр цайх"] int x, y; void setup () {size (300, 300); дэвсгэр (234, 113, 107); x = 0; y = өндөр/2; } void draw () {noStroke (); эллипс (x, y, 50, 50); x += 1; } [/cceN_cpp]

Юу болов? Магадгүй энэ нь асуудлын шалтгааныг зөв ойлгож чадахгүй байж магадгүй юм. NoStroke функцийг устгаад дахин цус харвалт хийж тойргийн хөдөлгөөний замыг харна уу.

Өө, энэ нь өмнө нь үүсгэсэн тойргийг устгаагүйтэй холбоотой юм! Функцийн тохиргоо нь нэг л удаа ажилладаг тул хэрэв бид түүний ард дэвсгэр бичих юм бол энэ нь арын дэвсгэрийг нэг л удаа дүүргэх бөгөөд дараа нь ямар ч нөлөө үзүүлэхгүй. Функциональ дэвсгэр нь будаг хувинтай төстэй юм. Үүнийг ашигласны дараа зөвхөн дэвсгэр өнгө тохируулахын оронд зураг дээрх бүх агуулгыг хамрах болно. Бид үүнийг функц зурахаас өмнө бичдэг бөгөөд ингэснээр бид шинэ загвар бүтээх болгондоо өмнөх хүрээг хамрах болно. Тиймээс тойрог бидний бодож байсны дагуу ажиллах боломжтой. Функц бүрийн хэрэглээг санахаас бусад тохиолдолд бид кодын байршлын талаар бодох ёстой. Кодыг дээш эсвэл доош чиглүүлж, бэхэлгээний дотор эсвэл гадна талд бичих нь маш их цаг хугацаа, өөр өөр эффектүүдийг бий болгоно. Кодын чиглэл нь хоёр хэмжээст юм. Хэрэв алдаа гарч ирвэл бид энэ хоёр хэмжигдэхүүн дээр шалгалт тохируулга хийх ёстой.

• Дахин давтагдахгүй зурах энэ аргыг зөв ашиглавал маш онцгой нөлөө үзүүлэх боломжтой. Та дараах кодыг хуулж аваад туршаад үзээрэй.

[cceN_cpp theme = "үүр цайх"] void setup () {size (400, 400); } void draw () {ellipse (өргөн/2-mouseX, өндөр/2-mouseX, mouseY, mouseY); эллипс (өргөн/2-mouseX, өндөр/2+mouseX, mouseY, mouseY); эллипс (өргөн/2+mouseX, өндөр/2-mouseX, mouseY, mouseY); эллипс (өргөн/2+mouseX, өндөр/2+mouseX, mouseY, mouseY); } [/cceN_cpp]

Энд бид mouseX ба mouseY шидэт хувьсагчийг ашигласан. Хожим нь бид энэ талаар нарийвчлан ярих болно.

Алхам 12: Сэгсрэх тойрог

Хэрэв би тойргийн хөдөлгөөний чиглэлийг жигд бус болгохыг хүсч байвал яах вэ? Санамсаргүй байдлаар функцийг ашигласнаар та энэ нөлөөг ойлгож чадна. Random бол байнга хэрэглэгддэг функц юм. Үүнийг санамсаргүй функцийг үүсгэхэд ашиглаж болно. Энэ бол зам мөргүй сүнстэй адил юм. Хувьсагчтай холбогдсоны дараа цаашид юу болохыг та төсөөлж ч чадахгүй.

Дуудлагын формат:

санамсаргүй (өндөр)

Өндөр нь санамсаргүй дээд хязгаарыг илэрхийлдэг бөгөөд үндсэн доод хязгаар нь 0. Жишээлбэл, санамсаргүй (10). Энэ нь санамсаргүй байдлаар 0 -ээс 10 хүртэлх тоог гаргах болно (0 орсон боловч 10 ороогүй болно).

санамсаргүй (бага, өндөр)

Хэрэв бид хоёр параметрийг тохируулбал тэдгээрийн хооронд санамсаргүй утга руу буцна. Жишээ нь санамсаргүй (5, 10). Энэ нь санамсаргүй байдлаар 5 -аас 10 хүртэлх тоог гаргах болно (5 нь багтсан боловч 10 нь ороогүй болно).

Жишээ:

[cceN_cpp theme = "үүр цайх"] float x;

x = санамсаргүй (50, 100);

хэвлэх (x); [/cceN_cpp]

Бид програмыг ажиллуулах бүрт консол өөр өөр утгыг гаргадаг.

• Тэмдэглэл: Санамсаргүй функцээр үүсгэсэн утгууд нь хөвөгч цэгийн төрөлд хамаардаг (аравтын тооны төрөл). Хэрэв бид бүхэл тоон хувьсагчид утгыг өгөхийг хүсвэл int () функцээр дамжуулан өөрчлөх ёстой. Өөрчлөлт нь дугуй хэлбэртэй байдаггүй, харин аравтын хэсгийг шууд устгадаг. Тиймээс int (random (5)) гаралт нь ердөө 5 боломж байна: 0, 1, 2, 3, 4.

Санамсаргүй функцийн хэрэглээтэй танилцсаны дараа бид доорх тохиолдолд шууд орж болно.

[cceN_cpp theme = "үүр цайх"] int x, y; void setup () {size (300, 300); x = өргөн/2; y = өндөр/2; } void draw () {background (234, 113, 107); цус харвалтгүй (); x += int (санамсаргүй (-5, 5)); y += int (санамсаргүй (-5, 5)); эллипс (x, y, 50, 50); }

[/cceN_cpp]

Хуучин нэмсэн координатын утгууд тогтмол байна. Зөвхөн санамсаргүй утгыг нэмэгдүүлэхэд л тойрог тодорхой бус чиглэлд шилжих болно. Санамсаргүй том хүрээтэй байх тусам илүү олон удаа чичирдэг. Хүрээнүүдийн хоорондох утга өөрчлөгдөх тул хөдөлгөөн цаашид жигд биш болно. Өмнөх хүрээ нь (150, 150) байрлалтай байхад сүүлийн хүрээ нь (170, 170) байрлал руу шууд харагдана.

Алхам 13: Нүүдлийн тойрог

Нүүдлийн тойрог

Энэ нь жигд хөдөлгөөнийг бий болгох уу? Функциональ дуу чимээ нь бидэнд тусалж чадна. Энэ нь стандарт санамсаргүй байдлаас илүү сайн хэмнэлтэй байдаг. Санамсаргүй байдлаар үүсгэсэн санамсаргүй тоо тасралтгүй байдаг.

Дуудлагын формат:

чимээ шуугиан

Функцийн дуу чимээ нь түүний гаралтын хүрээг тодорхойлж чадахгүй. Хөтөлбөр нь зөвхөн 0 -ээс 1 хүртэлх хөвөгч цэгийн тоог үүсгэж болохыг тодорхойлдог бөгөөд тогтмол оролт нь зөвхөн тогтмол гаралттай байж болно.

[cceN_cpp theme = "үүр цайх"] хөвөх x = чимээ шуугиан (5); хөвөх y = дуу чимээ (5); хэвлэх (x, y); [/cceN_cpp]

Дээрх оролтын параметрүүд 5 тул гаралтын үр дүн ижил байна. Тэгвэл үр дүнг хэрхэн өөрчлөх вэ? Хариулт нь оролтын параметрүүдийг динамикаар өөрчлөх явдал юм. Үнэн хэрэгтээ бид дуу чимээг хязгааргүй дуут зам гэж үзэж болно, оролтын параметрүүд нь "яг одоо" шиг байна. Хэрэв параметр оролт тасралтгүй байвал гаралт тасралтгүй үргэлжлэх болно.

[cceN_cpp theme = "үүр цайх"] хөвөх x, y; void setup () {size (700, 100); x = 0; дэвсгэр (0); } void draw () {x += 1; y = дуу чимээ (frameCount/100.0)*100; цус харвалтгүй (); эллипс (x, y, 2, 2); }

[/cceN_cpp]

Энэ тохиолдолд бид функцийн дуу чимээг илүү сайн ойлгохын тулд Y -ийн өөрчлөлтийн замыг зурна.

• Үүний дотор frameCount хувьсагч нь одоогийн хүрээг авах болно. Өмнөх үеийн өргөн, өндрөөс ялгаатай нь ямар ч өөрчлөлтгүйгээр тогтвортой байдаг. Үүнээс гадна, энэ нь 0 -ээс эхлэн нэмэгдэж эхэлдэг. Хэрэв бид үүнийг анхны дэлгэцийн хөдөлгөөнт графикаар ойлговол энэ нь бидний хандсан хуудсыг харуулдаг (програмын цаг хугацааны ойлголт гэхээсээ илүү).

• frameCount нь бүхэл тоон хувьсагч юм. Өөр бүхэл тоон хувьсагчаар хуваагдсан тохиолдолд програм нь үр дүнг бүхэл тоо болгон боловсруулдаг. Үр дүнгийн нарийвчлалыг сайжруулахын тулд бид 100 -г 100.0 болгож өөрчлөх хэрэгтэй. Хөвөгч цэгийн тоогоор хуваагдвал бид бас хөвөгч цэгийн дугаар авах болно.

• Y тэнхлэгийг 0 -ээс 100 болгон өөрчлөхийн тулд бид дуу чимээний үр дүнг 100 -аар үржүүлэх ёстой. Тиймээс бид санамсаргүй утгын мужийг хянах боломжтой болно.

Таны сайн бодож сэтгэдэг зарим хүмүүс "Бид яагаад frameCountby 100 -ийг хуваах ёстой юм бэ? FrameCount -ийг шууд бичих нь зөв биш гэж үү?" Гэж асууж магадгүй юм. Мэдээж та чадна! Гэхдээ энд функцын дуу чимээний шинж чанарыг илүү сайн харуулахын тулд бид "нэвтрүүлгийн хурд" -ыг удаашруулдаг. Доорх жишээнд гаралтын утга өөр өөр хурдтай өөрчлөгдөж байгааг харуулав.

[cceN_cpp theme = "үүр цайх"] хөвөх x, y1, y2, y3, y4, y5; void setup () {size (700, 500); x = 0; дэвсгэр (0); } void draw () {x += 1; y1 = дуу чимээ (frameCount)*100; y2 = дуу чимээ (frameCount/10.0)*100; y3 = дуу чимээ (frameCount/100.0)*100; y4 = дуу чимээ (frameCount/1000.0)*100; y5 = дуу чимээ (frameCount/10000.0)*100; цус харвалтгүй (); эллипс (x, y1, 2, 2); эллипс (x, y2+100, 2, 2); эллипс (x, y3+200, 2, 2); эллипс (x, y4+300, 2, 2); эллипс (x, y5+400, 2, 2); цус харвалт (80); мөр (0, 100, өргөн, 100); мөр (0, 200, өргөн, 200); мөр (0, 300, өргөн, 300); шугам (0, 400, өргөн, 400); }

[/cceN_cpp]

Та функцын дуу чимээ доторх өөрчлөгдөж буй параметрүүдийг ахиц дэвшил гэж үзэж болно. Параметрийг өөрчлөх нь явцын мөрийг хөдөлгөж байгаатай адил юм. Энэхүү "дуут трек" -ийн хамрах хүрээ илүү том байх үед гаралтын утгын урд болон арын тасралтгүй шинж чанарууд сулрах болно. удаа хурд, 20 дахин хурд). Хэрэв хамрах хүрээ нь тодорхой утгаас том байвал утга үүсгэх үед санамсаргүй байдлаар ажиллах нь том ялгаа байхгүй болно.

Хэрэв та дээрх бүх жишээг ойлгож чадвал шилжин суурьшсан тойрог зурахад илүү хялбар зүйл байхгүй болно. Та мөн дотоод зарчмуудыг ойлгож чадна.

[cceN_cpp theme = "үүр цайх"] хөвөх x, y; void setup () {size (300, 300); x = 0; } void draw () {background (234, 113, 107); x = дуу чимээ (frameCount/100.0 + 100)*300; y = дуу чимээ (frameCount/100.0)*300; цус харвалтгүй (); эллипс (x, y, 50, 50); }

[/cceN_cpp]

Одоо хөдөлгөөн нь эргэдэг гиро шиг илүү сонирхолтой болж байна.

• Функцийн дуу чимээ доторх x хувьсагч яагаад 100 -аас дээш байх ёстой шалтгаан нь тэдгээрийг хооронд нь хол зайд тусгаарлахын тулд юм. Хэрэв функцийн дуу чимээ дэх xy -ийн параметрүүд ижил эсвэл ойролцоо байвал x, y координатын өөрчлөлт ойролцоо байх болно. Энэ нь хөдөлгөөнийг илүү санамсаргүй болгохын тулд юм.

Алхам 14: Хулганаар хөдөлсөн тойрог

Дараа нь бид хамгийн их таалагддаг хоёр хувьсагчтай болно: mouseX ба mouseY. Энэ хоёр үзэл баримтлалыг анх харахад л миний нүд гэрэл гялалзаж байна. Учир нь энэ нь графиктай харьцах хамгийн шууд арга юм. Бид түүнтэй хамт олон сонирхолтой програм үүсгэж болно.

Кейс нь маш энгийн:

[cceN_cpp theme = "үүр цайх"] int x, y; void setup () {size (300, 300); x = 0; y = 0; } void draw () {background (234, 113, 107); цус харвалтгүй (); x = mouseX; y = mouseY; эллипс (x, y, 50, 50); }

[/cceN_cpp]

mouseX нь хулганы x координатыг авах боломжтой бол mouseY нь y координатыг авах боломжтой.

• Эерэг ба сөрөг тэмдгийг өөрчлөх, эсвэл mouseX болон mouseY -г солихыг оролдъё.

Алхам 15: Төгсгөл

Эдгээр танил командуудаас та график хөдөлгөөнийг удирдах боломжтой байж магадгүй юм. Сүүлийн бүлгийн агуулгаар төсөөллөө зөв ашиглаарай, та маш олон сонирхолтой хүүхэлдэйн эффект үүсгэж чадна.

Дараагийн бүлэгт бид илүү олон жишээг харж болно. Үүний зэрэгцээ бид математикийн функцийг ашиглаж, график хөдөлгөөнтэй хослуулах болно.

Энэхүү нийтлэлийг дизайнер Вензигээс авсан болно.

Алхам 16: Харьцангуй уншилт:

Дизайнерын хувьд сонирхолтой програмчлалын удирдамж-Анхны мэдрэгчийг боловсруулж байна

Дизайнерын хувьд сонирхолтой програмчлалын удирдамж-Анхны боловсруулалтын програмаа үүсгээрэй

Энэ нийтлэлийг:

Хэрэв танд тусламж хэрэгтэй бол та [email protected] хаягаар холбоо барьж болно.

Зөвлөмж болгож буй: