Дизайнер үчүн кызыктуу программалоо көрсөтмөсү-Сүрөтүңүздү иштетиңиз (Биринчи бөлүк): 16 кадам
Дизайнер үчүн кызыктуу программалоо көрсөтмөсү-Сүрөтүңүздү иштетиңиз (Биринчи бөлүк): 16 кадам
Anonim

Run! Run! Run!

Программалоо анчалык деле кыйын эмес. Негизги пункт - ритмиңизди таап, аны бирден жасоо.

Бул бөлүмдү окуудан мурун, сиз негизги функция сүрөт тартуу методу менен таанышсыз деп үмүттөнөм, же башыңыздын айлануусун жана башыңыздын эки чоң функциясынан башың айланып калат: орнотуу жана тартуу.

Биз кыймылдуу графиканы түзгүбүз келгендиктен, анимация кантип чыгарылганын билишибиз керек.

Жогорудагы сүрөт абдан жагымдуу көрүнөт жана анимациянын ишке ашыруу принцибин визуалдуу түрдө ачып берет.

Анимация - бул сыйкыр. Бул визуалдык алдоо жөнүндө сыйкыр. Бирок, бул маалымат жарылганда, видео суу ташкыны, биз буга чейин эле көнүп калганбыз. Анимацияны көрүү укмуштуу нерсе экенине таң калгандар аз.

Ушул эле принципти анимацияны программа менен колдонсо болот. Биз ар бир кадрда ар кандай графиканы кантип тартуу керектигин ойлонушубуз керек, жана биз башыбызга бүткөн анимацияны кошуп жатканда программа автоматтык түрдө барактарды ачат. Кийинки бөлүмдө биз негизги графикалык кыймылды кантип ишке ашыруу жөнүндө сүйлөшөбүз. Ага чейин, биз өзгөрмөлөр жөнүндө кээ бир негизги билимдерди билишибиз керек.

1 -кадам: Variable

Variable - бул маалымат үчүн контейнер. Бул программанын ичинде кайра -кайра колдонулушу мүмкүн.

Мисалы:

[cceN_cpp theme = "Dawn"] өлчөмү (500, 500); эллипс (100, 250, 50, 50); эллипс (200, 250, 50, 50); эллипс (300, 250, 50, 50); эллипс (400, 250, 50, 50);

[/cceN_cpp]

Коддун бул бөлүмүндө эч кандай өзгөрмөлөр колдонулган эмес. Ал экранда төрт тегеректи тартат. Биз алардын туурасы жана бийиктиги бирдей экенин таба алабыз. Эми ошол эле болгондуктан, маалыматтарды кайталап киргизүүнү азайтуу үчүн, биз аны көрсөтүүчү белгини аныктай алабыз. Бул белги өзгөрмөлүү.

Бул жерде өзгөрмө кошулгандан кийин код:

[cceN_cpp theme = "Dawn"] өлчөмү (500, 500); int a = 50; эллипс (100, 250, а, а); эллипс (200, 250, а, а); эллипс (300, 250, а, а); эллипс (400, 250, а, а);

[/cceN_cpp]

Биз таптакыр бирдей жыйынтыкты алабыз!

Биз a өзгөрмөсүн аныктагандыктан, биз параметрлерди ыңгайлуу түрдө өзгөртө алабыз. Эгерде биз a = 50ны a = 100гө алмаштырсак, анда тегерекчелердин туурасы менен бийиктиги бирдей 100гө айланат. Ошентип, биз параметрлерди бир -бирден өзгөртүүнүн кажети жок. Variable чындыгында жакшы ойлоп табуу.

2 -кадам: өзгөрмөнүн жаралышы

Өзгөрмөнү колдонуудан мурун, биз билдирүү жасап, анын маалымат түрүн белгилешибиз керек.

int i;

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 -кадам: Variable түрү

Бүтүн маалыматтарды жарыялоону кошпогондо, биз 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.

[/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 = "Dawn"] void setup () {print (1); } void draw () {print (2); } [/cceN_cpp]

Келгиле, бир мисалды карап көрөлү:

Иш баскычын басканыңызда, консол биринчи "1" чыгарат, андан кийин токтотуу баскычын басмайынча же терезени жапмайынча дайыма "2" чыгарат.

Орнотуу функциясындагы кашаанын ичиндеги код бир гана жолу ишке ашырылат. Функциянын чегинде код дайыма жүгүртүлүүдө (демейки ишке ашыруу 60 жолу/секунда).

