background top icon
background center wave icon
background filled rhombus icon
background two lines icon
background stroke rhombus icon

Скачать "Практика программирования на Python 3, лекция №9"

input logo icon
Теги видео
|

Теги видео

мфти
фопф
информатика
Субтитры
|

Субтитры

subtitles menu arrow
  • enАнглийский
Скачать
00:00:02
садитесь пожалуйста нас 9 лекция и но
00:00:11
уже опять же скорее формат мастер-класса
00:00:13
не столько мне хочется вам много
00:00:15
рассказывать сколько хочется показывать
00:00:18
но немножко рассказы еще будет прошлый
00:00:23
раз в прошлый раз им procos рассказывал
00:00:28
по за прошлый раз я рассказывал про курс
00:00:31
и студентов уж не помню я точно помню
00:00:35
что они факторинг мы делали
00:00:39
объектно ориентирована как раз прошлый
00:00:41
раз мяч переделывали запихивали класс
00:00:44
болт делали вот я точно помню вот но
00:00:51
ценность
00:00:52
объектно-ориентированного
00:00:53
программирования не только в том что оно
00:00:56
позволяет всю сложность работы объекта
00:00:59
дауд запихнуть под какую-то крышку а под
00:01:01
некий капот да и тем самым факторизовать
00:01:06
отделить эту сложность в отдельную
00:01:08
сущность одна из важнейших задач по
00:01:13
организации работы программиста в
00:01:16
организации программного кода именно
00:01:18
состоит в том чтобы всю сложность
00:01:22
разбросать на какие-то отдельные
00:01:23
составляющие чтобы большой более-менее
00:01:26
большой проект можно было поддерживать
00:01:29
читать и понимать вот короче ценность
00:01:36
а.п. не только в том что оно позволяет в
00:01:39
класс запихнуть данные и код сделать
00:01:43
инкапсуляция данных вместе с кодом
00:01:45
которые обслуживают эти данные а еще и в
00:01:48
том что
00:01:51
объектно-ориентированное
00:01:52
программирование прекрасно превращается
00:01:54
в объектно-ориентированное
00:01:55
проектирование как инструмент собственно
00:01:59
придумывания и в принципе в прошлый раз
00:02:02
когда я стал расписывать
00:02:05
атрибуты и методы у класса мячик до угла
00:02:09
собой то вы уже видели я специально делал это
00:02:12
не сразу там на компьютере а я взял и
00:02:14
нарисовал до взяла нарисовал вот такой
00:02:16
прямоугольничек в котором я написал вот
00:02:19
у меня есть класс ball вот у него есть
00:02:22
какие-то свойства
00:02:24
до атрибуты вот у него есть какие-то
00:02:29
методы я сейчас не буду даже пытаться
00:02:31
повторяться до не надо сейчас это что
00:02:38
кроме вот этого вот есть есть
00:02:42
взаимоотношения между классами в
00:02:48
на прошлой неделе в прошлом работал на
00:02:51
работе у вас уже появились элементы опия
00:02:53
собственно там была пушка то которую
00:02:56
нужно было начать переписывать чтобы там
00:03:00
та заработала это заработало с этой
00:03:03
пушкой вы будете работать еще еще две
00:03:08
лапы
00:03:09
то есть это недели и еще следующая
00:03:12
неделя те у кого вылетает понедельник и
00:03:14
говорю в любом случае делаете вот вам
00:03:17
нужно будет расширять добавлять
00:03:21
функциональность постепенно мы сейчас
00:03:24
выходим на тот уровень когда вы должны
00:03:27
сами начать предлагать
00:03:29
и менять проект свою сторону вы хотите
00:03:32
чегото
00:03:33
потому что осталось по сути лабораторная
00:03:36
работа пушка и такая есть вот артиллерия
00:03:40
на ни одна неделя отводится может быть
00:03:42
даже матушке откусим чтоб артиллерии
00:03:44
дачу и больше она уже по сути есть такая
00:03:46
модернизированная пушка
00:03:49
вот и дальше все дальше начинается ваш
00:03:52
семестрового проект который вы должны
00:03:54
сами вести вот так вот но все-таки
00:03:58
групповую работу видимо мы поставим на
00:04:01
через через неделю потому что сейчас еще
00:04:04
пока вам надо самим в своем проекте
00:04:07
повариться и я ничего сегодня не буду
00:04:10
говорить про организационную
00:04:12
составляющую
00:04:13
так вот фишка в том что оказывается вот
00:04:15
эти вот рисуночки которые я рисую
00:04:17
воды и люди я за коммуникацию но сейчас
00:04:22
коммуникация должны как вертикально так
00:04:26
вот есть до классы разные и вот
00:04:31
представьте себе что я эти 2 класс
00:04:33
несколько классов возьму и нарисую
00:04:35
рядышком просто на листочке или на доске
00:04:37
и вот я например возьму и сделаю как там
00:04:40
назывался этот самый канун
00:04:42
пушка оган там называется банковская
00:04:45
будет gun ко мне разница пусть будет gun
00:04:50
ну вот объект точнее объект класс в
00:04:54
первую очередь да класс пушек дал мне
00:04:57
экземпляр один этой пушки по крайней
00:05:01
мере в текущей версии да но вы же
00:05:03
понимаете помните какие мячик этот раз и
00:05:05
размножил как только это было завернуто
00:05:08
в класс мне создать много экземпляров
00:05:10
вообще не представил никакой службе а в
00:05:12
я уж список на создавал и они все летают
00:05:16
в принципе с пушками это тоже самое
00:05:18
произойдет вот и вот я тоже распишу
00:05:22
некие свойство далеки и методы их будет
00:05:26
не так уж и мало давайте сейчас про
00:05:28
другой даже вещь обсудим а есть ли
00:05:31
какое-то какой-то взаимоотношение между
00:05:33
ними вот самое простое взаимоотношения
00:05:39
которое может существовать называется
00:05:41
ассоциация ассоциация она рисует просто
00:05:45
вот палочка соединила все вот тебе и
00:05:47
нарисовал ассоциацию но самые
00:05:49
примитивные черта мы проектируем
00:05:51
представьте себе да это живая совершенно
00:05:53
ситуацию
00:05:54
choco не 2 класса а у него этих классов
00:05:57
то есть он выделяет сущности из
00:05:58
предметной области проч и вообще был
00:06:00
какой бизнес
00:06:01
логика у нас будет да и он начинает
00:06:03
делать объектно-ориентированный анализ
00:06:04
он а так это объект это объект это
00:06:06
объект так а чё вообще чем связано и вот
00:06:10
есть такая вещь как ассоциация
00:06:14
соответственно у меня пушка да и
00:06:18
мячик до мишень мячик будет у меня в
00:06:22
качестве мишеней он должен быть как-то
00:06:24
хотя нет подождите мишень мишень еще
00:06:29
неизвестно что будет мишенью да я в
00:06:31
принципе могу нарисовать здесь 3 класс
00:06:34
да потому что ну наверно пушка она
00:06:36
стреляет до должен быть создана пушка
00:06:38
снаряд и мишень да я назову ее здесь как
00:06:42
таргет таргет я честно не знаю как там
00:06:46
сейчас будет это нужно посмотреть в
00:06:48
проект так как это лучше организовать
00:06:51
еще но я вижу это пока так до gumball
00:06:55
таргет ну правда скорее
00:06:59
ball надо было бы как-то назвать не кучу
00:07:02
мячик мяч а как то типа
00:07:04
снаряд как снаряд можно назвать ушел
00:07:08
например да наверное но можно назвать по
00:07:12
крайней мере нет как можно назвать
00:07:14
снаряд меня в угол в голове нет сразу
00:07:21
мысли обычных а как бабули добавят можно
00:07:26
назвать да действительно
00:07:30
ну например хорошо но я пока оставлю
00:07:33
болт короче дело вот чем у меня пушка-то
00:07:38
смешение не взаимодействует напрямую
00:07:40
если честно все таки нет нет прямой
00:07:44
ассоциации пре
00:07:45
представьте себе пушка дергает метод
00:07:48
star гита или таргет дергает какой-то
00:07:51
метод у пушкина странно до этих таргет
00:07:54
of там много не себе где то там на карте
00:07:56
отображаются да есть возможность их там
00:07:58
шоу может быть у них есть ну допустим
00:08:01
что у них есть метод show
00:08:02
допустим у них есть метод move для у
00:08:05
этих торги тов переместиться да они там
00:08:07
будут летающие например условно что там
00:08:10
происходить с ними будет укола там
00:08:13
естественно было кстати тоже должен быть
00:08:15
исчез нашим метод какой-то там типа шел
00:08:17
отобразится да да и то если сейчас не
00:08:19
разделяю на отображение вот физики
00:08:22
модели до модели
00:08:24
собственно поведения там тоже должен
00:08:26
перемещение соответственно но еще раз
00:08:30
фишка в том что у меня есть ассоциация
00:08:33
вот она да фактически до пушка
00:08:39
выстреливает снаряд болит какой-нибудь
00:08:44
да и соответственно а этот самый болит
00:08:47
но я все таки я ушел по уму называл
00:08:48
раньше я не знаю как он здесь он
00:08:51
называется у нас как-нибудь или нет
00:08:55
таргет не называется ball здесь в этой
00:08:58
версии мне не нравится то как сейчас ли
00:09:00
здесь проект делать будем сейчас
00:09:01
подправить его вот короче я не буду щас
00:09:04
исправлять название хотя на мне не
00:09:06
нравится на самом деле чем раньше вы
00:09:08
исправите название на адекватно тем
00:09:10
лучше потому что потом она будет
00:09:12
многократно в проекте встречаться быть
00:09:14
сложнее его исправлять вот выдернуть и
00:09:17
переименовать вот короче у меня вот
00:09:22
опосредованная вот такая вот ассоциация
00:09:23
возникает вопрос вот в чем а есть ли
00:09:27
направленность ассоциации
00:09:29
ну короче говоря вот у меня и таргет вот
00:09:33
у меня летят эти самые баллы до мячики
00:09:37
из пушки летят
00:09:39
а мячики эти они они должны проверять
00:09:44
попадание в таргет и или торги ты должны
00:09:47
пристально реально у меня вот есть
00:09:48
список
00:09:50
летящих снарядов есть список мишеней у
00:09:53
меня я должен пробегаться мишень должна
00:09:57
пробегаться по списку снарядов и
00:09:59
говорить актива попала ему полый как или
00:10:02
снаряды должны дергать метод мишени и
00:10:05
провели там чек k-lite например да да
00:10:09
кто кого вот есть такая вещь как
00:10:14
направленность ассоциации то есть у нас
00:10:17
пушка очевидно что она у нас по сути
00:10:20
порождает это был на пол именно
00:10:23
порождает ну как объект появляется мы же
00:10:25
вряд ли будем этот болт хранить в
00:10:28
загашнике у пушки там уже созданные
00:10:30
объекты где-то валяются странно да
00:10:32
скорее этот объект мы будем порождать в
00:10:34
момент выстрела логично да
00:10:35
соответствовало на что порождает
00:10:39
да и более того то есть я могу
00:10:43
нарисовать вот такую стрелочку до в
00:10:45
которой будет отображаться
00:10:47
направленность этой ассоциации в то же
00:10:50
время пол не принадлежит самой пушки не
00:10:54
является ее драк как сказать
00:10:56
представителем к частным случаем
00:10:59
он не просто ну вот класса между
00:11:03
которыми есть ассоциация здесь сложнее
00:11:09
эту направленность выбрать может даже
00:11:13
случиться такая ситуация мне очень жаль
00:11:16
что я нарисовал не совсем удачно
00:11:18
вплоть до того что перерисовать для
00:11:20
большей понятности
00:11:22
хотя мне жалко времени что хочу сказать
00:11:30
что у меня направленность можно
00:11:32
реализовать такую
00:11:34
до что у меня соответственно как бы
00:11:37
поражают да то есть они уничтожают на
00:11:41
попадают
00:11:46
ну и соответственно при таком проект я
00:11:49
проектирую это мои мысли пока про эти
00:11:52
объекты и при таком подходе меня что из
00:11:55
какого-то метода
00:11:57
там движение поло или там не знаю чек
00:12:00
таргет там как-то еще там да я должен
00:12:03
буду перебирать эти торги ты пытаться
00:12:05
там проверять попадаю не попадаю понятно
00:12:09
вариант 2
00:12:11
почему нет можно взять и соответственно
00:12:14
попадают вся как бы да но смысле
00:12:16
поражаются да они бывают ранимыми до
00:12:20
поражаются терпят поражения and что
00:12:24
поражаются хоть это не совсем про ту
00:12:26
поражаются envy сделать ассоциацию такую
00:12:29
то есть они будут перебирать о нет ли
00:12:31
какой то какого-то снаряда который
00:12:34
сейчас был в меня попал как мыльный
00:12:37
шарик вот который готов в час лопнуть
00:12:40
можно так запрограммировать а почему нет
00:12:44
можно и так запрограммировать хотя
00:12:46
наверное логичнее все-таки было бы туда
00:12:49
но что интересно возможно и третья
00:12:53
ситуация во первых по принципу keep it
00:12:56
simple stupid
00:12:59
можно вообще не делать оставить кусочек
00:13:06
в чисто структурная парадигму то сделать
00:13:10
функцию игры
00:13:12
функцию игры которая и будет заниматься
00:13:15
проверкой попадания мячика в мишень
00:13:19
можно это сделать можно я еще раз говорю
00:13:22
мне очень неудобно я сейчас кусочек прям
00:13:25
хочу стереть хотя бы чтобы у меня
00:13:26
чуть-чуть мест освободить она мне сейчас
00:13:28
нужно рядом с этой линии неудачно
00:13:32
нарисовал в любом случае свойства там
00:13:37
методы короче не суть даже важно важно
00:13:41
то что а вот эта ассоциация она может
00:13:44
быть ненаправленный если взаимоотношение
00:13:47
между классами вынесена в отдельную
00:13:49
функцию которая занимается их ассоциация
00:13:54
она дергает у этого координаты она
00:13:57
дергает у этого
00:13:59
один атом берет их там чекай но в чем
00:14:02
минус дело в том что вся сложность их
00:14:07
взаимоотношений друг с другом будет
00:14:11
спрятана внутри этой функции
00:14:13
то есть получать а мы хотели когда мы
00:14:16
создавали вообще класс и говорил про
00:14:19
ответственность наша класс отвечает за и
00:14:22
вот вопрос а кто должен отвечать за вот
00:14:27
этот достаточно непростую возможно
00:14:29
задачу проверки на попадание да ну и
00:14:32
собственно вызова на уничтожение где
00:14:35
должна быть спрятана эта сложность кто
00:14:37
ее инкапсулирует в себе эту ответственность
00:14:40
понимаете очень интересный вопрос почему
00:14:45
он особенно сложен да потому что у меня
00:14:49
может быть много разных вариантов
00:14:52
снарядов то есть я рисую 1 класс bull а
00:14:56
на самом деле у меня этих классов может
00:14:58
быть много и пушка может порождать ни
00:15:01
один вариант снаряда а много вариантов
00:15:03
снарядов да и мишеней
00:15:08
может быть довольно много разных так вот
00:15:11
давайте вот эту вещь и произнесу до что
00:15:14
вот эта вся их ассоциация может быть
00:15:18
вынесено в отдельный класс ассоциации
00:15:23
вполне может быть та которая будет
00:15:27
заниматься именно вот взаимоотношениями
00:15:30
то есть он будет получать конкретный
00:15:32
экземпляр мячика и конкретно мишень для
00:15:34
того чтобы проверить совпадают не
00:15:37
попадают чтобы соответственно у мишени
00:15:40
отнять столько the halls а сколько там у
00:15:43
этого вот проверять есть ли у него шилды
00:15:45
против этого вида балла совпадает ли у
00:15:48
них цвет на зеленый шарик попадает
00:15:51
только по зеленым мишени
00:15:52
ли что то еще да ты как это сложность
00:15:54
взаимоотношений она может быть спрятана
00:15:56
внутри этого не знаю кола и джокера
00:16:01
условно и опять
00:16:05
можно найти какие-то аргументы за
00:16:07
какие-то против вот этого решения да то
00:16:10
есть условно я назову его до k-lite
00:16:13
checker вот тем не менее да можно
00:16:18
придумать ограничить его ответственность
00:16:20
какой-то задачей то чтобы он отвечал за
00:16:23
конкретную вещь и она соответствовала
00:16:25
чтобы не получалось так что он какие-то
00:16:27
внутренние вещи слишком глубоко лезет
00:16:30
туда слишком глубоко лезет туда нос сама
00:16:34
то что мы можем не написав ни одной
00:16:36
строчки на языке программирования ни
00:16:39
одной вот так вот на листочке обсуждать
00:16:42
архитектурные вопросы это уже очень
00:16:44
здорово правда и можно если есть
00:16:49
некоторый опыт
00:16:50
программирование то можно как бы
00:16:53
представлять себя какие последствия это
00:16:56
возымеет
00:16:58
еще одну вещь я тоже сейчас нарисую я
00:17:01
сотру свойства и методы
00:17:02
вот там вот прямо чистая вот классно
00:17:05
пишу себе все да вот без прямоугольничка
00:17:08
мы все и вот тут некой ассоциация я
00:17:10
уберу k-lite checker сейчас потому что я
00:17:14
его не буду реально реализовывать сейчас
00:17:16
у меня будет вся сложность спрятано
00:17:18
внутри ball-а направленность этой
00:17:20
ассоциация будет вот туда то есть он
00:17:22
будет поражать смысле попадает попадает
00:17:28
вот я сказал про то что возможно много
00:17:33
разных вариантов снарядов а как мне это
00:17:36
фактически отобразить то есть делать то
00:17:39
что пушка это должно стрелять снарядом в
00:17:42
любом случае значит должно быть дико
00:17:44
базовая ассоциация но вот порождает
00:17:47
конечно я могу предстать с комбинаторная
00:17:52
сложность да я нарисую здесь у кроме
00:17:54
болт там несколько бокс
00:17:57
овощей коробками кидается еще очень вы
00:18:02
сейчас тут нарисуем rocket лазер да у
00:18:05
меня соответственно возникнут раз-два и
00:18:08
еще что то и снова туда 1 и 2
00:18:12
она у меня картинка резко усложнится и
00:18:14
количество линий которым это все
00:18:16
порождено но простуду умножится
00:18:19
но я могу сделать следующий среди всех
00:18:21
всех всех снарядов
00:18:23
среди всех всех всех всех всех снарядов
00:18:26
я могу взять и да ну вычленить глобально
00:18:31
сказать но это глобально вообще снаряд
00:18:34
может быть не был да я все-таки назову
00:18:38
shell и у меня этих вариантов шалав
00:18:45
может быть много разных классов снарядов
00:18:50
мячики коробки ракеты лазеры да и вот я
00:18:55
беру и говорю вот у меня есть болт да а
00:18:58
есть какой-нибудь давайте ежедневно
00:19:04
лазер допустим га лазер пуска будет
00:19:07
laser gun смысле таща это самый лазер
00:19:09
рэй
00:19:11
лазер рэй ну они как-то не приклеены не
00:19:18
понятно что они являются частным случаем
00:19:21
снаряда и это дело отражается следующим
00:19:25
образом я говорю эти ребята да они у
00:19:29
меня являюсь частным случаем его его
00:19:36
частном случае и я рисую я только сейчас
00:19:40
это направление стрелки могу путать но
00:19:42
по-моему я правильно рисую да и и
00:19:44
по-моему не закрашиваю вот она просто
00:19:47
вот так вот рисуется не не уверен если
00:19:50
честно но фишка в том что вот эти а вот
00:19:54
это отношение это не ассоциация
00:19:57
это другое отношение это как раз такая
00:20:01
ситуация что это частный случай снаряды
00:20:04
конкретная реализация вот этого условно
00:20:07
абстрактного дошел ну какая-то там
00:20:10
боеприпас понятно непонятно реализация
00:20:17
как абстрактного класса но являющиеся
00:20:21
классом то есть я смогу делать объекты
00:20:23
типа bool много разных до объекта типа
00:20:26
lazer добрей тоже много их могу делать и
00:20:29
шпуля тех туда
00:20:31
сюда эти объекты будут мне жить летать
00:20:34
двигаться но они будут являться частными
00:20:38
случаями этого шоу это может быть
00:20:43
сформулирована следующим образом что у
00:20:45
меня есть родительский класс и дочерние
00:20:50
класса у меня возникает
00:20:53
иерархия классов иерархия более того у
00:20:59
меня дочерние классы могут наследовать
00:21:04
свойства и методы родительского класса и
00:21:08
это тоже очень здорово потому что тогда
00:21:11
если будет наследование то есть просто
00:21:14
как код программы который написал для
00:21:16
шейла он будет и там и там то у меня
00:21:19
получается что у меня прям классно я не
00:21:27
придется переписывать этот программный
00:21:29
код понятно то очень здорово
00:21:32
наследование это в том числе механизм
00:21:34
сухого программирования до утра питер
00:21:36
сел
00:21:37
это но есть такая фишка очень важно
00:21:41
грамотно продумывать абстракцию чтобы не
00:21:44
возникало что у вас там таргет но он там
00:21:47
чем-то похож на гана давай я сделаю
00:21:49
таргет это самое частным случаем не так
00:21:53
это рисует это дело вот так вот да часто
00:21:55
на случае гана
00:21:59
понимаете в этом безумии
00:22:01
есть принцип я сейчас не буду
00:22:06
углубляться в это дело постановочный
00:22:08
критерий барбар рисков на
00:22:11
но смысл в том что должна быть
00:22:14
правильная абстракция да то есть это
00:22:17
частные случаи
00:22:21
вот этого класса
00:22:24
причем они не должны требовать ничего
00:22:27
дополнительного исходя из того что
00:22:31
требовал их родительский класс сейчас
00:22:34
давайте еще раз говорю не будем уходить
00:22:35
слишком глубоко ваке детали вот я
00:22:38
немножко порисовал до
00:22:39
стало понятно что такое иерархия да я
00:22:42
произнес слова наследовали кстати может
00:22:45
вполне быть 5 наследник нас наследник
00:22:48
наследника у дочернего может быть
00:22:49
дочерней может быть какой-нибудь там
00:22:51
грэвити был вполне может быть что болт
00:22:55
он не обязательно грэвити балда умрете
00:22:58
болтам модифицированное движение дал
00:23:00
по-другому двигаться я смог частный
00:23:05
случай шарик потому что все остальное он
00:23:06
ведется точно также как шариком
00:23:08
отскакивают условно a loser не
00:23:11
отскакивает улетает так мы с вами в
00:23:18
прошлый раз это дидкот не трогали это
00:23:21
тот код который у вас у всех был поэтому
00:23:25
я сейчас отстающий от вас вот это gun
00:23:28
недоделанный ну во первых я вам говорил
00:23:32
о том что здесь есть такой дядечка так
00:23:34
вот его можно попросить вот здесь взять
00:23:36
сказать слушая повернись в полоборота
00:23:38
следит только за синтаксисом не делала
00:23:41
никаких инспекций ножа инспектор
00:23:43
приехала нам только ошибки в этой
00:23:46
ситуации он будет показывать только
00:23:48
какие-то там это же ошибок не вижу
00:23:52
ничего не показывают ошибки на самом
00:23:54
деле есть ну короче я его повернувшись я
00:23:57
очень люблю когда
00:23:58
интерпретатор в данном случае это не
00:24:00
просто интерпретатора среда разработки
00:24:02
она делает детальной инспекции помогает
00:24:06
увидеть многие вещи которые приведут к
00:24:09
ошибкам неминуемо на самом деле но там
00:24:12
красное более того здесь справа на вот
00:24:16
этой вот
00:24:17
шкале я могу увидеть собственно от
00:24:20
краску и прям вот вот прямо серьезно
00:24:24
регионами еще объяснять что не так риму
00:24:27
фриду на
00:24:28
parenthesis уберите ненужные скобки
00:24:32
ладно давайте начнем с этих самых с
00:24:37
ошибок мне не нравится то как тут
00:24:42
названа класса класса папе 8 должно
00:24:44
начинаться с большой буковки .
00:24:52
такуми режим мимо
00:24:59
дальше класс gun
00:25:05
значит дальше дальше дальше класс таргет
00:25:16
ой сейчас секундочку
00:25:21
close to get
00:25:23
так что теперь еще не так но он говорит
00:25:26
мне что
00:25:27
зачем вас здесь стоят пустые скобки
00:25:29
действительно незачем что еще не так вот
00:25:32
красные ошибки они требуют конечно же
00:25:34
первич то есть как я не могу это делать
00:25:36
на самом деле комитете
00:25:37
ну здесь простая штука у меня здесь пока
00:25:40
функция заглушка стоит у меня даже
00:25:42
re-therm fall состоялся
00:25:43
неправильных мужчин вот я сейчас
00:25:45
быстренько исправил так смотрим вот у
00:25:49
ball все более-менее да у него красных
00:25:52
ошибок таких не видно да ну чё там
00:25:56
зелененьким подчеркивает он сетка артс
00:25:58
нука нука нука нука хит тест подсчёта
00:26:01
подчерк пока не throw a gun красным
00:26:04
подчеркивать чем дело здесь потому что
00:26:08
новые атрибуты создавать в конструкторе
00:26:10
азия здесь их создаю на уровне всего
00:26:12
класса ну как как у в этом m2 power of
00:26:15
что такое кстати в 2 power интересно это
00:26:18
не помощью такое а
00:26:25
что что я щас .
00:26:30
я никак не привыкну что у меня режим
00:26:33
мимо стоит здесь так ну и собственно там
00:26:42
нужно еще и создавать линию до тот
00:26:45
который будет отображать пушку
00:26:48
так замечательно конф так чирк такой can
00:27:02
fix me don't you hold us этот да тут нас
00:27:06
конечно не так мало видимо перед фарту
00:27:09
старт почему фарту отпускании кнопки
00:27:16
мыши ball
00:27:18
new богу да сейчас еще раз исправляем
00:27:21
пока и сейчас исправлю красные ошибки
00:27:24
чтоб это дело в принципе завелось потом
00:27:26
будем дочищать функциональность таргет
00:27:29
ну как видите здесь уже да для того
00:27:32
чтобы написать такой код тоже приходится
00:27:34
программного кода написать немало и в
00:27:36
нем можно начать путаться если не
00:27:39
структурировать но тем не менее он
00:27:40
структурирован неплохо и еще довольно
00:27:43
ценно то что можно сворачивать это тоже
00:27:46
позволяет припрятать сложность вы на его
00:27:48
не смотрите его
00:27:49
до поры до времени то это дело вникать
00:27:51
не надо или оставить только то есть вот
00:27:54
метод раз и все содержимое метода вы
00:27:56
спрятали
00:27:57
тоже бывают очень удобно ладно я хотел я
00:28:01
хотел что же делать конструктор и нет сил да
00:28:09
так и тут и там шесть строчек этих нужно
00:28:13
сдвинуть вправо до сел в points сэл лив
00:28:20
равно 1 так don't work out of an object
00:28:24
is created in ukraine овал new sales
00:28:30
points над
00:28:32
это видимо будут поинты написано так
00:28:35
инициализацию новой цели вся на винт y
00:28:47
красно еще смотрим какие ошибки он еще
00:28:50
видит так t1 равно таргет значит у нас
00:28:54
вот здесь вот дев new green да то есть
00:28:57
меня здесь есть функция которая создает
00:29:00
новую игру и эта функция new game она
00:29:03
вот повешена на таймер root автор 750
00:29:07
new game то есть она крутится да опять
00:29:10
же скорее не и юга и наверно надо
00:29:11
назвать ее вот если уж она крутящаяся
00:29:15
функции наверное стоит назвать ее
00:29:18
взгреем сайкл как-нибудь вот так сейчас
00:29:24
еще раз смотрим global gant т1 кто такой
00:29:28
ты один таргет screen 1 aa волос давно я
00:29:38
не видел этот код собственно год не виде
00:29:42
объектов котла дна давайте еще
00:29:44
исправляем пока крупные ошибки так что
00:29:54
здесь мы глуп на это понятно rutman лук
00:30:01
так new game и ушли в mail.ru
00:30:04
а где инициализация а инициализация
00:30:08
где-то тут так ну мне не нравится что у
00:30:13
меня не цели зации тут есть кусочек
00:30:17
который создает чего-то да и тут есть
00:30:20
кусочек который тоже что-то создает я уж
00:30:24
хотел бы чтобы у меня было одно место
00:30:26
где все создается по крайней мере да вот
00:30:29
я сделаю функцию который будет
00:30:31
называться как например на самом деле
00:30:38
она скорее будет
00:30:39
и нет но тем ни менее
00:30:43
global мне понадобится глобально кто
00:30:45
корневой виджет потому что я на нем буду
00:30:48
создавать и холст он будет один на самом
00:30:52
весь модуль
00:30:53
поэтому у меня будет глобальная
00:30:55
переменная так ну и соответственно эти
00:30:57
вот перемешки и рабой что случилось там
00:31:14
интересно что не так
00:31:19
а
00:31:27
перестал реагировать на меня не понимаю
00:31:31
в чем дело а не у меня на клавиатуру еще
00:31:36
раз а стоп часы кучка может клавиатура
00:31:38
тупо выскочил нет ни клавиатура что-то
00:31:45
слетела так ладно
00:31:55
прошу прощения что там мемом или
00:31:57
emulation дан так
00:32:15
честно в чем дело я не так нажал на
00:32:20
мышку реагирует клавиатура померла
00:32:22
и кажется самолете видимо все таки что
00:32:25
то там еще раз опустим тебя не блудника
00:33:05
какой то режим видимо не могу ничем
00:33:08
делаем вовсе норме все все так пять
00:33:17
строчек вправо все все окей так то что
00:33:27
же на что мне так есть рут фрейм зачем
00:33:30
мне фрейм интересно а видимая кнопки
00:33:32
хотел там на этом примере препод фреймом
00:33:34
ставить так холст называется конго так
00:33:38
что его еще и устраиваться здесь его не
00:33:40
устраивает что у меня нет пустой строки
00:33:42
дополнительный так ну чтож смотрим на
00:33:50
помарки смотрим на помарки что он нет
00:33:58
instance это любит x define out сайт и
00:34:01
нет так смотрим смотрите как
00:34:04
действительно у меня ни у таргет должно
00:34:08
по-хорошему происходить но явно не здесь
00:34:12
ну то есть оси икс игрек у меня не
00:34:14
должно создаваться по идее здесь они
00:34:17
могут меняться датами инженеры таргет
00:34:20
сама вот модель она мне не очень
00:34:22
нравится эта орбита что как он
00:34:25
порождается new торгует на самом деле
00:34:31
нет у меня и сейчас учитываю код который
00:34:34
писал я не про не решит я писал но
00:34:37
по-моему я писал этот код все-таки два
00:34:40
года назад кажется его писал но год
00:34:42
назад я посмотрел еще раз вообще вот это
00:34:45
вот ситуация с каким-то устаревшим кодом
00:34:48
который еще и не работает она на самом
00:34:51
деле довольно типично и я вместо того
00:34:53
чтобы спроектировать с нуля и писать я в
00:34:55
нем ковыряюсь еще большой вопрос а что
00:34:57
быстрее но честно мой опыт подсказывает
00:34:59
что на писателя все-таки будет тоже ним
00:35:02
не быстро поэтому лучше и поковыряюсь
00:35:05
тем более что он отвращение в ней яркого
00:35:07
не вызывают до явно и специальной огрехи
00:35:10
наброс и на специальном явные да у
00:35:12
первого класса есть конструктор 2 3 нету
00:35:15
догадайтесь почему да чтобы вы могли
00:35:18
посмотреть да на 1 класс и сделать во
00:35:21
втором-третьем так же как в первом в
00:35:24
первом есть документ строки во втором в
00:35:26
третьем их на даче во втором чё то еще
00:35:29
есть а в третьем их нет совсем ну ладно
00:35:32
совсем почти нету так короче попадание
00:35:39
шариков цель ой так собрались конф
00:35:48
cowards
00:35:49
таргетинг ты целью не зависит от
00:35:52
положения мыши это у нас угол на нужно
00:35:54
по идее работать creed line
00:36:04
я не вижу прям ярких ошибок я попробую
00:36:12
запустить какие-то как есть да я понимаю
00:36:15
что вряд ли ты взял заработает сделал
00:36:18
запустим давай контур shift of 10 тогда
00:36:26
кинув is not be fine ну покажи чё там у
00:36:31
меня есть кусочек который отдельно еще
00:36:34
вынесен да так ну давайте идти пять
00:36:37
строчек отсюда дали днем притащим их
00:36:41
туда где мы имеем кстати менты не
00:36:44
вызываю так что она да по вызывать так
00:36:52
main вот on вставляем вот сюда вот вот
00:36:57
эти вот пять строчек
00:37:01
им и надо вызвать то есть вот я его
00:37:04
вызову естественно перед тем как
00:37:07
наделать вызов new game main new game
00:37:16
рутман лук так ну еще раз new game мне
00:37:19
не нравится а что делать вот ты не
00:37:22
нравится какой-то дентифик атор в пай
00:37:25
charme есть возможность глобальные
00:37:27
замены но инте при этом интеллектуальный
00:37:29
такой замены которой отыщет именно этот
00:37:34
идентификатор то есть нигде там в
00:37:37
пространстве имен другом но также
00:37:39
называющийся а именно вот там где к нему
00:37:42
протянутая синтаксически анализирует
00:37:44
откуда эта функция вызывается да и таким
00:37:47
образом я сейчас могу взять кстати могу
00:37:50
kontrol б
00:37:51
если не ошибаюсь не kontrol б как я могу
00:37:55
прыгать к определению гоу ту declaration
00:38:01
из утробы
00:38:04
после должен был прыгать еще раз
00:38:08
попробую
00:38:09
ну-ка контру что контур shift б она
00:38:13
выйти на допрашивать мой зимовский режим
00:38:16
kontrol б давай ну давай не хочет
00:38:25
травить к определению ладно мышкой уберу
00:38:29
шумовский режим следующий раз газетам
00:38:32
гол the declaration of users
00:38:36
я попадал попадаю куда к декларации то
00:38:39
есть к месту где описывается эта функция
00:38:41
new game тут пара лишних строчек которые
00:38:45
можно удалить безболезненно так да есть
00:38:53
такой текстовый редактор вы его видели
00:38:55
уже называется вин а вот оон специфичен
00:39:01
это linux вый очень старенький текстовый
00:39:04
редактор но он работает как полноценная
00:39:07
еды и вполне на самом деле многие многие
00:39:10
вещи в нем можно делать а вот и мне
00:39:13
лично он очень нравится
00:39:15
я в прошлый раз работал уже в риме вывод
00:39:18
это дело видели прошлый раз вот но его
00:39:25
любят сисадмины некоторые программисты
00:39:27
вот я она его когда-то давно подсел
00:39:29
и он не очень нравится а вот и но в панч
00:39:33
армии есть даже в по charme
00:39:35
когда вы устанавливаете патча рамками te
00:39:37
desnude он там просто предложил мне
00:39:39
когда ставил новый раз он предложил
00:39:41
а хотите вим режим хочу ну вот аппетитом
00:39:46
к некоторых комбинации зато перестают
00:39:48
зарабатывает до прожив прыгнуть на
00:39:50
исходное неудобно
00:39:53
наверняка какая то есть другая тоже
00:39:56
диммеры наверняка тито уже сделано чтобы
00:39:58
у них тоже все срабатывали стандартной
00:40:02
конфигурации тоже эти к клавиатурные
00:40:04
комбинации
00:40:07
папа так что такое же один таргетинг g1
00:40:13
power-up вообще непонятно нормально так
00:40:17
называть переменные а вот оно что
00:40:24
оказывается таган 1 га назин оказывается
00:40:29
ну подождите вот я буду сейчас лазить по
00:40:31
всему тексты переименовывать скажите а и
00:40:36
так понятно ничего не понятно это
00:40:39
неправда я реальный я сейчас смотрю мне
00:40:41
не очень-то понятно на самом деле да как
00:40:46
быть вот когда мне что-то не нравится
00:40:48
есть такая возможность взять и
00:40:51
переименовать активно кстати создается
00:40:53
ниже где создается вот не вижу в мае не
00:40:58
создается же один да так нет мы немного
00:41:06
также 1 равно gun так во первых с
00:41:10
большой буковки gun так во вторых что
00:41:13
она да естественно раз уж так то моя gun
00:41:17
должна быть глобальная да но еще раз
00:41:21
опять у меня есть некая переменная
00:41:23
уровня модуля реально не нравится даже
00:41:26
ко мне не нравится если честно да я бы
00:41:29
лучше пусть был бы canvas как быть вот в
00:41:33
пай charme есть возможность
00:41:35
интеллектуального переименования здесь
00:41:37
есть там такого 3 фактор правой кнопкой
00:41:41
кликнул на идентификаторе рефлектор рен
00:41:44
ним и пожалуйста так н в на звук н вас с
00:41:50
и он по всему проекту пробежался везде
00:41:55
где canvas он нашел и заменил при этом
00:41:57
если где-то в комментарии встречала
00:41:59
слова концов он не заменял если
00:42:02
переменная который не связан напрямую с
00:42:05
этой то он и не замене
00:42:07
он так называется переменной который
00:42:09
более длинные содержат откинув не
00:42:12
заменял это очень аккуратный
00:42:14
интеллектуальный поиск заменой
00:42:16
фактически вот ну и соответственно же
00:42:19
один вот этот вот я тоже хочу заменить
00:42:23
рен и оказывается это га на 1 га надин
00:42:30
местами gun один у меня вообще gun вроде
00:42:34
бы один я не знаю выйдет ли смысл зачем
00:42:38
лишние порождать пусть будет просто gun
00:42:43
может захочу тогда я сделал рефакторинг
00:42:48
то что там на самом деле сложности а не
00:42:51
ограничиваться просто фактом наличия
00:42:53
нужно будет чтобы 2 пушки тоже был нет
00:42:56
управления ли очередной ход так
00:43:02
интересно где цифры потом понадобится
00:43:07
этот canvas делается на этом а что если
00:43:12
он не понадобится нука сейчас посмотрим
00:43:16
с каждым где нибудь или нет так ничего
00:43:21
не мт-10 define
00:43:23
все понятно t1 равно таргет он должен
00:43:27
быть глобальным gun таргет ну и
00:43:32
собственно давайте переименуем т1 и
00:43:39
фактор линий с маленькой буковки
00:43:45
соответственно таргет поэтому меня что
00:43:48
на us open
00:43:50
wow то есть он не может найти т1 что и
00:44:01
вот же ты один
00:44:12
чет я не понял
00:44:31
чет я не понял сейчас попробуем еще раз
00:44:37
рен им таргет вроде сработало
00:44:52
торги топчет казну и трибьют аиде таргет
00:45:00
не создавал айди
00:45:03
дага раскомментировать ну создавать его
00:45:06
естественно не в нулях да мне нужно что
00:45:08
пробросить в конструктор собственно
00:45:11
параметры до
00:45:12
таргет создается где в конкретном x и y
00:45:16
и да и не должен быть что еще ну некий
00:45:21
радиус очевидно да давайте посмотрим на
00:45:24
пол и таргет ибо у меня принципиально
00:45:27
похоже
00:45:29
x y а р что аир всегда 10 цвета разные
00:45:35
бывают
00:45:39
так лука
00:45:56
прямо досюда не дотянулся
00:46:00
не gaze какую где
00:46:05
а вот кстати фишка да получается что у
00:46:12
нас
00:46:13
метод да не там прописываются ну видимо
00:46:17
этот new таргет вызывается
00:46:19
чтобы поменять эти значение на новые но
00:46:25
вы наверное я в это можно поискать я
00:46:28
могу встать на new таргет нажать alt f7
00:46:31
и он не должен высветить все
00:46:34
штапель как это кривизна покажи мне
00:46:39
пожалуйста alt и всем fingers другая
00:46:44
клавиатурная комбинация на пережает
00:46:45
вот оно единственное место использования
00:46:51
любим но одна единственная на еще там
00:46:54
используется вот она ты один ньют орбит
00:47:01
что такое любим непонятно и root of the
00:47:09
new game то есть new game вызывается
00:47:12
многократно и каждый раз что происходит
00:47:15
привязка фигня какая-то правда ну а кто
00:47:22
зацикливание new guy мода нет еще раз
00:47:28
баян зачем вонзить многократно то есть
00:47:32
функция new game она явно странные вещи
00:47:35
делать почему она зациклена
00:47:36
должен быть функция которая тикает так
00:47:39
во времени kitty к например там таймер
00:47:42
фонда time хендлер ну как то так да
00:47:46
который будет игровой цикл себе
00:47:49
удерживать ну понятное дело что ему
00:47:51
нужно быть что-то там считать это такой
00:47:53
сетки не знаю чем не скажет про z local
00:47:58
верил z is not you
00:48:00
вообще не знаю зачем нам нужно это z так
00:48:04
ат-1 что это было такое был торги
00:48:08
мог бы сейчас переименуем его давай
00:48:15
эффекта чем часы где нынче через и он не
00:48:25
хочет
00:48:40
я сейчас попробую
00:48:46
на самом деле я вижу что я тут еще
00:48:50
кое-где по на забывал это дело до 151
00:48:54
стране строка
00:48:55
так я еще сделаю замену 151 какая еще
00:48:59
строка 162
00:49:05
да я сделаю замену а.а.
00:49:10
нет там уже тарвер там уже не получится
00:49:15
162 заменить т1 на таргет и сделать это
00:49:23
глобально в каждой строке
00:49:26
так отлично
00:49:34
маленькая мощи vemo мы глуп откажете ой
00:49:43
слушайте простите меня пожалуйста я он
00:49:48
он не открыл олег 8 грн л я успел
00:49:53
залезть в этот в тот в которого я уже ,
00:49:58
что сейчас справлял сейчас залезем
00:50:04
посмотрим все уже исправлено железа меня
00:50:07
я прошу прощения это моей
00:50:09
невнимательности не заметил что файл
00:50:12
изменился фрейм
00:50:16
вроде не нужен на грохнем screen 1к лорд
00:50:29
чем мне нравится в cowards
00:50:31
тайпу говорит ошибка у вас есть какая-то
00:50:34
плевать это мелочи
00:50:45
мне кажется что да все более-менее но не
00:50:48
вот это да не порядок что он new таргет
00:50:51
вызывается оттуда вот я попробую его
00:50:55
убрать и пропишу вот сюда вот
00:51:00
инициализация новой цели great wall но
00:51:07
соответствовал но я какая ситуация на
00:51:10
что так и текст я все это дело сделаю
00:51:22
после того как визуализацию создания
00:51:26
визуальных объектов после того как
00:51:27
выбрал x y и радиус кстати обратите
00:51:30
внимание вот здесь я использую
00:51:32
трамвайное присваивания знаете зачем
00:51:34
а для того чтобы вот здесь вот было
00:51:39
проще работать с этим x y а мне писать
00:51:42
целку то есть я делаю синонимично и имя x y&r
00:51:46
соответственно для не рад тардис у меня
00:51:50
чего получается в одном месте а нет
00:51:53
аренды раковинки
00:51:58
если x y параметры начал торги должно
00:52:02
рождаться там где не в случайной позиции
00:52:08
пусть и еще раз я сейчас свяжу своей
00:52:11
задачи чтобы отдела в принципе
00:52:12
заработала когда это заработает мы
00:52:15
сможем что-то сдвинуть дальше
00:52:20
даже не факторинг имеет смысл делать на
00:52:23
работающем ходе катя иногда вот я сейчас
00:52:26
в каком-то смысле занимаюсь или
00:52:28
факторингом на неработающем данной
00:52:30
просто такова что не возможностям
00:52:32
работать нормально но чего я насильно
00:52:42
пытаюсь его запустить так он говорит
00:52:45
параметре не данные но давайте их уберу
00:52:47
пускай и таргет при создании торги то он
00:52:50
появляется в случайном месте будет
00:52:53
вполне логично ну так контур shift и в
00:53:01
10 таргет inject знает ребятню торги
00:53:06
смотрим откуда это вызывается вот отсюда
00:53:09
это вызывается убираем control shift и в
00:53:18
10 то да че то есть даже видите пушка
00:53:24
растет и снаряд какой то появляется явно
00:53:27
разноцветный видите 1 233 что то есть
00:53:31
мишень в наличии
00:53:34
чет срослось да самое что прочитали на
00:53:39
работы да это направление собственно
00:53:42
ствола на мышку до тех пор пока мышка
00:53:45
показываю куда-то в разумное место и там
00:53:48
есть как эта проблема division by zero
00:53:50
но тем не менее она вот глобально
00:53:53
работает то помешает самый снаряд никуда
00:53:57
не летит хорошо футбол летел z был не
00:54:03
нужно его удалял
00:54:06
так что нам надо
00:54:10
у меня есть этот самый не умеем которые
00:54:13
почему-то перезапускать что он
00:54:15
перезапускается явно new game не
00:54:16
относится к циклу да а вот это вот явно
00:54:20
видите while таргет .
00:54:22
лего bows for being голос щит тест
00:54:28
таргет дать что-то тут происходит явно и
00:54:30
это должна быть проверка взаимоотношения
00:54:33
должна явно находиться в такте по
00:54:36
времени доця присно time
00:54:38
хендлер вот его выдирают от same time
00:54:42
хендлер и в этом time finn или в этой
00:54:49
функцией пожалуйста я буду собственно
00:54:52
заниматься тем что а трогать этот самый
00:54:55
формы inbox boobs глобальная переменная
00:54:59
дальше там таргет должна быть глобальная
00:55:03
а но где нет заменить
00:55:21
заменить на тайм хендлер пешего хочу
00:55:24
перезапускать причем я его указывает без
00:55:27
скобок то есть передаю его как ссылку на
00:55:30
эту функцию чтобы ее смогли позвать ну и
00:55:34
750 это странно расчет должен
00:55:38
происходить чаще ой 50 микросекунд
00:55:48
миллисекунд ну что теперь дуло перестал
00:55:58
расти дуло перестало расти
00:56:06
таргет тень
00:56:14
gun power up а у меня есть какой-нибудь
00:56:18
heyner вообще на мышку
00:56:20
а я time хендлер вообще позвал его
00:56:25
вообще не позвал это раз нашему вызвать
00:56:31
чтобы он хотя бы один раз отработал
00:56:32
после чего мы сможем вообще чем-то
00:56:35
разговаривать теперь растет на самом
00:56:39
деле по-хорошему россия нужно по событию
00:56:42
от мышки то есть когда от мышки пришло с
00:56:44
другой стороны а когда мышку уже нажали
00:56:47
нового события при этом не происходит а
00:56:49
мне нужно отсечку по времени здесь это
00:56:52
на самом деле было как-то реализованная
00:56:55
запоминал момент нажатия мышкой
00:56:58
момент отпуска мышки и соответственно
00:57:01
можно сейчас shift escape сворачивать
00:57:08
нижняя кошка fire ту
00:57:17
н ваще не помню слушайте жесть какая
00:57:25
f2 что такое в 2 мы косинус и синус угла
00:57:35
вы их с нее был выиграть а надо ли этот
00:57:46
рога
00:57:50
вы знаете смотрите
00:57:53
допустим она даже вроде бы работает но я
00:57:58
не понимаю как мне очень сложно
00:58:01
эксплуатировать то что я ними не знаю
00:58:04
как оно работает но да но дело в том что
00:58:12
а я у меня сейчас нет четко обозначенная
00:58:16
задачи что я именно должен сделать я
00:58:19
пытаюсь сейчас что-то починить судорожно
00:58:22
кстати между прочим
00:58:23
вот чтобы меньше было судорожно сей раз
00:58:26
уж программа запускается оно в принципе
00:58:28
может быть запущена можно попробовать
00:58:32
чинить конкретные вещи то есть вот
00:58:34
например то чтоб мячик летел сейчас он
00:58:37
не летит соответственно что мне нужно
00:58:40
найти как это еще ошибка там в конце
00:58:44
вылетает а
00:58:46
запускать периодически мув где очевидно
00:58:49
у меня должен быть этот танк для
00:58:52
который висит на времени
00:58:54
то что
00:58:59
forbo
00:59:00
муж бэйн bulls слушайте опять вот такая
00:59:04
фигня нехорошо до полу должно быть так
00:59:18
ладно
00:59:19
furball inbox bulbule хит тест старой
00:59:23
оттащить мячик проверяет столкнулся ли
00:59:26
он скобки принимает цель да и собственно
00:59:29
цель в принципе живо в этом случае жизнь
00:59:33
и и мы обращаем 0 и торгов hit you
00:59:41
почему тут привязка
00:59:47
вы уничтожили цель ой там конфи
00:59:57
а
00:59:58
[музыка]
01:00:05
когда может быть тем войны нужно вернуть
01:00:08
сюда
01:00:21
сейчас решение хороший не рождается да
01:00:31
давайте сам чтоб они летали за что вас
01:00:33
происходит вот здесь здесь вложенные
01:00:36
циклы соответственно перебирается пока есть
01:00:42
пока есть а сейчас ему
01:00:45
а мяч к 1 до волну атор нет а так не
01:00:51
моется до салмов существует он дергается
01:00:56
значит на видимо вся проблема в том что
01:00:58
у него был муж всякая фигня ну конечно
01:01:02
вот же она фигня fix me описывает
01:01:06
перемещаем меча за один кадр перерисовку
01:01:08
мы это дело можем стащить стал мяч к
01:01:10
которым мы делали на самом деле а чего
01:01:12
не хватает не хватает видимо ему вы x и
01:01:15
вы y видите они нулевые выставляются по
01:01:18
хорошему когда ball появляется он должен
01:01:21
появляться в на каком месте слой нужно
01:01:26
передать собственно некоторое начальную
01:01:28
вы x и y для не со лизации вот если я
01:01:37
очень хочу выдавать
01:01:38
это вообще 4450 на самом деле довольно
01:01:41
странно какие-то значения по умолчанию
01:01:45
где так фишка в том что он должен
01:01:51
появляться из дуло пушки
01:01:55
давайте приобретением сейчас аналит и
01:01:58
вот воткнём его чтобы он появлялся на
01:02:00
кончике дула пушки
01:02:01
но в первую очередь я сейчас даже если я
01:02:04
пропишу ему вы их следы вот сюда вот под
01:02:07
дефолтное значение 0 и
01:02:08
а вот пойди и этого не должно на самом
01:02:12
деле случаться
01:02:23
что же выдаются
01:02:28
их надо оттуда передать мне нужно пойти
01:02:32
там где находится класс gun
01:02:34
вот от класс гана и в классе gun когда
01:02:37
мы выпускаем выстрел мечом собственно
01:02:40
вот здесь вот фарту and я вот честно
01:02:46
сказать а смотрите вот что такое f2 он
01:02:52
f2 он это такой флажок он помечает
01:02:58
нажатой кнопке чтобы вот при нажатой
01:03:01
кнопке не знал том что она жалась и
01:03:04
накапливал некоторое там переменную
01:03:06
видимо
01:03:17
короче fair to and do он должен что new
01:03:22
был вы x ни был выглядывать посмотрим а
01:03:24
что он делает
01:03:25
сел в . 2 of 2 power так умножить на
01:03:31
косинус с л н а н это наверное
01:03:35
anvil очевидно до н это энгл давайте мы
01:03:40
его переименуем и так я и запутываюсь в
01:03:44
этом так new был вы их свод они
01:04:01
а вот еще в чем фишка смотрите да я
01:04:06
сразу их прописываю
01:04:09
вообще я лезу их менять отсюда от
01:04:13
непорядок они должны быть прописаны эти
01:04:16
самые вы x и y должны быть прописаны
01:04:18
внутри конструктора класса то есть вот
01:04:21
здесь вот когда я создаю new ball
01:04:24
я должен уже сообщить ему что x xor y да
01:04:30
и радиус на самом деле тоже эти . r тоже
01:04:33
прописывается плюс равно общем плюс а он
01:04:36
опять
01:04:38
странно
01:04:45
так сейчас соображу
01:04:56
короче я здесь поставлю подчеркивает а
01:04:59
будет локальная переменная который я
01:05:01
сейчас создавая мячик не эболу
01:05:06
вот здесь вот создам так я ему передам
01:05:11
соответственно кого
01:05:13
xan и горько выкса
01:05:17
вы и горько осушки дайте я назову выксу
01:05:23
y здесь локально и это vx
01:05:34
еще раз для болта knew bull р
01:05:44
я тоже не был удалю здесь
01:05:54
ой
01:06:00
так очень хорошо так энгл я рассчитываю
01:06:04
да это будет фарту and момент окончания
01:06:07
нажатия кнопки сейчас я думаю это надо
01:06:18
посчитать по углу и
01:06:21
радиусу этого самого пушкина воды
01:06:24
дуло creed line ай ди да иди хранит этот
01:06:32
самый live aid он конфиг так таргетинг
01:06:38
эта функция которая срабатывает на
01:06:39
прицеливание на движение мышки повешена
01:06:42
the ranking прицеливание
01:06:46
так и вот смотрите да вот это . 24 это
01:06:53
местоположение пушки кстати тоже она
01:06:56
видите захардкожены пушка жестко всегда
01:06:58
в этих координатах это плохо она должна
01:07:01
иметь возможность ну пусть эти константа
01:07:03
будут именован ими и пусть они лежат у
01:07:05
меня прям в самом классе даже пусть как
01:07:08
свойства класса но в любом случае не вот
01:07:11
так вот так сейчас сообразим значит что
01:07:17
у нас вот этот вот раз два это и есть
01:07:22
необходимые мне координаты беру две вот
01:07:25
эти вот строки и тащу их fair and i x y
01:07:34
вот здесь вот я пропишу так-то да это x
01:07:46
ты клик ай шуба ще не
01:07:56
так очень хорошо так x y я сейчас
01:08:02
прописал центр кончика дуло вот кончик
01:08:05
дулась которого мне должен полететь
01:08:07
будет снаряд так энгл а здесь он
01:08:10
рассчитывается да этот tunngle
01:08:18
интересно
01:08:24
секс y вот эти x y должны быть на самом
01:08:32
деле сел . xlv . y это как раз
01:08:36
местоположение этого
01:08:39
пушки самой центры
01:08:41
а у нее есть они нету вот эти вот числа
01:08:52
до они вот существуют просто так
01:09:03
так исправляем вставляем что ну давайте
01:09:06
по старинке пока чтоб не сломалась 20 по
01:09:09
иксу 450 по игреку где там еще тот
01:09:12
хардкот я пока не знаю но это непорядок
01:09:16
по-хорошему надо это убрать так что
01:09:19
интересно второе а это второй кусок
01:09:27
сел x и y а это вторая палата старта
01:09:33
положение пушки пока мышка не приехала
01:09:38
так как я запускаю это дело control
01:09:41
shift of 10 учу
01:09:47
оу-оу-оу в чем дело
01:09:53
canvas creed овал говорит не могу tables
01:09:58
in том кто мне the pool армия что ли
01:10:02
тапу
01:10:03
как так электрон не табу
01:10:07
x to pull the pool intex у меня тапу
01:10:15
как так что у меня балда создается вот в
01:10:23
момент когда стали создавать новый шарик
01:10:25
у меня в качестве ксо было сюда брошена
01:10:27
строка
01:10:35
так спрячься очевидно это сделал gun
01:10:41
в момент окончания выстрела так что он
01:10:45
делает ball
01:10:46
x y в x и y и x это два вот простите
01:10:55
ребят вот видите , в конце
01:11:00
синтаксическая ошибка ой я случайно
01:11:03
закрыл не очень страшно а стоп андрон
01:11:19
давай ну а и комоно на кончике дула
01:11:24
появляется уже правда это преимущество
01:11:28
серийное та же фигня
01:11:30
осталось что сообщить ему скорость
01:11:33
сейчас у меня пока не сообщается
01:11:35
правильная скорость так что мы находим
01:11:38
скорость на в момент этого fire 2 да вы
01:11:44
x и y как их считаю ф да вот фишка
01:11:49
вторую вижу да вот же она вот свои рту
01:11:53
and вы тут есть в x и y давайте
01:11:57
посмотрим для начала отладочной печати
01:12:00
давайте их принта нём а что за скорость
01:12:04
там в принципе простить опять закрыл
01:12:10
весело так раз автомат как язви мая
01:12:13
вышел
01:12:18
давай сейчас он породит на радио и
01:12:22
печатает скорость к его 36 29 смотрим на
01:12:32
шарик вас ball set forth мох вроде бы
01:12:39
есть вроде бы movie есть а давайте
01:12:42
посмотрим а он вызывается или нет то
01:12:46
есть в моем главном цикле там где у меня
01:12:49
этот тайм hander
01:12:59
точно-точно еще перерисовать его на одно
01:13:03
дело поменять координаты другое дело
01:13:06
давай контру бы не не хочет ладно голод
01:13:11
у этот самый declaration ресурс в этой в
01:13:22
этом замесе давай так перерисовать его
01:13:28
до 3 что-то потрогал там было что-то для
01:13:32
этого а
01:13:38
как называется
01:13:45
корд смысле
01:13:47
а точно да я могу просто сел
01:13:52
сетка орт сделать действительно да ну
01:14:02
давай дорогой
01:14:05
каком он даже слишком ну пролетает
01:14:13
сквозь да ну глобальный летят глобально
01:14:16
уже летят
01:14:17
ладно я смотрю что у нас сейчас уже не
01:14:23
получится ничего существенного за
01:14:25
давайте я хотя бы отправлю это дело в
01:14:27
commit посмотрим на то что мы шума
01:14:31
натворили в итоге я git div посмотрю на
01:14:36
вот сколько у меня глобально строк
01:14:38
изменено вот я не доволен тем что пока что
01:14:41
получилось пока мне это не нравится а
01:14:50
шарики летят это хорошо они не летят во
01:14:54
первых порах гравитации мы же вы
01:14:58
смотрели вот тут вот обфусцированный у
01:15:00
версию они не отражаются от стенок
01:15:03
они не поражают цель я не получаю
01:15:08
экспириенс нет нигде отраженного сколько
01:15:11
шариков я сбил или сколько они стоили у
01:15:14
меня шарики летят прекрасно но эти цели
01:15:19
должны порождаться новые да и цели
01:15:24
хорошо бы чтобы двигались чтобы они
01:15:26
летали в идеале чтобы они еще и
01:15:29
сталкивались по закону сохранения
01:15:31
импульса фоне обменивали вы допустим у
01:15:33
них одинаковый массы абсолютно упругое
01:15:35
соударение в котором они будут
01:15:37
обмениваться со скоростями но это же
01:15:39
будет прикольно на самом деле это не так
01:15:44
сложно дописать это не так сложно
01:15:47
написать но фишка в том что я сейчас вот
01:15:52
может быть надо было действительно
01:15:53
начать я хотел чтобы это было как у вас
01:15:56
в тех же условиях пописать чтобы
01:16:04
придираться к коду до вникать в суть
01:16:08
это это важная часть работы до уметь
01:16:11
вникнуть в суть программного кода
01:16:13
считаться разобраться еще исправить
01:16:18
понятно повозитесь с этим делом чтобы
01:16:23
заставить
01:16:24
вот чтоб мишени или талии до
01:16:27
соответственно
01:16:29
должна быть некая обслуживающая функция
01:16:31
сейчас там есть эта функция time хендлер
01:16:35
до в которой вся сложность спрятан
01:16:38
слушать и ну пусть она в ней будет даже
01:16:40
спрятана пусть ничего страшного вы
01:16:44
чистите код напишите документацию к
01:16:46
каждому методу что он делает какая на
01:16:49
нем задача лежит и весь легаси так
01:16:51
называемый код старый который устаревший
01:16:55
лучше даже просто выкинуть то есть если
01:16:58
вот что-то не раб не отрабатывает что то
01:17:01
что не используется но она валяется
01:17:04
лучше его просто удалить чтобы она не
01:17:07
валялось просто так сейчас я пока это
01:17:09
именно сочинил как развалившуюся игрушку
01:17:12
да ой чё куда это подход окажется сюда
01:17:15
да вот я вот так вот это делать чинил
01:17:17
вот скажите а вот мне интересно вы же
01:17:20
уже связи возились с этим кодом
01:17:22
правильно
01:17:23
до какого этапа вы дошли а у вас все
01:17:28
летает из гравитации отражается от стен
01:17:31
и цель поражается сделать что нормальный
01:17:46
ну клево клево это очень хорошо значит
01:17:51
вы это меня опережайте а сколько времени
01:17:54
у вас уходит ушло на это а еще раз
01:18:10
по-разному до 2 пары 2 часа часа три
01:18:18
ну чем могу сказать вы со свежими
01:18:21
мозгами так что хорошо что вы более
01:18:24
менее разумно справляетесь все нормально
01:18:26
вот анд я что еще хочу сказать сейчас
01:18:36
проект я должен был на заранее у
01:18:39
подсчитать чтоб легче ориентироваться в
01:18:42
нем чтобы меньше времени затрачивать но
01:18:44
вот эти воспоминания с другой стороны
01:18:46
вот это вот ковыряние вот это вот
01:18:49
придирки и моё ну кто это вообще такое
01:18:52
что это за атрибут это это важно
01:18:54
понимать потому что иначе вот эти вот
01:18:57
дурацкие название
01:18:58
они не вытравливаю вам будет казаться
01:19:00
дух почему не называя чего не назвать т1
01:19:04
а.н.
01:19:05
какой то вообще ни о чем вот f2 power of
01:19:09
2 он вообще ужас какой то так нельзя
01:19:12
писать вот так как сейчас это
01:19:14
организован мне по-прежнему очень не
01:19:16
нравится код явность таким вот запашком
01:19:19
надо выделить и вычленить из и он
01:19:22
нечитабельный во многих местах
01:19:24
имея не до конца понятно сеть я примерно
01:19:27
пол не догадываюсь как то происходит
01:19:29
переключение режима вот этого нажал
01:19:31
мышку отпустил мышку мне это опять же не
01:19:34
нравится пока что как это сделал это
01:19:38
нужно вычленять делает более читабельным
01:19:41
ладно да смотрите я вот закончена этом
01:19:46
деле сейчас в любом случае сделаю commit
01:19:51
ваша будет задача какая она по хорошему
01:19:55
сделать модульный рефакторинг то есть
01:20:00
оторвать физику происходящего процесса
01:20:03
физику класс связанные например с
01:20:08
мишенями или с мишенями и мячиком да и
01:20:14
пушкой оторвать в отдельный модуль
01:20:18
а то что касается tkinter а в отдельный
01:20:22
модуль разделить эти вещи пусть у вас будет
01:20:27
модель немножко независимо от
01:20:30
отображения чтобы не отвечал
01:20:34
класс балл за о свое отображение
01:20:37
чтобы это не его ответственность была
01:20:39
дернуть colors вот и знать
01:20:43
у вообще у холсте чтобы он не знал
01:20:46
существенно тома холсте ничего да ну
01:20:49
пусть у него будет там идентификатор
01:20:51
tabula иди хранится в нем да но вот
01:20:54
как-то это дело вытащить подумайте может
01:20:58
быть какой то еще у вас родится способ
01:21:00
как разделить на модуль и на самом деле
01:21:04
вот это вот идея
01:21:05
отделить модель от отображения то есть
01:21:10
еще вот контроллер на
01:21:12
model-view-controller это одна из таких
01:21:14
основополагающих вещей которые позволяет
01:21:16
разделить сложность
01:21:17
почему потому что очень часто
01:21:20
отображения оно может быть разным то
01:21:27
есть вы можете отображать так или так вы
01:21:30
можете усложнить это отображение того
01:21:32
словно приближаться отдаляться и ли у
01:21:35
вас поле на котором все это летает как в
01:21:37
игре worms она больше чем экран и вы можете ездить
01:21:40
туда сюда посмотреть на происходящее
01:21:44
понятно под прицелом как раз
01:21:47
приблизиться отдалиться вот поэтому в
01:21:50
принципе вот эта идея разрыва между
01:21:52
отображением и моделью он очень цена
01:21:55
переход координат тоже сейчас убитого
01:21:57
абсолютно нет ни потрогал семена
01:22:00
координат ладно давайте забьем для
01:22:03
ясности делаем commit на сегодня мы с
01:22:05
вами заканчиваем спасибо вам за внимание
01:22:07
и до встречи следующий раз

