Как сделать Пинг-Понг на Python и PyGame

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

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

  • @НикитаПарфенов-х9в
    @НикитаПарфенов-х9в 2 года назад +5

    Прекрасное объяснение! Спасибо большое за объяснение, уже второй день с столкновениями мучался, а ты всё объяснил. Лайк, подписка. Удачи тебе!

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

    формат подачи топ) очень много полезного, спасибо!

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

    Заходит такой формат.. продолжай дальше... спасибо

  • @Олег-т3н9б
    @Олег-т3н9б 11 месяцев назад +1

    Интересно, как сделать, чтобы после рисования простого рисунка, секунд через 5 графическое окно с рисунком закрылось или вовсе питон закрыл сам себя?

  • @spacetab1
    @spacetab1 Год назад +2

    Очень сильно помогло в изучении, спасибо большое продолжайте в том же духе!

  • @МиланаШигапова
    @МиланаШигапова 3 года назад +1

    Вы думаете, его мотивируют лайки, подписки, просмотры? Нет, его мотивируют синнабоны

    • @симагеймс
      @симагеймс  3 года назад

      Спасибо в карман не положишь xD
      Но тсс, а то придется их все время готовить

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

    огонь❤

  • @Какой-точеловек-р5ц
    @Какой-точеловек-р5ц 3 года назад

    Я всегда задумывался зачем делать переменные с параментами окна
    (я просто Python недавно начал учить)

    • @симагеймс
      @симагеймс  3 года назад

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

    • @Какой-точеловек-р5ц
      @Какой-точеловек-р5ц 3 года назад

      Теперь понятно

  • @promanplayer8064
    @promanplayer8064 3 года назад

    Такой вопрос, if это если else ещё используется если выражение не действительно, а elif это типо от слова el(se) и if, его используют когда if и else не являются правдой?

    • @симагеймс
      @симагеймс  3 года назад

      elif используется после if, если нужно проверить еще одно условие. Потом, если необходимо, идет else - если ни одно из предыдущих условий не выполнено

    • @promanplayer8064
      @promanplayer8064 3 года назад

      @@симагеймс понял, благодарю

  • @симагеймс
    @симагеймс  3 года назад

    Все, я думаю можно заканчивать с этим... Уже целых 5 часов 39 минут...

  • @mrsmit6801
    @mrsmit6801 3 года назад

    формат видео просто огонь продолжай в том же духе

    • @симагеймс
      @симагеймс  3 года назад

      Спасибо)) Долгие интересно смотреть?

    • @mrsmit6801
      @mrsmit6801 3 года назад

      @@симагеймс ты знаешь я не знаю как будет если просто смотреть. Я смотрю и сразу пишу код где надо отматываю назад что бы услышать объяснения. Так что даже если будет 3-4 часа я просто разобью на 2 раза но все равно досмотрю.

    • @симагеймс
      @симагеймс  3 года назад

      @@mrsmit6801 Понял, хорошо)

  • @ФомаКаменев
    @ФомаКаменев 2 года назад

    Не понял. Зачем отдельно инициализировать pygame.font.init() если pygame.init() и так уже инициализирует все вложенные модули библиотеки Pygame?

    • @симагеймс
      @симагеймс  2 года назад

      Была какая-то проблема с шрифтами, получилось только через повторную инициализацию исправить. Точно не помню

  • @1234АК
    @1234АК 3 года назад

    Мне очень понравились можешь змейку сделать пожалуста🤗😁

    • @симагеймс
      @симагеймс  3 года назад

      Я изначально выбирал между понгом и змейкой) Значит следующая будет змейкой!

  • @promanplayer8064
    @promanplayer8064 3 года назад

    Дарова, интересный контент, можешь записать ролик как сделать меню на базе PyGame и PyGame_menu

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

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

    • @симагеймс
      @симагеймс  2 года назад +1

      Сделаю туториал, уже думал на эту тему

  • @AKKBS-of6xj
    @AKKBS-of6xj 5 месяцев назад +1

    Можно код?

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

    А есть где-то полный код программы?

    • @симагеймс
      @симагеймс  2 года назад +3

      import pygame as pg
      import random
      pg.init()
      pg.font.init()
      TITLE = "Half Pong"
      WIDTH = 800
      HEIGHT = 480
      WHITE = (255, 255, 255)
      BLACK = (0, 0, 0)
      FPS = 60
      PLATFORM_WIDTH = 100
      PLATFORM_HEIGHT = 15
      PLATFORM_SPEED = 10
      platform_rect = pg.rect.Rect(WIDTH / 2 - PLATFORM_WIDTH / 2,
      HEIGHT - PLATFORM_HEIGHT * 2,
      PLATFORM_WIDTH,
      PLATFORM_HEIGHT)
      CIRCLE_RADIUS = 15
      CIRCLE_SPEED = 10
      circle_first_collide = False
      circle_x_speed = 0
      circle_y_speed = CIRCLE_SPEED
      circle_rect = pg.rect.Rect(WIDTH / 2 - CIRCLE_RADIUS,
      HEIGHT / 2 - CIRCLE_RADIUS,
      CIRCLE_RADIUS * 2,
      CIRCLE_RADIUS * 2)
      score = 0
      ARIAL_FONT_PATH = pg.font.match_font('arial')
      ARIAL_FONT_48 = pg.font.Font(ARIAL_FONT_PATH, 48)
      ARIAL_FONT_36 = pg.font.Font(ARIAL_FONT_PATH, 36)
      size = (WIDTH, HEIGHT)
      screen = pg.display.set_mode(size)
      pg.display.set_caption(TITLE)
      clock = pg.time.Clock()
      running = True
      game_over = False
      while running:
      for event in pg.event.get():
      if event.type == pg.QUIT:
      running = False
      continue
      elif event.type == pg.KEYDOWN:
      if event.key == pg.K_ESCAPE:
      running = False
      continue
      elif event.key == pg.K_r:
      game_over = False
      circle_rect.center = [WIDTH / 2, HEIGHT / 2]
      circle_x_speed = 0
      circle_y_speed = CIRCLE_SPEED
      circle_first_collide = False
      platform_rect.centerx = WIDTH / 2
      platform_rect.bottom = HEIGHT - PLATFORM_HEIGHT
      score = 0
      screen.fill(BLACK)
      if not game_over:
      keys = pg.key.get_pressed()
      if keys[pg.K_a]:
      platform_rect.x -= PLATFORM_SPEED
      elif keys[pg.K_d]:
      platform_rect.x += PLATFORM_SPEED
      if platform_rect.colliderect(circle_rect):
      if not circle_first_collide:
      if random.randint(0, 1) == 0:
      circle_x_speed = -CIRCLE_SPEED
      else:
      circle_x_speed = CIRCLE_SPEED
      circle_first_collide = True
      circle_y_speed = -CIRCLE_SPEED
      score += 1
      pg.draw.rect(screen, WHITE, platform_rect)
      circle_rect.x += circle_x_speed
      circle_rect.y += circle_y_speed
      if circle_rect.bottom >= HEIGHT:
      game_over = True
      circle_y_speed = -CIRCLE_SPEED
      elif circle_rect.top = WIDTH:
      circle_x_speed = -CIRCLE_SPEED
      elif circle_rect.left

  • @Евгений-ь8х1к
    @Евгений-ь8х1к 2 года назад

    Здравствуйте, как можно с Вами связаться?

    • @симагеймс
      @симагеймс  2 года назад

      Привет, под последними видео есть ссылка на Telegram

    • @симагеймс
      @симагеймс  2 года назад

      Или через Discord

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

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

    • @симагеймс
      @симагеймс  Год назад +1

      Добавить проверки на ее координаты. Что-то вроде if x < 0: x = 0

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

      спасибо@@симагеймс

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

    Почему я все написал правильно но шар и платформа уходят за приделы

    • @симагеймс
      @симагеймс  2 года назад

      Значит где-то есть ошибка, перепроверь

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

      @@симагеймс хорошо спасибо

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

    ты конечно молодец но много лишнего кода и много лишних переменных и кода вовсе

    • @симагеймс
      @симагеймс  2 года назад

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