Как рисовать текст различными шрифтами | Pygame #7

Поделиться
HTML-код
  • Опубликовано: 1 фев 2025

Комментарии • 23

  • @kvarze
    @kvarze 4 года назад +13

    Добрый день! У вас очень классные видеоуроки, материал, подача и качество этого материала. Разместите пожалуйста где-нибудь ссылку на донат для разовых донатов (хоть Яндекс, хоть любой другой вид), для тех, у кого нет возможности спонсировать через RUclips! Еще раз спасибо!

    • @selfedu_rus
      @selfedu_rus  4 года назад +4

      Спасибо за высокую оценку, обязательно размещу что-нибудь помимо спонсорства!

  • @rioriocccp5929
    @rioriocccp5929 Год назад

    0:11 встроенный модуль для работы со шрифтами
    0:19 класс SysFont
    0:29 класс Font
    0:50 функция get_fonts()
    0:55 функция match_font()
    1:05 пример
    1:20 как работает пример
    1:34 как использовать шрифты в программе
    1:52 загрузить свой собственный шрифт
    2:38 пример, формируем главное окно
    2:43 fps, цвета
    2:55 загружаем шрифт
    3:19 отображаем текст с нужным шрифтом
    3:51 отображаем поверхность
    4:12 рисуем текст
    4:37 главный цикл
    4:46 как работает пример, текст с фоном
    5:04 прозрачный фон для текста
    5:16 как работает пример, текст без фона
    5:21 за что отвечает параметр 1
    5:35 как работает пример, текст без сглаживания
    6:17 шрифт по умолчанию используемый в pygame
    6:34 как работает пример, стандарт шрифт размер 24
    6:42 как работает пример, стандарт шрифт размер 48
    6:51 как работает пример, стандарт шрифт без сглаживания
    7:27 пример, перемещение текста с помощью мышки
    10:29 зачем вызываем get_rel()
    11:24 как работает пример, перемещение с помощью мыши
    11:42 пример без нескольких строк
    11:52 как работает пример, баг

  • @Арсений-ь1з
    @Арсений-ь1з 7 месяцев назад +1

    Огромное спасибо

  • @brokendictaphone4516
    @brokendictaphone4516 2 года назад +4

    спасибо за урок. только не понимаю, зачем проверять находится ли курсор в клиентском окне, потому что если уж он внутри прямоугольника с текстом - он по-любому и внутри окна этого)

  • @vavas953
    @vavas953 2 года назад +1

    Чел ты лучший

  • @АлександрШейка-ц5ь
    @АлександрШейка-ц5ь 3 года назад +2

    Что бы вывести текст на экран, надо написать 50 строк кода. А как обработать текстовое поле - это вообще страшная тайна. Для этого понадобится дополнительная библиотека, 5 классов и не менее 100 строк кода. Наверное Python чемпион среди других языков в этом плане. Для начинающих самое то.

    • @span4ev
      @span4ev 3 года назад +5

      вы не совсем правы. В данном видео вывод текста на экран осуществляется с помощью библиотеки pygame, а не чистого пайтона. И если говорить в таком контексте, то можно использовать Tkinter или pyqt5 для вывода текста, там попроще
      Вы же не судите о сложностях языка исключительно по одному фактору - тому, как выводится текст на экран? Потому что это не приоритетные задачи пайтона, к тому же, есть вспомогательные библиотеки, если вам нужно только выводить текст.
      И как раз таки пайтон для новичка - действительно - самое то, так как он имеет очень низкий порог вхождения, отчего новичку, далёкому от программирования, будет легче начать изучать пайтон, чем языки С или джава скрипт или бейсик и что угодно.
      Пайтон простой язык и элегантный, и его синтаксис, отсутствие необходимости объявлять тип переменных, ставить точки с запятыми, писать каждый раз для цикла конструкции, типа:
      for (let i = 0; i < 3; i++)
      и всё остальное - это упрощает начало обучения, если это первый язык. А сложные языки могут отпугнуть новичков, отчего они бросят его изучать.
      И я не думаю, что новички первым делом стремятся выводить текст на экран, когда каждый пятый, наверное, чуть ли не с самого начала пытается создать свою игру или написать нейронную сеть ))
      И вообще, пайтон больше подходит для создания нейросетей, анализа данных - где его преимущественно и используют из-за его простоты и возможности написать один и тот же код на пайтоне быстрее, чем на других языках.
      А вы тут про сложность вывода текста =)
      text_example = 'Разве 50 строк кода?'
      text_size = 34
      font = pg.font.SysFont('arial', text_size)
      some_text = font.render(text_example, 1, 'black')
      text = some_text.get_rect()
      text.center = screen_rect.center
      screen.fill(bg_color)
      screen.blit(some_text, text)
      pg.display.update()
      это похоже на 50 строк кода?

  • @ChelSammi9837
    @ChelSammi9837 2 года назад +2

    А можно ли спомощью текста перемещаться на другую цену со звуком и картинкой ?

  • @Andrei-eh8ww
    @Andrei-eh8ww 4 года назад +3

    Можно ли в главном цикле, создать ещё один цикл while? Просто когда я создаю цикл внутри цикла окно зависает

    • @selfedu_rus
      @selfedu_rus  4 года назад

      Конечно, можно, только этот вложенный цикл не должен быть бесконечным )

    • @Andrei-eh8ww
      @Andrei-eh8ww 4 года назад

      @@selfedu_rus спасибо

  • @Bob44Igor
    @Bob44Igor Год назад +1

    У меня текст с торможениями перемещался. Но если убрать дополнительную проверку (... and pos.collidepoint(pygame.mouse.get_pos())), то проблемы сразу исчезнут, правда текст в таком случае можно будет выбирать в любой точке окна...

    • @Cka3ka1337
      @Cka3ka1337 7 месяцев назад

      Это недоработка кода, система в видео не идеальна. Я придумал такой вариант решения проблемы:
      import pygame
      pygame.init()
      def main():
      W,H = 400,400
      screen = pygame.display.set_mode((W,H))
      pygame.display.set_caption("Fonts")
      clock = pygame.time.Clock()

      font_sys = pygame.font.SysFont("arial", 24)
      text = font_sys.render("SomeText", True, (255,0,0))
      text_pos = text.get_rect(center=(W / 2,H / 2))


      def draw_text():
      screen.fill((255,255,255))
      screen.blit(text, text_pos)

      draw_text()

      harassment = False

      while True:
      for event in pygame.event.get():
      if event.type == pygame.QUIT:
      pygame.quit()
      exit()

      btns = pygame.mouse.get_pressed()
      if btns[0]:
      if text_pos.collidepoint(pygame.mouse.get_pos()) and not harassment:
      pygame.mouse.get_rel()
      harassment = True
      elif harassment:
      rel = pygame.mouse.get_rel()
      text_pos.move_ip(rel)
      draw_text()
      else:
      harassment = False



      screen.fill((255,255,255))
      draw_text()


      pygame.display.update()
      clock.tick(144)

      if __name__ == "__main__":
      main()

  • @центрифуга-к8э
    @центрифуга-к8э 9 месяцев назад

    Можете мне пожалуйста помочь, мне нужно чтобы при каком-то действии текст менялся, но когда он менется, то там просто 2 текста друг на друге, как это исправить?

    • @Cka3ka1337
      @Cka3ka1337 7 месяцев назад

      Я бы попробовал инициализировать текст прямиком в основном цикле и там же его редачить

  • @добромирчёрный-ц3у
    @добромирчёрный-ц3у 4 года назад +1

    Это конечно оочеень интересно но как вместо текста вывести переменную?

    • @albertosin6137
      @albertosin6137 4 года назад +1

      Передать в функцию f"{ваша_переменная}" или str(ваша_переменная)
      import pygame
      pygame.init()
      sc = pygame.display.set_mode((400, 500))
      black, white = (0, 0, 0), (255, 255, 255)
      value = 16
      font = pygame.font.SysFont("georgia", 16)
      text = font.render(f"{value}", 1, black, white)
      pos = text.get_rect(center = (200, 250))
      sc.fill(white)
      sc.blit(text, pos)
      pygame.display.flip()
      clock = pygame.time.Clock()
      while 1:
      clock.tick(60)

  • @dwind1ck
    @dwind1ck 2 года назад

    Лучше бы вместо того чтобы копировать и вставлять код, сам бы его писал, пока переписываешь код сквозь уши проходят все слова, а если ставишь на паузу и начинаешь код переписывать то всё равно ничего не понимаешь, надо чтобы вы писали код сами и рассказывали что он значит, было бы намного понятнее!

    • @boriskuznetsov2203
      @boriskuznetsov2203 Год назад

      Сам учи синтаксис, пиши и повторяй

  • @PIEIgorEfremenko
    @PIEIgorEfremenko 2 года назад

    Всё прекрасно, но фыпилявость порой выкумаривает, простите.

    • @wrestler91100
      @wrestler91100 Год назад

      Можно было бы держать этот комментарий при себе. И откуда такие чудаки на букву м берутся, вам реально в детстве наверное забыли рассказать о таких понятиях как тактичность и уважение.

    • @Cka3ka1337
      @Cka3ka1337 7 месяцев назад

      @@wrestler91100 Как раз тебе и забыли рассказать про тактичность и уважение...