Описание:

Практика: http://cs.mipt.ru/python Telegram-группа: https://t.me/tkhirianov_python_2019 Программа курса: https://github.com/tkhirianov/lections_2019/tree/master/semestr_1 Спонсировать: https://www.patreon.com/tkhirianov или https://www.paypal.com/paypalme/tkhirianov или 63900240 9020000598 (карта СБ).

Готовим варианты загрузки

popular icon
Популярные
hd icon
HD видео
audio icon
Только звук
total icon
Все форматы
* — Если видео проигрывается в новой вкладке, перейдите в неё, а затем кликните по видео правой кнопкой мыши и выберите пункт "Сохранить видео как..."
** — Ссылка предназначенная для онлайн воспроизведения в специализированных плеерах

Вопросы о скачивании видео

mobile menu iconКак можно скачать видео "Практика программирования на Python 3, лекция №9"?mobile menu icon

  • Сайт http://unidownloader.com/ — лучший способ скачать видео или отдельно аудиодорожку, если хочется обойтись без установки программ и расширений. Расширение UDL Helper — удобная кнопка, которая органично встраивается на сайты YouTube, Instagram и OK.ru для быстрого скачивания контента.

  • Программа UDL Client (для Windows) — самое мощное решение, поддерживающее более 900 сайтов, социальных сетей и видеохостингов, а также любое качество видео, которое доступно в источнике.

  • UDL Lite — представляет собой удобный доступ к сайту с мобильного устройства. С его помощью вы можете легко скачивать видео прямо на смартфон.

