2014-04-10 114 views
0

我想让我的形象(猫)越过广场的背景会发生变化,但此刻它没有做任何事情,请有人帮忙。我有一个范围半径,但似乎没有工作。猫是英雄。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() 

回答

0

注意这是不是一个很好的解决方案,但它的工作原理我敢肯定有一种方法,使之更小。

更换

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) 

这个解决方案应该工作,但它绝对不是这样做的最佳方式。

+0

我刚刚测试过它,它的工作原理,但它不会改变背景后猫咪blit,所以你可能想解决这个问题。让我知道你是否需要该代码。 – Cnorwood7641