Бул мүнөздөн улам, орнотуу, адатта, экрандын туурасы жана бийиктиги, фон түсү жана ар кандай өзгөрмөлөрдүн дайындалышы сыяктуу чөйрөнүн касиеттерин инициализациялоо үчүн колдонулат. Биз дайыма графикалык функцияларды тартуу үчүн функцияларды тартууда, дайыма өзгөрүп турган графиканы түзүү үчүн.

9 -кадам: Горизонталдык кыймылда Circle

Функцияны тартуу менен биз анимацияларды түзө баштайбыз. Processing аркылуу анимация эффектин жазуу ыкмасы абдан "ыңгайсыз". Анын эч кандай буйругу жок. Мисалы, ийри сызык кылуу үчүн белгилүү бир форманы белгилеңиз.

Биз бул деталдарды өзүбүз аныкташыбыз керек. Сиз программага ар бир кадрга сөзсүз түрдө кандай графика керектигин айтышыңыз керек.

Ага төмөнкү кодду жазыңыз (Эми муну кол менен жасай баштайлы):

[cceN_cpp theme = "таң"] int x; int y; void setup () {size (300, 300); x = 0; y = бийиктиги/2; } void draw () {background (234, 113, 107); noStroke (); эллипс (x, y, 50, 50); x = x+1; }

[/cceN_cpp]

Коддун бул бөлүмү кыймылдуу чөйрөнү көрсөтөт. Мурдагы жарыяланган x, y өзгөрмөсү координатанын абалын сактоо үчүн колдонулат. Анын тапшырмалары функцияны орнотууда иштейт. Ачкыч коду функция тартууда төмөнкүдөй:

x = x + 1

Муну математикалык теңдеме катары карабаңыз, антпесе абдан кызыктай болуп калат. Бул жерде "=" - тапшырма үчүн символ. Бул оң сандарды сол өзгөрмөгө жайгаштырууну билдирет. Код 50 иштеп жатат дейли, код иштей баштаганда "=" нын оң жагы 50+1ге барабар, б.а. 51. Акыркы жыйынтык x өзгөрмөсүнө ыйгарылат. Ошентип, x мааниси 51 болуп калат.

Программанын жол -жобосун аткарыңыз, функция чүчүкулагы бир жолу иштесе, xтин мааниси 1ге көбөйөт. Ошентип, биз тарткан сайын, тегерек мурунку кадрга салыштырмалуу, пикселдик багытты горизонталдуу түрдө оңго жылдырат. Ошентип, графика мотивдүү болуп калат.

• Код жакшыраак окулушу үчүн, кашаанын ичинде коддун ар бир сабынын алдында белгилүү бир бөлмөбүздү бөлүшүбүз керек. Жана мүмкүн болушунча тегизделиши керек. TAB же бир нече боштукту басыңыз, ал артка кете алат.

• Программада боштуктун жана саптын үзүлүшүнүн символу программага таасир этпейт. Андыктан биз бирди көп же азыраак жазсак туура болот.

Бул жерде аны билдирүүнүн дагы бир жөнөкөй жолу. Өзгөрмө чөйрөнү автоматтык түрдө 1 көбөйтүү үчүн, биз аны төмөнкү форматта жазышыбыз керек.

тегерек = тегерек +1

Абдан ыңгайсыз! Эгерде өзгөрмөнүн аты узун болсо, анда биз көбүрөөк сөздөрдү жазышыбыз керек. Ошентип, биздин жалкоо мурункулар ушундай бир идеяны ойлонушат.

тегерек ++

Бул абдан жөнөкөй эмеспи? Бул автоматтык түрдө 1 көбөйтүүнү билдирет. Ага окшош, - бар, бул автоматтык түрдө 1ди азайтууну билдирет.

Бирок, эгерде биз автоматтык түрдө көбөйүүнүн саны башка 2ге окшош деп үмүттөнсөк, анда башка сөз айкашын колдонууга туура келет.

тегерек += 2

Бул барабар

тегерек = тегерек + 2

Ошо сыяктуу эле, бар - =, /=, *=.

10 -кадам: Кыймылдын багыты

Графиктин кайсы багытка жылышы координатыңызды кантип өзгөрткөнүңүздөн көз каранды. Эгерде ал y = y + 1 деп өзгөртүлсө, тегерек ылдый жылат. Эгерде экөө тең жана у 1 көбөйсө, тегерек оң ылдый ылдый жылат. Эгерде биз аны минус символ деп жазсак, ал карама -каршы багытта жылат.

