Отличный темп повествования и продолжительность видео (не утомляет)! За 2 дня осилил 27 уроков т.к какие-то начальные знания уже имелись было проще. В целом, лучшие уроки по Python из тех, что я находил, спасибо за ваш труд! :)
Я все думал, нафига я заместо pycharm использую vim, пока не понадобилось передвинуть кусок кода. Выделяем, нажимаем < вуаля! Код сдвинут ровно на 1 tab. Спасибо за видео, btw
А можете еще подсказать почему у меня команды не подхватывает Pycharm. Такое ощущение что он их не знает, выделяет цветом, но все исполняет. www.screencast.com/t/F2UOTyTy А при наборе нету контекстного меню с подсказками, и я не могу посмотреть какие еще есть варианты команд.
можно добавить что-то типа: 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 у меня это работает :)
@@ADV-IT Не мышь входит, а картинка, т. к. позиционируется ее верхний левый угол, поэтому клики возле правой и нижней границы размещают картинку так что часть ее вылезает за MAX_X и MAX_Y
@@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
Определяешь границы обеих картинок, например картинка размером 100*100, левый верхний угол которой находится в точке (200, 300), таким образом чтобы определить, принадлежит ли точка к картинке, нужно проверить два условия, икс должен быть в диапазоне от 200 до 300, одновременно игрек должен быть в диапазоне от 300 до 400. Таким образом, можно для каждого из углов второй картинки проверить, принадлежит ли он к данному диапазону, если принадлежит, значит есть пересечение, значит просто прекращаем отображение той картинки, которая должна исчезнуть. Метод с углами, конечно, подойдет только для прямоугольных картинок, но, я думаю, для общего понятия этого достаточно.
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() У меня как-то так
Отличный темп повествования и продолжительность видео (не утомляет)! За 2 дня осилил 27 уроков т.к какие-то начальные знания уже имелись было проще. В целом, лучшие уроки по Python из тех, что я находил, спасибо за ваш труд! :)
+
+
Случайно зашел! Автор - свой чувак! доходчиво рассказывает на родном языке! Агонь!!
Спасибо за уроки! Все работает, хотя прошло уже 3 года)
Я все думал, нафига я заместо pycharm использую vim, пока не понадобилось передвинуть кусок кода. Выделяем, нажимаем < вуаля! Код сдвинут ровно на 1 tab.
Спасибо за видео, btw
может кому будет полезно, для удаления отступов, шифт+таб удаляет 1 отступ.
Ооо, вот то, что мне не давало покоя, спасибо огромное
Наверное, так и начиналась разработка Quake )))
Спс за урок, всё получилось, картинка движется , но только намного быстрее чем у тебя , почему то.
Компутер наверное быстрее у тебя :)
Хотя у меня i7-4700 не медленный, ты точно двигаешь картинку по одному пикселю?
X-=1
X+=1
Y-=1
Y+=1
Может у тебя не 1 , а 2 или больше?
Если 1 то у тебя однозначно комп быстрее :)
у меня тоже быстрее!
+1, комп у меня точно слабее Вашего!
просто у меня разрешение стоит меньше 800х600 - я думаю вот причина большей скорости)..
А есть какая-нибудь функция, которая делает экран прозрачным? чтобы место черного фона был экран рабочего стола
Спасибо! Круто. Почти первая игра) Только если мышкой ткнуть в крайнюю правую часть экрана, то картинка все равно уйдет за границы экрана. Читерство)
Надо просто проверку одну добавить на координаты кликания и всё :)
А можете еще подсказать почему у меня команды не подхватывает Pycharm. Такое ощущение что он их не знает, выделяет цветом, но все исполняет. www.screencast.com/t/F2UOTyTy
А при наборе нету контекстного меню с подсказками, и я не могу посмотреть какие еще есть варианты команд.
Попробуй в самом начале кода сделать import по другому:
from pygame import *
Теперь все идеально! Спасибо)
можно добавить что-то типа:
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
у меня это работает :)
Прикольный урок) Отступлю от темы. Не подскажешь как длинный аудио файл разбить на треки по 5 минут?
Любым Аудио редактором , даже online: audiotrimmer.com/
@@ADV-IT да на компе есть софт. Хотел попрактиковаться именно в питоне)
а бэкграунд можно сделать прозрачный? как оверлей приложуху сделать
в уроке про снежинки я показываю как сделать прозрачный
При перемещении картинки мышью, она выходит за пределы правой и нижней границы экрана, как это исправить?
Ты прикалываешся?
Попробуй прям щяз в Windows двинуть мышь и она выходит за пределы правой и нижней границы экрана
@@ADV-IT Не мышь входит, а картинка, т. к. позиционируется ее верхний левый угол, поэтому клики возле правой и нижней границы размещают картинку так что часть ее вылезает за MAX_X и MAX_Y
@@rusamericaru Ну поставь проверки на location просто и не перерисосывай картинку когда координаты мышки + размер картинки > MAX_X or MAX_Y
@@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
Хорошо, а какой модуль надо использовать не для игр, а для других задач, более батанических )
Их многие тисячи, посмотри в инете ботанические модули
А КАК можно сделать, чтобы картинка которой управляешь к примеру поглащял другую картинку
на подобии змейки
Определяешь границы обеих картинок, например картинка размером 100*100, левый верхний угол которой находится в точке (200, 300), таким образом чтобы определить, принадлежит ли точка к картинке, нужно проверить два условия, икс должен быть в диапазоне от 200 до 300, одновременно игрек должен быть в диапазоне от 300 до 400. Таким образом, можно для каждого из углов второй картинки проверить, принадлежит ли он к данному диапазону, если принадлежит, значит есть пересечение, значит просто прекращаем отображение той картинки, которая должна исчезнуть. Метод с углами, конечно, подойдет только для прямоугольных картинок, но, я думаю, для общего понятия этого достаточно.
а что картинка не прямоугольная а круглая?
прямоугольная
спонсор выпуска Интел))
оу привет, а где взять код?
github.com/adv4000/Python-Lessons/tree/master/For-Beginners
@@ADV-IT спасибо
Ни одного дизлайка)
У меня есть свой, более короткий вариант кода передвижения спрайта, кому интересно пишите в комментарий.
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()
У меня как-то так