LINUX.ORG.RU

[Python]Где упущение?

 


0

1
def randomness():
	x2=random.randint(0,800)
	y2=random.randint(0,600)
	return x2,y2
x2,y2 = randomness()
screen.blit(image, (x2,y2))
pygame.display.flip()

и попутный вопрос, есть ли еще способы вывести изображение в заданных координатах?(гуглил, может быть плохо, но не нашел)

★★

Ответ на: комментарий от anonymous

Интересный ответ, тему не назвал «в чем ошибка», чтобы не ответили «в ДНК», малаца, уидвил батю

nutz ★★
() автор топика
Ответ на: комментарий от anonymous

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

nutz ★★
() автор топика
Ответ на: комментарий от Ijon

Это искренне, или саркастичное указывание на ошибку?Если второе то скобки там не нужны, хз зачем там

nutz ★★
() автор топика
Ответ на: комментарий от nutz

+ к этому ты image3 выводишь на экран до того как выводишь фон, следовательно фон в любом случае перекроет image3. Либо расставь в правильном порядке, либо в 34 строке

screen.blit(image3, (x2,y2))

замени на

backgr.blit(image3, (x2,y2))

Chubakur ★★
()
Ответ на: комментарий от Chubakur

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

nutz ★★
() автор топика
Ответ на: комментарий от Chubakur

btw, спасибо за помощь, радостно что кто-то помогает, а не просто комментирует по поводу школьничества, да и не школьник я уже, и специальность не программист, учу для себя

nutz ★★
() автор топика
Ответ на: комментарий от nutz

> а не просто комментирует по поводу школьничества, да и не школьник я уже, и специальность не программист, учу для себя

Первокурсник?

Школьниками называют тех людей, которые:

1) Спрашивают очевидные вещи, и делают это коряво

2) Людей, не в состоянии сформулировать проблему и задать грамотно вопрос. Особенно, если вопрос о ерунде.

3) Людей, спрашивающих о вещах, изучаемых в _школьной_ программе.

anonymous
()
Ответ на: комментарий от anonymous

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

nutz ★★
() автор топика

>Где упущение?

Здесь:

Python

Led ★★★☆☆
()
Ответ на: комментарий от Chubakur

Ну, когда мышка на расстоянии, напрмиер d< 40, вторая картинка должна рандомайзит ьсвое положение, чего она не делает

nutz ★★
() автор топика

Потому что у тебя этого не запрограммировано даже. Ты переменной d присваиваешь значение один раз. До начала цикла. Затем меняешь переменные x1,y1 в зависимости от позиции курсора, а значение d не обновляешь. Сделай хотя бы print d,x1,y1 в цикле. Посмотри как они меняются. Надо как минимум делать d = distance() в цикле, после назначения переменных x1,y1. Далее надо понимать что метод blit рисует на данной поверхности рисунок. То есть если в первом кадре на квадрате нарисуешь круг(сделаешь blit), а во втором кадре решишь blit не делать , а просто выведешь квадрат на экран, то круг на квадрате будет! Так как изменилось само изображение квадрата. Я такие случаи решаю так:

Когда ввожу поверхность(Surface) , в твоем случае это image3,cursor,screen,backgr может еще что, я делаю копии этих объектов. Например:

image3 = pygame.image.load(image_path)

image3_backup = image3.copy()

И после того в цикле, после того как выведешь изображение на экран опять сделай объекты такими, какими они были изначально. Например:

image3 = image3_backup.copy()

Chubakur ★★
()
Ответ на: комментарий от Chubakur

Не особо понял зачем копии, но с остальным ща буду думат

nutz ★★
() автор топика
Ответ на: комментарий от Chubakur

С изменением расстояния разобрался, принт и до этого делал, но как-то не обратил внимания что он не меняется, но как приказать image3 появляться не просто в рандомных местах , А ТОЛЬКО при условии что расстояние будет меньше заданного.

Спасибо

nutz ★★
() автор топика
Ответ на: комментарий от Chubakur

Да, есть условие только скорее d < 100, то блитать с теми координатами, но почему-то программа не смотрит на условие, а блитает просто в рандомных местах, жутко бесит

nutz ★★
() автор топика
Ответ на: комментарий от nutz

Программа всегда смотрит на условие, просто возможно у тебя параметры не правильно задаются. Сделай print параметров при входе в условие. Возможно он и вправду туда попадает.

Chubakur ★★
()
Ответ на: комментарий от Chubakur

Тогда исправил, потом опять видимо манипулировал строками, и переместил

nutz ★★
() автор топика
Ответ на: комментарий от Chubakur

и порядок растановки бэкграунд\курсор\объект не помогает, что-то обязательно перекроет другое

nutz ★★
() автор топика
Ответ на: комментарий от nutz

порядок перестановки помогает, видимо ты не правильно гео задаешь. Скинь мне текущий свою текущий свой код.

Chubakur ★★
()
Ответ на: комментарий от nutz
while True:
        (x2,y2) = randomness()
        d = distance()
        for event in pygame.event.get():
                if event.type == QUIT:
                        pygame.quit();
                        sys.exit()
        screen.blit(backgr,(0,0))
        if d < 100:
          screen.blit(image3,(x2,y2))
        screen.blit(cursor,(x1,y1))
        x1, y1 = pygame.mouse.get_pos()
        x1 -= cursor.get_width() / 2
        y1 -= cursor.get_height() / 2
        pygame.display.flip()

вот как вариант рабочий цикл.

Chubakur ★★
()
Ответ на: комментарий от Chubakur

Сори, инет умер дома, как вернусь домой, отпишу, пасиба

nutz ★★
() автор топика
Ответ на: комментарий от Chubakur

Не работает =( Изображение все равно само по себе рандомизируется, не взирая на условие

nutz ★★
() автор топика
Ответ на: комментарий от nutz

Работает. Понимаешь компьютер, в отличие от человека, не может ошибаться. Если там стоит условие, то нет причины, по которой это условие будет игнорироваться. Оно выполнится ОДНОЗНАЧНО. У тебя уже ошибка не в выводе графики, а в том что ты не можешь правильно составить алгоритм. Я просто уже не знаю как тебе объяснить, я тебе даю рабочий код, ты говоришь что не работает, и показываешь свой исходник, в котором понаписано невесть что, я такого даже не говорил. Это так трудно просто скопипастить код?

Chubakur ★★
()
Ответ на: комментарий от Chubakur

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

nutz ★★
() автор топика
Ответ на: комментарий от nutz

Элементарно. В условие d < 100 поставь print что-нибудь, и убедись что оно выполняется постоянно. Ошибка питона? Нет, ты не правильно составил алгоритм.

Chubakur ★★
()
Ответ на: комментарий от nutz

(x2,y2) = randomness() мне кажется, что в цикле этого быть просто не должно. Или должно быть при соблюдении условия. Постоянно генерируются числа. Рано или поздно условие соблюдется и выполнится условие. Компьютер не слоупок и идет по циклу очень быстро, поэтому и кажется что выводит картинку постоянно.

Chubakur ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.