Как обернуть блит по краю экрана?

Имея изображение, как можно «обернуть» это изображение по экрану?

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

imageRect.top=800 #Below screen edge
screen.blit(image,imageRect) #Blit on both sides of the screen

Возможно ли это каким-либо образом (в pygame)?


person user2592835    schedule 04.02.2015    source источник


Ответы (2)


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

Сначала создайте две переменные display_width и display_height - это ширина и высота вашего игрового окна.

display_width = [width of window]
display_height = [height of window]

Затем создайте еще две переменные для положения «x» первого и второго изображений. Затем объявите ширину изображения в пикселях в переменной obj_width.

img_x = ['x' position of first image]
img2_x = ['x' position of second image, works best with same 'x' as 'img_x' above]
obj_width = [width of img]

Теперь создайте функцию изображения, которая принимает img_x и img_y. img_x - это локальная переменная, которую не следует путать с другими img_x.

def img(img_x,img_y):
    screen.blit([image file here], (img_x,img_y))

Вот условные выражения, которые я использовал для программы. Не стесняйтесь копировать и вставлять.

if img_x + img_width > display_width:
    img(img2_x, display_height * 0.8)
    img2_x = img_x - display_width
if img_x < 0:
    img(img2_x, display_height * 0.8)
    img2_x = img_x + display_width

if img2_x + bag_width > display_width:
    img(img_x, [where you want the image to appear, ex. display_height * 0.8])
    img_x = img2_x - display_width
if img2_x < 0:
    img(img_x, display_height * 0.8) #same as above
    img_x = img2_x + display_width

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

Удачи, JC

person jcarder    schedule 20.06.2016

Я не думаю, что здесь что-то встроено; просто выясните, где находятся вертикальные и горизонтальные деления изображения, и выполните несколько повторений.

person user3757614    schedule 04.02.2015