Уроки по 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... .
Хотелось бы знать где были ошибки и какие средства были приняты для их исправления (на перспективу в следующих видео). Без этого теряется мысль и уходит уйма времени для нахождения её, что для новичка, а в частности для детей, не есть хорошо. В остальном отлично! Спасибо
Я просто не понял как вы её исправили
Правая ракетка вместо HEIGHT- на WIDTH-
контент начинается 1:00
Очень интересно! Сейчас начну делать!
У пайтоне правило "Константа в верхнем регистре" не применяется?
Можете дать ссылку на скачивание этой программы и инструкцию по скачиваю(на всякий случай), пожалуйста) А так видео очень хорошое!
PyCharm
ЭТО КОД ИЗ ЭТОГО ВИДЕО:
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()
Вы не так все обьесняете как будто актеров с текстом поставили не обьясньяете как скачать просто говорите вот это пишем и все а что это такое для чего оно нужно как обозначаеться эта команда просто пишем это и все
А как сделать чтобы линии небыли кривыми
Задать нужные координаты
Блин, камон, что это вообще - ПОЧЕМУ НАМ НИЧЕГО НЕ ОБЪЯСНЯЮТ? Ведь получается, что мы тупо смотрим как человек думает над задачей(причем не вслух) и копируем решение - и все?? Так ничему научиться нельзя - это просто тактика попугая - копирование и вставление кода, мммммммммм приятно
Ещё как можно! А это скорее как одна из техник обучения! Приходи к нам на бесплатный урок и попробуй сам😉
а гта сделаете ?
сделаем :)
Слишком круто. а вообще есть ли смысл его учить, насколько перспективен питон? или сразу лезть в джава скрипт, с++ и прочие языки?
Смотря, где ты обитаешь. Во многих странах питон - довольно перспективен, и имеет неплохое сообщество. Но если ты, например, из Беларуси или стран СНГ, то там больше ценится JS. Всё фломастерно, короче :) Можешь сам посмотреть, какой из этих языков тебе больше нравится, и выбрать, какой изучать :)
ну питон то учу, вроде нравится синтаксисом, а с местоположением угадали) Беларусь)
Если ты выучил один язык то как бы и второй и третий выучить не проблема.А так все языки перспективны ,но это зависит от местоположения и сферы в которой ты хочешь работать.
вау!!!
А как вы исправили ошибку на 15:37? Там не ясно
что делать если пишет "Process finished with exit code 0" и не запускается окно с игрой?
Ошибка синтаксиса,проверь постановку запятых и написанных функций
@@artcchi6730 а ещё проще просто mainloop()
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")
почемууу
Может потому что pong2.py это не папка, а файл в формате питона. Ты не правильно написал путь
Какое было исправление ошибок в ракетках
Для игр вообще то есть специальная библиотека pygame😑😉
А какая именно ошибка ?
как сделать чтоби в скреч офлайн едитор проект запускался как игра ,а не редактор ?
можешь в EXE перевести, посмотри у нас есть видео на канале
ITGENIO а как в скреч офлайн едитор айди проекта узнать ?
разгадал ошибку!!! там в конце в место HEIGHT нужно поставить WIDTH!!! изи!!!
где правая ракетка!
ошибок куча пишите мне в дискорд "trololoshkaX5#8854", дам весь код
@@tailsofficial289 привіт
можеш скинути код?
але можна з тобою зв'язатись не через дискорд, бо я тебе не можу знайти
Спасибо брат
@@НазарГрабовський-е6с я изменил дискорд TAILS Official#8854
почему у меня отображается только поле? ни мяча, ни делителя поля
У меня также
а где 2-ая часть?
Здравствуйте в общем круто
Но у меня запустилась игра без полосок поосто окно с фоном - почему?
Вовторых нихрена не видно где вы создаете этот файл - тупо бред час стораний в никуда пиздец
Что за программа?
МОЖЕТЕ КОД ПРИСЛАТЬ
my program might not be right but close
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()
Белый стиль плохой
Ей нравится.
Что делать если ошибка вот такая RIGHT_PAD = c.create_line(WIDTH-PAD_W/2, 0, HEIGHT-PAD_W/2, PAD_H, width=PAD_W, fill=#7FFF00)
^
SyntaxError: invalid syntax
Лучше приходи на заняти и тренер тебе все объяснит, будешь разбираться, а не просто копировать, вся информация есть у нас на сайте itgen.io/
@@itgenio Записался давно, пока со скретчем работаю
А кто тренер? Я лично попрошу его помочь тебе с этой ошибкой!
@@itgenio Я же говорю пока что со скретчем, я хочу попробовать пока что сам создавать на python
@@dedmouse2983 я исправил ошибку. Помочь тебе?
Наверняка кому-то будет нужно, поэтому оставлю правильный код
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()
Можешь пж код со 2 части скинуть
- уши
сделайте фнаф 5
скретч
нет
Херни не делаем
@@rockychico если фнаф 5 и на питоне, то PyGame))
Речь просто ужасна, что В Принципе для преподавателя не приемлемо.
полностью согласен... "Аааммм", " Эээммм"... Через каждое слово произносит слово "Впринципе"...
@@Valpir XD