Pygame图像冲突



我想让我的图像(猫)越过正方形时背景会改变,但它现在什么都没做,有人能帮忙吗。我有一个射程半径,但这似乎不起作用。猫是英雄。

矩形有问题吗?我应该把它变成一个定义而不是一个变量吗?

救命!

import pygame, sys
from pygame.locals import *
pygame.init()
DISPLAYSURF = pygame.display.set_mode((500,500))
pygame.display.set_caption("A Heros Journy")
GREEN = (0, 255, 0)
RED   = (255, 0, 0)
BLUE = (0, 0, 255)
NAVYBLUE = (0, 0, 128)
hero = pygame.image.load("cat.png")
herox = 10
heroy = 10
DISPLAYSURF.fill(GREEN)
def main():
    global herox, hero, heroy
    mouseClicked = False
    boxx = 225
    boxy = 225
    DISPLAYSURF.fill(GREEN)
    DISPLAYSURF.blit(hero, (herox, heroy))
    while True:
        box = pygame.draw.rect(DISPLAYSURF, BLUE, (boxx, boxy, 50, 50))
        for event in pygame.event.get():
             if event.type == MOUSEMOTION:
                 herox, heroy = event.pos
                 DISPLAYSURF.fill(GREEN)
                 DISPLAYSURF.blit(hero, (herox, heroy))
             elif event.type == MOUSEBUTTONUP:
                 herox, heroy = event.pos
                 mouseClicked = True
             if hero in range(boxx, boxy):
                 DISPLAYSURF.fill(NAVYBLUE)
             if event.type == QUIT:
                 pygame.quit()
                 sys.exit()
        pygame.display.update()

main()

注意这不是一个很好的解决方案,但它很有效。我相信有办法让它更小。

更换

if hero in range(boxx, boxy):
             DISPLAYSURF.fill(NAVYBLUE)

带有

if herox > boxx + 50:
    DISPLAYSURF.fill(NAVYBLUE)
elif herox < boxx:
    DISPLAYSURF.fill(NAVYBLUE)
if heroy > boxy + 50:
    DISPLAYSURF.fill(NAVYBLUE)
elif heroy < boxy:
    DISPLAYSURF.fill(NAVYBLUE)

这个解决方案应该有效,但它绝对不是最好的方法。

最新更新