Tip:
Highlight text to annotate it
X
>> Дэвід Малан: Давайце напішам праграму з удзелам акно і круг з
круг адскокваючы назад і наперад ад левай і правай
Краю гэтага акна.
Каб зрабіць гэта, давайце выкарыстоўваць Стэнфардскага Партатыўны Бібліятэка, і давайце спачатку
ўключаюць gevents.h так што мы можам слухаць рухаў мышы.
Давайце тады ўключаюць gobjects.h так, каб мы можам аб'явіць такія рэчы, як авалаў або
колы, на самай справе.
А потым давайце ўключым gwindow.h так, каб у нас ёсць графічнае акно для
ўсё.
>> Давайце абвясціць галоўны звычайным спосабам.
І давайце зараз аб'явіць і стварыць асобнік або зарэгістравацца гэтае акно, GWindow -
і мы будзем называць зменную акно -
атрымлівае newGWindow.
І мы будзем адвольна зрабіць яго 320 пікселяў на 240 пікселяў.
>> Давайце наступны асобнік круг.
Але для стварэння асобніка гэтае кола, мы павінны зрабіць трохі больш працы.
У прыватнасці, давайце запоўніць у гэтым крузе так што ўвесь Справа ў тым,
чорны, а не толькі намеціць іх.
GOval -
мы будзем называць яго круг -
атрымлівае newGOval.
Мы змесцім гэты авал пры 0, 110, і мы будзем зрабіць авальныя 20 пікселяў у шырыню і
20 пікселяў высокія - іншымі словамі, дыяметр 20 ці радыус 10.
>> Давайце зараз усталяваць колер гэтага кола быць цытата, канец цытаты, "чорны". Давайце
Зараз усталюеце яго быць запоўненыя , Паказаўшы праўда.
І цяпер, нарэшце, давайце дадамо круг, каб акно наступным чынам, пры гэтым
Апошні дададз ют да першага.
>> Давайце зараз аб'явіць дубль.
Мы будзем называць яго хуткасць.
І некалькі адвольна, скажам Хуткасць гэтага кола будзе
2.0, іншымі словамі, 2 пікселяў на кожную адзінку часу.
А цяпер давайце наўмысна выклікаць бясконцы цыкл.
>> Такім чынам, як зрабіць гэты круг туды і назад?
Ну давайце выкажам здагадку, на працягу гэтага цыклу, які на кожную адзінку часу, мы
будзе рухацца круга трохі біт на аснове яго хуткасці 2 пікселя
за адзінку часу.
Але ўвесь час, мы збіраемся павінны праверыць, калі круг кранае
правы край экрана або злева край экрана, таму што калі так, то мы
гэта трэба, каб падскочыць, так бы мовіць.
>> Як рэалізаваць Паняцце падскокваючы?
Ну, калі мы збіраемся ў 2 пікселя ў Права на адзінку часу, адскочыць
правы край, мы можам проста звярнуць назад што быць негатыўныя 2 пікселяў на адзінку
часу, што зводзіць хуткасць.
Так бо, падскокваючы адносна проста.
>> Давайце спачатку перамясціць круг, гэта шмат пікселяў ўздоўж восі х, да гэтага
многія пікселяў ўздоўж восі у.
Іншымі словамі, мы не хочам, каб гэта перамяшчацца ўздоўж восі Y. наогул.
Мы толькі хочам, каб прыйсці ў норму і наперад налева і направа.
>> І давайце цяпер праверыць на працягу гэтага цыклу, калі х-каардыната круга плюс
шырыня круга больш або роўна
Шырыня акна -
Іншымі словамі, калі месцазнаходжанне гэтага кола плюс шырыня круга
Сам цяпер за край вокны, мы б
лепш звярнуць назад нашу хуткасць -
хуткасць атрымлівае адмоўную хуткасць, тым самым гартаць станоўчага на
адмоўнае ці адмоўнае да станоўчага.
Але што калі кола рухаецца ад справа налева і, такім чынам, яна трапляе
левы край?
Іншымі словамі, калі х-каардыната круг цяпер менш або роўная
0, давайце ісці наперад і зноў інвертаваць наш хуткасць.
>> Дык чаму ж я не дадаў у шырыня круга гэтым
Час, як і раней папярэджваў?
Ну, майце на ўвазе, што каардынаты аб'екта вызначаны
яго верхнім левым куце, не яго сярэдзіне.
І таму, калі круг рухаецца ад злева направа, мы павінны праверыць
Ці правы край круг прайшоў
правы край акна.
Такім чынам, каб высветліць, што гэта такое, у нас ёсць каб атрымаць каардынаты х з кола
плюс шырыня круга перамясціць самі з верхняй левай
кут, эфектыўна, каб ў верхнім правым куце.
Калі круг рухаецца справа злева, між тым, мы не павінны
важдацца з такой Акрамя таго, паколькі верхні левы кут акружнасці
ўжо значэння, мы будзем атрымаць ад кароткатэрміновага х.
>> Давайце цяпер рухацца мяч.
Давайце зараз захаваць, скампіляваць і запусціць гэты Праграма, зрабіць адскок,. / Адскок.
І ў нас ёсць праграма.
>> Але круг рухаецца так па-чартоўску хутка, гэта амаль немагчыма ўбачыць, што
адбываецца на самай справе.
Так што давайце даволі праграму сілком націснуўшы на крыжык у правым верхнім
кут тут.
Давайце зараз вернемся ў зыходны код і запаволіць ход падзей няшмат.
>> Іншымі словамі, у гэтым бясконцы цыкл, а не проста і рух, і
рухацца і зноў, да млоснасці, давайце затрымлівацца ўсяго за некалькі мілісекунд
перш чым прыступіць да рухацца зноў.
У прыватнасці, пойдзем на дно з бясконцага цыклу тут і проста
паўзу, скажам, 10 мілісекунд на кожнай ітэрацыі.
Давайце зараз перакампіляваць і паўторна запусціць адмоў.
І зараз мы бачым нашмат больш разумным рэалізацыя, дзе мы можам убачыць
Круг сапраўды падскокваючы на злева і справа краю.