Основы Создания Игр на Питоне - Управление Картинкой - pygame

แชร์
ฝัง
  • เผยแพร่เมื่อ 19 ม.ค. 2025

ความคิดเห็น • 44

  • @ЛевТрегубов-ы6й
    @ЛевТрегубов-ы6й 8 ปีที่แล้ว +24

    Отличный темп повествования и продолжительность видео (не утомляет)! За 2 дня осилил 27 уроков т.к какие-то начальные знания уже имелись было проще. В целом, лучшие уроки по Python из тех, что я находил, спасибо за ваш труд! :)

  • @dimitry5479
    @dimitry5479 3 ปีที่แล้ว +1

    Случайно зашел! Автор - свой чувак! доходчиво рассказывает на родном языке! Агонь!!

  • @liubovkalinina101
    @liubovkalinina101 5 ปีที่แล้ว +2

    Спасибо за уроки! Все работает, хотя прошло уже 3 года)

  • @timmofonnius
    @timmofonnius 4 ปีที่แล้ว +1

    Я все думал, нафига я заместо pycharm использую vim, пока не понадобилось передвинуть кусок кода. Выделяем, нажимаем < вуаля! Код сдвинут ровно на 1 tab.
    Спасибо за видео, btw

  • @strausets
    @strausets 7 ปีที่แล้ว +9

    может кому будет полезно, для удаления отступов, шифт+таб удаляет 1 отступ.

    • @ШерлокХолмс-к1ж
      @ШерлокХолмс-к1ж 6 ปีที่แล้ว

      Ооо, вот то, что мне не давало покоя, спасибо огромное

  • @vikol6629
    @vikol6629 4 ปีที่แล้ว +1

    Наверное, так и начиналась разработка Quake )))

  • @МаксимХрамцов-к8щ
    @МаксимХрамцов-к8щ 8 ปีที่แล้ว

    Спс за урок, всё получилось, картинка движется , но только намного быстрее чем у тебя , почему то.

    • @ADV-IT
      @ADV-IT  8 ปีที่แล้ว +1

      Компутер наверное быстрее у тебя :)

    • @ADV-IT
      @ADV-IT  8 ปีที่แล้ว

      Хотя у меня i7-4700 не медленный, ты точно двигаешь картинку по одному пикселю?

    • @ADV-IT
      @ADV-IT  8 ปีที่แล้ว

      X-=1
      X+=1
      Y-=1
      Y+=1
      Может у тебя не 1 , а 2 или больше?
      Если 1 то у тебя однозначно комп быстрее :)

    • @Ren-pc8uy
      @Ren-pc8uy 7 ปีที่แล้ว

      у меня тоже быстрее!
      +1, комп у меня точно слабее Вашего!
      просто у меня разрешение стоит меньше 800х600 - я думаю вот причина большей скорости)..

  • @maxim7603
    @maxim7603 4 ปีที่แล้ว

    А есть какая-нибудь функция, которая делает экран прозрачным? чтобы место черного фона был экран рабочего стола

  • @askuznetsof
    @askuznetsof 8 ปีที่แล้ว +1

    Спасибо! Круто. Почти первая игра) Только если мышкой ткнуть в крайнюю правую часть экрана, то картинка все равно уйдет за границы экрана. Читерство)

    • @ADV-IT
      @ADV-IT  8 ปีที่แล้ว

      Надо просто проверку одну добавить на координаты кликания и всё :)

    • @askuznetsof
      @askuznetsof 8 ปีที่แล้ว

      А можете еще подсказать почему у меня команды не подхватывает Pycharm. Такое ощущение что он их не знает, выделяет цветом, но все исполняет. www.screencast.com/t/F2UOTyTy
      А при наборе нету контекстного меню с подсказками, и я не могу посмотреть какие еще есть варианты команд.

    • @ADV-IT
      @ADV-IT  8 ปีที่แล้ว +1

      Попробуй в самом начале кода сделать import по другому:
      from pygame import *

    • @askuznetsof
      @askuznetsof 8 ปีที่แล้ว +1

      Теперь все идеально! Спасибо)

    • @VamsmaV
      @VamsmaV 2 หลายเดือนก่อน

      можно добавить что-то типа:
      if event.type == pygame.MOUSEBUTTONDOWN:
      x, y = event.pos
      xs = 0
      ys = 0
      if x >= MAX_X - IMG_SIZE:
      xs = IMG_SIZE
      if y >= MAX_Y - IMG_SIZE:
      ys = IMG_SIZE
      x = x - xs
      y = y - ys
      у меня это работает :)

  • @FAN_116
    @FAN_116 6 ปีที่แล้ว

    Прикольный урок) Отступлю от темы. Не подскажешь как длинный аудио файл разбить на треки по 5 минут?

    • @ADV-IT
      @ADV-IT  6 ปีที่แล้ว

      Любым Аудио редактором , даже online: audiotrimmer.com/

    • @FAN_116
      @FAN_116 6 ปีที่แล้ว

      @@ADV-IT да на компе есть софт. Хотел попрактиковаться именно в питоне)

  • @stkalashik
    @stkalashik 5 ปีที่แล้ว

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

    • @ADV-IT
      @ADV-IT  5 ปีที่แล้ว

      в уроке про снежинки я показываю как сделать прозрачный

  • @rusamericaru
    @rusamericaru 5 ปีที่แล้ว

    При перемещении картинки мышью, она выходит за пределы правой и нижней границы экрана, как это исправить?

    • @ADV-IT
      @ADV-IT  5 ปีที่แล้ว

      Ты прикалываешся?
      Попробуй прям щяз в Windows двинуть мышь и она выходит за пределы правой и нижней границы экрана

    • @rusamericaru
      @rusamericaru 5 ปีที่แล้ว

      @@ADV-IT Не мышь входит, а картинка, т. к. позиционируется ее верхний левый угол, поэтому клики возле правой и нижней границы размещают картинку так что часть ее вылезает за MAX_X и MAX_Y

    • @ADV-IT
      @ADV-IT  5 ปีที่แล้ว

      @@rusamericaru Ну поставь проверки на location просто и не перерисосывай картинку когда координаты мышки + размер картинки > MAX_X or MAX_Y

    • @rusamericaru
      @rusamericaru 5 ปีที่แล้ว +1

      @@ADV-IT Сделал такие проверки, теперь работает как надо, изображение не выходит за пределы экрана:
      if event.type == pygame.MOUSEBUTTONDOWN:
      if event.pos[0] + IMG_SIZE < MAX_X:
      x = event.pos[0]
      else:
      x = MAX_X - IMG_SIZE
      if event.pos[1] + IMG_SIZE < MAX_Y:
      y = event.pos[1]
      else:
      y = MAX_Y - IMG_SIZE

  • @folletst
    @folletst 5 ปีที่แล้ว

    Хорошо, а какой модуль надо использовать не для игр, а для других задач, более батанических )

    • @ADV-IT
      @ADV-IT  5 ปีที่แล้ว +1

      Их многие тисячи, посмотри в инете ботанические модули

  • @АнтонДемиденко-т4с
    @АнтонДемиденко-т4с 7 ปีที่แล้ว

    А КАК можно сделать, чтобы картинка которой управляешь к примеру поглащял другую картинку
    на подобии змейки

    • @makienko
      @makienko 7 ปีที่แล้ว

      Определяешь границы обеих картинок, например картинка размером 100*100, левый верхний угол которой находится в точке (200, 300), таким образом чтобы определить, принадлежит ли точка к картинке, нужно проверить два условия, икс должен быть в диапазоне от 200 до 300, одновременно игрек должен быть в диапазоне от 300 до 400. Таким образом, можно для каждого из углов второй картинки проверить, принадлежит ли он к данному диапазону, если принадлежит, значит есть пересечение, значит просто прекращаем отображение той картинки, которая должна исчезнуть. Метод с углами, конечно, подойдет только для прямоугольных картинок, но, я думаю, для общего понятия этого достаточно.

  • @ВладЕлькин-ф8ф
    @ВладЕлькин-ф8ф 8 ปีที่แล้ว

    а что картинка не прямоугольная а круглая?

    • @ADV-IT
      @ADV-IT  8 ปีที่แล้ว

      прямоугольная

  • @DmytroIgorovych
    @DmytroIgorovych 4 ปีที่แล้ว

    спонсор выпуска Интел))

  • @visage6679
    @visage6679 4 ปีที่แล้ว

    оу привет, а где взять код?

    • @ADV-IT
      @ADV-IT  4 ปีที่แล้ว +2

      github.com/adv4000/Python-Lessons/tree/master/For-Beginners

    • @visage6679
      @visage6679 4 ปีที่แล้ว

      @@ADV-IT спасибо

  • @xtereone
    @xtereone 4 ปีที่แล้ว +1

    Ни одного дизлайка)

  • @ПетрФролов-е6г
    @ПетрФролов-е6г 6 ปีที่แล้ว +1

    У меня есть свой, более короткий вариант кода передвижения спрайта, кому интересно пишите в комментарий.

    • @pro100trif
      @pro100trif 5 ปีที่แล้ว +1

      import pygame
      key_1,key_2,temp = None,None,None
      key_pressed=0
      Condition_1,Condition_2 = 1,1
      bg_color = (0,0,0)
      MAX_X,MAX_Y = 800,600
      x,y = 200,200
      img_x,img_y=100,100
      dict_of_motions = {pygame.K_LEFT: lambda x,y:(x-1,y),
      pygame.K_RIGHT: lambda x,y:(x+1,y),
      pygame.K_UP: lambda x,y:(x,y-1),
      pygame.K_DOWN: lambda x,y:(x,y+1),
      None:lambda x,y:(x,y)
      }
      pygame.init()
      screen= pygame.display.set_mode((MAX_X,MAX_Y))
      image_1 = pygame.image.load('Images\\Left.bmp').convert()
      image_1 = pygame.transform.scale(image_1,(img_x,img_y))
      pygame.display.set_caption('Game')
      while Condition_1:
      for i in pygame.event.get():
      if i.type==pygame.KEYDOWN:
      if i.key in dict_of_motions:
      Condition_2=1 # check_box for continue moving
      key_1 = i.key # remember a pressed key
      key_pressed+=1 # county of pressed key
      if i.type==pygame.KEYUP:
      if i.key in dict_of_motions:
      key_pressed-=1 # dec pressed key
      if key_pressed==0:
      Condition_2=0 # stop moving
      key_1=None # update remembered key
      if temp!=key_1: # check for repeating keys
      key_2=temp # if not repeating than remember this
      if Condition_2:
      if key_2!=key_1: # allows to move with 2 pressed btn
      x, y = dict_of_motions[key_1](x, y)
      x, y = dict_of_motions[key_2](x, y)
      else: # condition if only one btn is pressed
      x, y = dict_of_motions[key_2](x, y)
      temp = key_1
      if x < 0: x = 0
      if x > MAX_X - img_x: x = MAX_X - img_x
      if y < 0: y = 0
      if y > MAX_Y - img_y: y = MAX_Y - img_y
      screen.fill(bg_color)
      screen.blit(image_1,(x,y))
      pygame.display.flip()
      У меня как-то так