функции не разделяющие ценность в Python - PullRequest
0 голосов
/ 08 сентября 2018

Я работаю над игрой, и я хочу поместить границу столкновения в функцию, которая легко запускается. Функция обновляет координаты, поэтому она не может сдвинуть ее с экрана, но не передает эти обновленные координаты другой функции. Поэтому я не могу переместить изображение в новое положение. Пожалуйста, помогите!

def collide(x,y,ctype):
    if ctype == "border":
        if x < 100:
            ob = 100 - x
            x1 = x + ob
            print(x,ob)
            return x,y


def main():
    x = 500
    y = 200
    while True:
        x,y = collide(x,y,"border")

        key = pygame.key.get_pressed()
        if key[pygame.K_UP]:
            #col = pygame.sprite.collide_rect(fRect, bRect)
            y -= dist
            side = "back"
        elif key[pygame.K_DOWN]:
            y = y + dist
            side = "front"
        elif key[pygame.K_RIGHT]:
            x = x + dist
            side = "right"
        elif key[pygame.K_LEFT]:
            x = x - dist
            side = "left"
        if side == "front":
            screen.blit(fPlayer, (x,y))
        elif side == "back":
            screen.blit(bPlayer, (x,y))
        elif side == "right":
            screen.blit(rPlayer, (x,y))
        elif side == "left":
            screen.blit(lPlayer, (x,y))
        #print(x,y)
        pygame.display.update()

Эти две или обе функции, с которыми я хочу поделиться с x и y.

1 Ответ

0 голосов
/ 09 сентября 2018
def main():
    town = "Pyllet Town"
    side = "front"
    if town == "Pyllet Town":   
        x = 500
        y = 200
        while True:
            screen.fill(white)
            screen.blit(grass, (0,0))
            screen.blit(sForest, (0,0))
            screen.blit(sForest, (1300,0))
            screen.blit(rfStrip, (140,775))
            screen.blit(house1, (300,150))
            screen.blit(house1, (900,150))
            screen.blit(house2, (300,250))
            screen.blit(house3, (900,250))
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    pygame.quit()
                    quit()
                if event.type == pygame.VIDEORESIZE:
                    surface = pygame.display.set_mode((event.w, event.h), pygame.RESIZABLE)
                if event.type == pygame.KEYDOWN:
                    if event.key == pygame.K_RETURN:
                        backpack()


            x,y = collide(x,y,"border")
            x,y,side = move(x,y,side)  
            pygame.display.update()

Исправлена ​​проблема с выполнением x, y = collide (x, y, "border"). Это также помогло мне уменьшить отставание в игре и сделать функцию перемещения. Спасибо mkrieger1 за помощь !!!

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