Уроки по Python. Делаем игру Пинг-понг на Питоне (Часть 1)

Поделиться
HTML-код
  • Опубликовано: 5 окт 2024
  • Создаем игру пинг-понг (настольный теннис) на языке программирования Питон! (Python)
    Чтобы все работало, используй английскую раскладку клавиатуры!
    Ставь лайк, если тебе понравилось видео :)
    ►► Подписывайся на наш канал:www.youtube.co....
    РЕКОМЕНДОВАННЫЕ ВИДЕО ►
    ----------------------------------------------------
    "Уроки по Python. Делаем Paint на Питоне" - www.youtube.co....
    "Уроки по Python. Как сделать Логин и пароль на Python. Форма регистрации на Питоне" - www.youtube.co....
    "Уроки по Python. Как сделать простую игру кликер БОМБА на Питоне" - www.youtube.co....
    Где нас можно найти ►
    --------------------------------------
    ★ Наш сайт: itgen.io
    ★ Skype: itgen.by (Айтигеник)
    ★ Вконтакте: itgenio...
    ★ Фейсбук: / itgen.io
    Популярные плейлисты ►
    -------------------------------------------
    ● Игры на Scratch: • Уроки по Scratch. Как ... .
    ● Игры и проекты на Python: • Уроки по Python. Твой ... .
    ● Javascript для начинающих: • Уроки по JavaScript. К... .
    ● Уроки по Фотошопу: • Уроки по Photoshop. Ри... .
    ● 3D-моделирование: • Уроки по 3D. Делаем 3D... .
    ● Советы начинающему видеоблогеру: • Как создать канал на Y... .

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

  • @lodyr_john
    @lodyr_john 7 лет назад +2

    Хотелось бы знать где были ошибки и какие средства были приняты для их исправления (на перспективу в следующих видео). Без этого теряется мысль и уходит уйма времени для нахождения её, что для новичка, а в частности для детей, не есть хорошо. В остальном отлично! Спасибо

  • @fasttrack6492
    @fasttrack6492 5 лет назад +13

    Я просто не понял как вы её исправили

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

      Правая ракетка вместо HEIGHT- на WIDTH-

  • @АнтонЛибреттов
    @АнтонЛибреттов 4 года назад +1

    контент начинается 1:00

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

    Очень интересно! Сейчас начну делать!

  • @vasil-vasil
    @vasil-vasil 3 года назад +1

    У пайтоне правило "Константа в верхнем регистре" не применяется?

  • @loremipsum462
    @loremipsum462 6 лет назад +5

    Можете дать ссылку на скачивание этой программы и инструкцию по скачиваю(на всякий случай), пожалуйста) А так видео очень хорошое!

  • @ЗубнойПарикмахер-ж9р

    ЭТО КОД ИЗ ЭТОГО ВИДЕО:
    from tkinter import *
    WIDTH = 500
    HEIGHT = 500
    PAD_W = 10
    PAD_H = 100
    BALL_RADIUS = 40
    BALL_X_CHANGE = 50
    BALL_Y_CHANGE = 0
    #Окно
    root = Tk()
    root.title("Ping - Pong")
    #Настройка окны
    n = Canvas(root, width=WIDTH, height=HEIGHT, background="black")
    n.pack()
    #Левая линия
    n.create_line(PAD_W, 0, PAD_W, HEIGHT, fill="white")
    #Правая линия
    n.create_line(WIDTH - PAD_W, 0, WIDTH - PAD_W, HEIGHT, fill="white")
    #Разделитель поля
    n.create_line(WIDTH/ 2, 0, WIDTH / 2, HEIGHT, fill="white")
    #Мяч
    BALL = n.create_oval(WIDTH / 2 - BALL_RADIUS / 2, HEIGHT / 2 - BALL_RADIUS / 2, WIDTH / 2 + BALL_RADIUS / 2,
    HEIGHT / 2 + BALL_RADIUS / 2, fill="white")
    #Левая ракетка
    LEFT_PAD = n.create_line(PAD_W / 2, 0, PAD_W /2, PAD_H, width=PAD_W, fill="red" )
    #Правая ракетка
    RIGHT_PAD = n.create_line(WIDTH - PAD_W / 2, 0, HEIGHT - PAD_W /2, PAD_H, width=PAD_W, fill="blue" )
    def ball_pong():
    n.move(BALL, BALL_X_CHANGE, BALL_Y_CHANGE)
    def main():
    ball_pong()
    root.after(50, main)
    main()
    root.mainloop()

  • @technoboss2968
    @technoboss2968 3 года назад +1

    Вы не так все обьесняете как будто актеров с текстом поставили не обьясньяете как скачать просто говорите вот это пишем и все а что это такое для чего оно нужно как обозначаеться эта команда просто пишем это и все

  • @oleglomachenko4662
    @oleglomachenko4662 7 лет назад +5

    А как сделать чтобы линии небыли кривыми

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

    Блин, камон, что это вообще - ПОЧЕМУ НАМ НИЧЕГО НЕ ОБЪЯСНЯЮТ? Ведь получается, что мы тупо смотрим как человек думает над задачей(причем не вслух) и копируем решение - и все?? Так ничему научиться нельзя - это просто тактика попугая - копирование и вставление кода, мммммммммм приятно

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

      Ещё как можно! А это скорее как одна из техник обучения! Приходи к нам на бесплатный урок и попробуй сам😉

  • @t.khvyts8219
    @t.khvyts8219 7 лет назад +6

    а гта сделаете ?

    • @itgenio
      @itgenio  7 лет назад +5

      сделаем :)

  • @zoomzoomchannel
    @zoomzoomchannel 7 лет назад

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

    • @deepSeaMind
      @deepSeaMind 7 лет назад

      Смотря, где ты обитаешь. Во многих странах питон - довольно перспективен, и имеет неплохое сообщество. Но если ты, например, из Беларуси или стран СНГ, то там больше ценится JS. Всё фломастерно, короче :) Можешь сам посмотреть, какой из этих языков тебе больше нравится, и выбрать, какой изучать :)

    • @zoomzoomchannel
      @zoomzoomchannel 7 лет назад

      ну питон то учу, вроде нравится синтаксисом, а с местоположением угадали) Беларусь)

    • @СоняФадеева-щ3ц
      @СоняФадеева-щ3ц 5 лет назад +1

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

  • @freem861
    @freem861 7 лет назад +3

    вау!!!

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

    А как вы исправили ошибку на 15:37? Там не ясно

  • @super_catchannel2276
    @super_catchannel2276 6 лет назад +1

    что делать если пишет "Process finished with exit code 0" и не запускается окно с игрой?

    • @СоняФадеева-щ3ц
      @СоняФадеева-щ3ц 5 лет назад

      Ошибка синтаксиса,проверь постановку запятых и написанных функций

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

      @@artcchi6730 а ещё проще просто mainloop()

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

    Traceback (most recent call last):
    File "C:\Users\ASUS\PycharmProjects\pong\pong2.py\main.py", line 28, in
    c.create_line(PAD_W, 0, PAD_W, HEIGHT, fill="white")
    почемууу

    • @НикитаДемьяненко-э8ж
      @НикитаДемьяненко-э8ж 3 года назад

      Может потому что pong2.py это не папка, а файл в формате питона. Ты не правильно написал путь

  • @ВикторияФотиева-ц4б

    Какое было исправление ошибок в ракетках

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

    Для игр вообще то есть специальная библиотека pygame😑😉

  • @fasttrack6492
    @fasttrack6492 5 лет назад

    А какая именно ошибка ?

  • @t.khvyts8219
    @t.khvyts8219 7 лет назад +1

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

    • @itgenio
      @itgenio  7 лет назад +1

      можешь в EXE перевести, посмотри у нас есть видео на канале

    • @t.khvyts8219
      @t.khvyts8219 7 лет назад

      ITGENIO а как в скреч офлайн едитор айди проекта узнать ?

  • @tailsofficial289
    @tailsofficial289 5 лет назад +4

    разгадал ошибку!!! там в конце в место HEIGHT нужно поставить WIDTH!!! изи!!!

    • @tailsofficial289
      @tailsofficial289 5 лет назад

      где правая ракетка!

    • @tailsofficial289
      @tailsofficial289 5 лет назад

      ошибок куча пишите мне в дискорд "trololoshkaX5#8854", дам весь код

    • @НазарГрабовський-е6с
      @НазарГрабовський-е6с 4 года назад

      @@tailsofficial289 привіт
      можеш скинути код?
      але можна з тобою зв'язатись не через дискорд, бо я тебе не можу знайти

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

      Спасибо брат

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

      @@НазарГрабовський-е6с я изменил дискорд TAILS Official#8854

  • @roman_gulyaykin
    @roman_gulyaykin 6 лет назад

    почему у меня отображается только поле? ни мяча, ни делителя поля

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

    а где 2-ая часть?

  • @АлексейФокстрот
    @АлексейФокстрот 3 года назад

    Здравствуйте в общем круто
    Но у меня запустилась игра без полосок поосто окно с фоном - почему?
    Вовторых нихрена не видно где вы создаете этот файл - тупо бред час стораний в никуда пиздец

  • @B6G
    @B6G 6 лет назад

    Что за программа?

  • @ЗубнойПарикмахер-ж9р

    МОЖЕТЕ КОД ПРИСЛАТЬ

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

    my program might not be right but close

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

      from tkinter import *
      import random
      import math
      import datetime
      width= 900
      height= 300
      player_1_score = 0
      player_2_score = 0
      initial_speed = 20
      pad_w = 10
      pad_h = 100
      ball_radius = 40
      ball_x_change = 20
      ball_y_change = 0
      root = Tk()
      root.title('ping-pong')
      c = Canvas(root, width=width, height=height, highlightbackground='#008B8B')
      c.pack()
      c.create_line(pad_w, 0, pad_w, height, fill='white')
      c.create_line(width-pad_w, 0, width-pad_w, height, fill='white')
      c.create_line(width/2, 0, width/2, height, fill='white')
      ball = c.create_oval(width/2-ball_radius/2, height/2-ball_radius/2, width/2+ball_radius/2, height/2+ball_radius/2, fill='#FF4500')
      left_pad = c.create_line(pad_w/2, 0, pad_w/2, pad_h, width= pad_w, fill='#DA70D6')
      right_pad = c.create_line(width-pad_w/2, 0, width-pad_w/2, pad_h, width=pad_w, fill='#DA70D6')
      p_1_text = c.create_text(width - width / 6, pad_h/4, text=player_1_score, font='Arial 20', fill='aqua')
      p_2_text = c.create_text(width / 6, pad_h/4, text=player_2_score, font='Arial 20', fill='aqua')
      pad_speed = 20
      left_pad_speed = 0
      right_pad_speed = 0
      ball_speed_up = 1.00
      ball_max_speed = 30
      ball_x_speed = 20
      ball_y_speed = 20
      right_line_distance = width - pad_w
      def update_score(player):
      global player_1_score, player_2_score
      if player == 'right':
      player_1_score+=1
      c.itemconfig(p_1_text, text=player_1_score)
      else:
      player_2_score+=1
      c.itemconfig(p_2_text, text=player_2_score)
      def spawn_ball():
      global ball_x_speed
      c.coords(ball, width/2-ball_radius/2, height/2-ball_radius/2, width/2+ball_radius/2, height/2+ball_radius/2)
      ball_x_speed = -(ball_x_speed * - initial_speed)/abs(ball_x_speed)
      def bounce(action):
      global ball_x_speed, ball_y_speed
      if action == 'strike':
      ball_y_speed = random.randrange(-10, 10)
      if abs(ball_x_speed)< ball_max_speed:
      ball_x_speed *= -ball_speed_up
      else:
      ball_x_speed = -ball_x_speed
      else:
      ball_y_speed = -ball_y_speed
      def move_ball():
      ball_left, ball_top, ball_right, ball_bot = c.coords(ball)
      ball_center = (ball_top + ball_bot) / 2
      if ball_right + ball_x_speed < right_line_distance and ball_left + ball_x_speed > pad_w:
      c.move(ball, ball_x_speed, ball_y_speed)
      elif ball_right == right_line_distance or ball_left == pad_w:
      if ball_right > width / 2:
      if c.coords(right_pad)[1]< ball_center < c.coords(right_pad)[3]:
      bounce('strike')
      else:
      update_score('left')
      spawn_ball()
      else:
      if c.coords(left_pad)[1] < ball_center < c.coords(left_pad)[3]:
      bounce('strike')
      else:
      update_score('right')
      spawn_ball()
      else:
      if ball_right > width /2:
      c.move(ball, right_line_distance-ball_right, ball_y_speed)
      else:
      c.move(ball, -ball_left+pad_w, ball_y_speed)
      if ball_top + ball_y_speed < 0 or ball_bot + ball_y_speed > height:
      bounce('ricochet')

      def move_pads():
      pads = {left_pad:left_pad_speed, right_pad:right_pad_speed}
      for pad in pads:
      c.move(pad, 0, pads[pad])
      if c.coords(pad)[1]< 0:
      c.move(pad, 0, -c.coords(pad)[1])
      elif c.coords(pad)[3]>height:
      c.move(pad, 0, height - c.coords(pad)[3])
      def main():
      move_ball()
      move_pads()
      root.after(30, main)
      c.focus_set()
      def moveent_handler(event):
      global left_pad_speed
      global right_pad_speed
      if event.keysym == 'W':
      left_pad_speed = -pad_speed
      elif event.keysym == 'S':
      left_pad_speed = pad_speed
      elif event.keysym == 'Up':
      right_pad_speed = -pad_speed
      elif event.keysym == 'Down':
      right_pad_speed = pad_speed
      c.bind('', moveent_handler)
      def stop_pad(event):
      global left_pad_speed
      global right_pad_speed
      if event.keysym == 'w':
      left_pad_speed = 0
      elif event.keysym == 's':
      left_pad_speed = 0
      elif event.keysym in ('Up', 'Down'):
      right_pad_speed = 0
      c.bind('', stop_pad)

      main()
      root.mainloop()

  • @ДаниэльСнайперДнарскогопосольс

    Белый стиль плохой

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

    Что делать если ошибка вот такая RIGHT_PAD = c.create_line(WIDTH-PAD_W/2, 0, HEIGHT-PAD_W/2, PAD_H, width=PAD_W, fill=#7FFF00)
    ^
    SyntaxError: invalid syntax

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

      Лучше приходи на заняти и тренер тебе все объяснит, будешь разбираться, а не просто копировать, вся информация есть у нас на сайте itgen.io/

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

      @@itgenio Записался давно, пока со скретчем работаю

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

      А кто тренер? Я лично попрошу его помочь тебе с этой ошибкой!

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

      @@itgenio Я же говорю пока что со скретчем, я хочу попробовать пока что сам создавать на python

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

      @@dedmouse2983 я исправил ошибку. Помочь тебе?

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

    Наверняка кому-то будет нужно, поэтому оставлю правильный код
    from tkinter import *
    # global
    # window settings
    WIDTH = 900
    HEIGHT = 300
    # pad setting
    # pad ширина
    PAD_W = 10
    # pad длина
    PAD_H = 100
    # ball settings
    # ball radius
    BALL_RADIUS = 40
    # speed of ball
    # levo pravo
    BALL_X_CHANGE = 20
    # verh niz
    BALL_Y_CHANGE = 0
    # window
    root = Tk()
    root.title("пинг понг :)")
    # canvas
    c = Canvas(root, width=WIDTH, height=HEIGHT, background="#008B8B")
    c.pack()
    # elements of playground
    # leftline
    c.create_line(PAD_W, 0, PAD_W, HEIGHT, fill="white")
    # rightline
    c.create_line(WIDTH-PAD_W, 0, WIDTH-PAD_W, HEIGHT, fill="white")
    # separator of playground
    c.create_line(WIDTH/2, 0, WIDTH/2, HEIGHT, fill="white")
    #ball
    BALL = c.create_oval(WIDTH/2-BALL_RADIUS/2, HEIGHT/2-BALL_RADIUS/2,WIDTH/2+BALL_RADIUS,HEIGHT/2+BALL_RADIUS/2, fill="red")
    # pads
    #left pad
    LEFT_PAD = c.create_line(PAD_W/2, 0, PAD_W/2, PAD_H, width=PAD_W, fill="purple")
    #right pad
    RIGHT_PAD = c.create_line(WIDTH-PAD_W/2, 0, WIDTH-PAD_W/2, PAD_H, width=PAD_W, fill="purple")
    #functions move ball
    def move_ball():
    c.move(BALL, BALL_X_CHANGE, BALL_Y_CHANGE)
    def main():
    move_ball()
    # sumon sami sebya
    root.after(30,main)
    # start
    main()
    root.mainloop()

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

      Можешь пж код со 2 части скинуть

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

    - уши

  • @VlansTime
    @VlansTime 7 лет назад

    сделайте фнаф 5

    • @VlansTime
      @VlansTime 7 лет назад

      скретч

    • @PRONICgg
      @PRONICgg 6 лет назад

      нет

    • @rockychico
      @rockychico 5 лет назад +2

      Херни не делаем

    • @kirillusenko
      @kirillusenko 4 года назад +3

      @@rockychico если фнаф 5 и на питоне, то PyGame))

  • @alxzhdanov
    @alxzhdanov 6 лет назад +2

    Речь просто ужасна, что В Принципе для преподавателя не приемлемо.

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

      полностью согласен... "Аааммм", " Эээммм"... Через каждое слово произносит слово "Впринципе"...

    • @SandwichGamesHeavy
      @SandwichGamesHeavy 6 месяцев назад

      @@Valpir XD