mobile menu iconКакой формат видео "Практика программирования на Python 3, лекция №9" выбрать?mobile menu icon

  • Наилучшее качество имеют форматы FullHD (1080p), 2K (1440p), 4K (2160p) и 8K (4320p). Чем больше разрешение вашего экрана, тем выше должно быть качество видео. Однако следует учесть и другие факторы: скорость скачивания, количество свободного места, а также производительность устройства при воспроизведении.

mobile menu iconПочему компьютер зависает при загрузке видео "Практика программирования на Python 3, лекция №9"?mobile menu icon

  • Полностью зависать браузер/компьютер не должен! Если это произошло, просьба сообщить об этом, указав ссылку на видео. Иногда видео нельзя скачать напрямую в подходящем формате, поэтому мы добавили возможность конвертации файла в нужный формат. В отдельных случаях этот процесс может активно использовать ресурсы компьютера.

mobile menu iconКак скачать видео "Практика программирования на Python 3, лекция №9" на телефон?mobile menu icon

  • Вы можете скачать видео на свой смартфон с помощью сайта или pwa-приложения UDL Lite. Также есть возможность отправить ссылку на скачивание через QR-код с помощью расширения UDL Helper.

mobile menu iconКак скачать аудиодорожку (музыку) в MP3 "Практика программирования на Python 3, лекция №9"?mobile menu icon

  • Самый удобный способ — воспользоваться программой UDL Client, которая поддерживает конвертацию видео в формат MP3. В некоторых случаях MP3 можно скачать и через расширение UDL Helper.

mobile menu iconКак сохранить кадр из видео "Практика программирования на Python 3, лекция №9"?mobile menu icon

  • Эта функция доступна в расширении UDL Helper. Убедитесь, что в настройках отмечен пункт «Отображать кнопку сохранения скриншота из видео». В правом нижнем углу плеера левее иконки «Настройки» должна появиться иконка камеры, по нажатию на которую текущий кадр из видео будет сохранён на ваш компьютер в формате JPEG.

mobile menu iconСколько это всё стоит?mobile menu icon

  • Нисколько. Наши сервисы абсолютно бесплатны для всех пользователей. Здесь нет PRO подписок, нет ограничений на количество или максимальную длину скачиваемого видео.