如何将某些东西卡在其他东西上?

时间:2015-07-05 17:32:12

标签: python-2.7 pygame

当苹果在三角形上方时,我尝试将苹果图片放在白色三角形的顶部,然后按h。我被困住了,不知道该怎么做。当我点击h时,没有任何好的或坏的事情发生。我可以移动我的矩形,但不能拿起图片。而且我不知道如何让矩形离开苹果。这是我的代码:

import pygame
import random
from pygame.locals import *


screenSize = (640,480)
surface = pygame.display.set_mode(screenSize)


running = True
clock = pygame.time.Clock()

x = 1
y = 1
a = random.randint(0,640)
b = random.randint(0,480)


while running:

    clock.tick(15)

    surface.fill((20,150,100))


    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT:
                x -= 10
            elif event.key == pygame.K_RIGHT:
                x += 10
            elif event.key == pygame.K_UP:
                y -= 10
            elif event.key == pygame.K_DOWN:
                y += 10
            elif event.key == pygame.K_h:
                a == x and b == y
        if event.type == pygame.KEYUP:
            if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
                x -= 0
            elif event.key == pygame.K_UP or event.key == pygame.K_DOWN:
                y -= 0
    line1 = pygame.draw.line(surface, (0,0,0), [100,100], [10,150], 4)
    line2 = pygame.draw.line(surface, (0,0,0), [100,100], [100,300], 4)
    line3 = pygame.draw.line(surface, (10, 20, 39), [100,100], [190,150] , 4)
    line4 = pygame.draw.line(surface, (0,0,0), [100,300], [10,350], 4)
    line5 = pygame.draw.line(surface, (0,0,0), [100,300], [190,350], 4)
    circle = pygame.draw.circle(surface, (0,0,0), [100,60], 40, 4)
    rect = pygame.draw.rect(surface, (150, 50, 0), [350, 250, 100, 100])
    linerect = pygame.draw.line(surface, (75,25,0), [350, 280], [450,280],3)
    rect2 = pygame.draw.rect(surface, (200, 150, 0), [395,275,10,10])
    rect3 = pygame.draw.rect(surface, (75,25,0), [360,290,80,50],3)
    box = pygame.draw.rect(surface, (255,255,255), [x,y,100,100])

    apple = pygame.image.load('apple1.bmp')
    surface.blit(apple,(a,b))

    pygame.display.flip()



pygame.quit()

1 个答案:

答案 0 :(得分:0)

你的一句话对我来说很奇怪:

I=imread('eight.tif');
hi = imagesc(I)
colormap gray

这应该是一个错误,因为此行未在a == x and b == y if行中使用。 elif只能用于if或Leif行,因为 比较 两个变量。所以使用上面的行除了引发错误或什么也不做之外什么都不做。尝试将其更改为:

==

您需要分开两个部分,不要使用任何多余的代码(extra =和a = x b = y )。要将三角形放在苹果下面,您需要确保苹果在三角形上方。使用碰撞代码来计算出来。为了更容易,如果它们都是精灵,请使用and来检测碰撞。

要使苹果“粘”在三角形上,您需要将苹果的中心设为三角形的中心。因此,请尝试将if sprite_name.rectcollide()更改为三角形的x坐标,将a更改为三角形的y坐标。使用另一个可以实现这种粘贴的变量:

b

如何将sticky = True if sticky == True: a = x b = y else: pass 更改为False是您的想法......