[cceN_cpp theme = "таң"] int x, y; // Бир эле убакта бир нече өзгөрмөлөрдү жарыялай алат, бөлүү үчүн үтүр колдонуңуз. void setup () {size (300, 300); x = 0; y = 0; } void draw () {background (234, 113, 107); noStroke (); эллипс (x, y, 50, 50); x ++; y ++; }

[/cceN_cpp]

Кыймылдын ылдамдыгы

Функциянын чегинде секундасына демейки 60 кадр эсиңиздеби? Бул чен боюнча жогорудагы тегерек секундуна 60 пикселди оңго жылдырат.

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

x = x + 10

Ал баштапкыга салыштырмалуу ылдамдыкты 10 эсе жакшыртты!

Башка ыкма - кенепти жаңыртуу жыштыгын өзгөртүү. кадр жыштыгы()

Бул функция кенептин берүү жыштыгын өзгөртө алат. 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 = "Dawn"] 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 = "Dawn"] 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); noStroke (); x += int (туш келди (-5, 5)); y += int (туш келди (-5, 5)); эллипс (x, y, 50, 50); }

[/cceN_cpp]

Мурунку кошулган координаттардын мааниси туруктуу. Кокус маанини көбөйтсөк гана, тегерек белгисиз тарапка жылат. Чоң кокустук диапазону менен ал тез -тез титирейт. Кадрлардын ортосундагы маани өзгөргөндүктөн, кыймыл мындан ары жылмакай болбойт. Мурунку кадр (150, 150) турганда, акыркы кадр бир көз ирмемде (170, 170) абалына өтөт.

13 -кадам: Көчүрүү чөйрөсү

Көчүрүү чөйрөсү

Бул жылмакай кыймыл жаратабы? Function ызы -чуу бизге жардам бере алат. Бул стандарттык кокустукка караганда жакшыраак ритмге ээ. Жана туш келди түзүлгөн сандар тынымсыз.

Чакыруу форматы:

ызы -чуу

Функциянын ызы -чуусу анын диапазонун аныктай албайт. Программа ал 0дөн 1ге чейин өзгөрмөлүү чекит сандарын гана түзө аларын аныктайт жана туруктуу киргизүү гана туруктуу чыгууга ээ болот.

[cceN_cpp theme = "Dawn"] float x = ызы -чуу (5); float y = ызы -чуу (5); басып чыгаруу (x, y); [/cceN_cpp]

Жогорудагы киргизүү параметрлери 5 болгондуктан, натыйжалар бирдей. Андан кийин натыйжаны кантип өзгөртүү керек? Жооп - киргизүү параметрлерин динамикалык түрдө өзгөртүү. Чынында, биз ызы -чууну чексиз үн треги катары карай алабыз, киргизүү параметрлери "азыркы убакыт" сыяктуу. Эгерде параметр киргизүү үзгүлтүксүз болсо, анда чыгуу үзгүлтүксүз болот.

[cceN_cpp theme = "таң"] сүзүү x, y; void setup () {size (700, 100); x = 0; background (0); } void draw () {x += 1; y = ызы -чуу (frameCount/100.0)*100; noStroke (); эллипс (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; background (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; noStroke (); эллипс (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; noStroke (); эллипс (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); noStroke (); x = mouseX; y = mouseY; эллипс (x, y, 50, 50); }

[/cceN_cpp]

mouseX чычкандын х координатын ала алат, ал эми mouseY у координатын ала алат.

• Келгиле, оң жана терс символун өзгөртүүгө аракет кылалы, же mouseX жана mouseY менен алмашалы.

15 -кадам: Аяктоо

Бул тааныш буйруктардан сиз графиканын кыймылын жүргүзө аласыз. Акыркы бөлүмдүн мазмуну менен фантазияңызды туура колдонуңуз, сиз көптөгөн кызыктуу анимациялык эффекттерди түзө аласыз.

Кийинки бөлүмдө биз дагы көптөгөн мисалдарды көрө алабыз. Ошол эле учурда биз математикалык функцияларды колдонобуз жана аны графикалык кыймыл менен айкалыштырабыз.

Бул макала дизайнер Вензиден келет.

16 -кадам: Салыштырмалуу окуу:

Дизайнер үчүн кызыктуу программалоо көрсөтмөсү-алгачкы тийүүнү иштетүү

Дизайнер үчүн кызыктуу программалоо көрсөтмөсү-Биринчи иштетүү программаңызды түзүңүз

Бул макала:

Жардамга муктаж болсоңуз, төмөнкүгө кайрылсаңыз болот: [email protected].

Сунушталууда: