我想让我的图像(猫)越过正方形时背景会改变,但它现在什么都没做,有人能帮忙吗。我有一个射程半径,但这似乎不起作用。猫是英雄。
矩形有问题吗?我应该把它变成一个定义而不是一个变量吗?
救命!
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)
这个解决方案应该有效,但它绝对不是最好的方法。