首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当我点击blit的图像后,新blit就会消失在游戏中。

当我点击blit的图像后,新blit就会消失在游戏中。
EN

Stack Overflow用户
提问于 2015-01-03 17:22:59
回答 1查看 840关注 0票数 0

我刚接触到python,特别是pygame,我想知道如何在MOUSEBUTTONDOWN之后保留我的新图像blit,这是我的代码:

代码语言:javascript
复制
color = pygame.image.load('billes.png')
red = color.subsurface(50, 70, 79, 71)
r = display.blit(red,(918,920))

def play():  
    if event.type == pygame.MOUSEBUTTONDOWN:
        pos = pygame.mouse.get_pos()
        if r.collidepoint(pos):
            display.blit(red, (10,10))
while True:
    ...
    for event in pygame.event.get():
        ...
        if event.type == MOUSEBUTTONDOWN and event.button == 1:
            if r.collidepoint(pos):
                display.blit(red, (800, 700))

当我模仿鼠标左键时,它会显示我的新图像,但一秒后就消失了,甚至按钮还在。我也尝试使用pygame.mouse.get_pressed()[0],但结果是一样的。如何在MOUSEBUTTONDOWN?之后维护新的blit我正在考虑使用MOUSEBUTTONUP设置一个条件,但我不知道如何去做。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-03 17:54:56

代码语言:javascript
复制
import pygame
pygame.init()
red = (200,0,0)
white = (255,255,255)
gameDisplay=pygame.display.set_mode((800,600))

FPS=30
clock=pygame.time.Clock()

while True:
    for event in pygame.event.get():
        if event.type==pygame.QUIT:
            pygame.quit()
            quit()
    cur = pygame.mouse.get_pos() #taking click events every time
    click=pygame.mouse.get_pressed() ##again, every time
    if click[0] == 1: #if left-clicked
        pygame.draw.rect(gameDisplay,red, (100,200,100,200)) #draw a red rectangle
        pygame.display.update() #and update the display


    clock.tick(FPS)

问题是,您在不正确的位置使用了pygame.display.update()。我已经改正了,现在它开始工作了。

实际上,只要您单击鼠标左键,就会绘制矩形,但是您只能看到一个矩形,因为它们位于相同的坐标上。

如果您想确定这一点,请尝试:

代码语言:javascript
复制
import pygame,random
pygame.init()
red = (200,0,0)
white = (255,255,255)
black = (0,0,0)
gameDisplay=pygame.display.set_mode((800,600))

FPS=30
clock=pygame.time.Clock()

while True:
    for event in pygame.event.get():
        if event.type==pygame.QUIT:
            pygame.quit()
            quit()
    cur = pygame.mouse.get_pos()
    click=pygame.mouse.get_pressed()
    if click[0] == 1:
        x=random.randint(1,700) #random coords of x
        y=random.randint(50,500) #random coords of y
        wx=random.randint(10,100) #random size of x
        hy=random.randint(60,200) #random size of y
        pygame.draw.rect(gameDisplay,red, (x,y,wx,hy)) #drawing with random variables
        pygame.display.update()


    clock.tick(FPS)

这表明我们的方法是有效的。还要注意,如果继续按左键,它将继续绘制矩形。它之前也绘制了矩形,但是我们无法看到它们,因为它们位于相同的坐标上,这就是为什么在那个位置上似乎只有一个矩形。

如果要删除该矩形,例如右击:

代码语言:javascript
复制
if click[2] == 1:
    pygame.draw.rect(gameDisplay,black, (100,200,100,200))
    pygame.display.update()

添加这一个底部的第一个如果单击语句。基本上,它将在第一个矩形上画另一个矩形,关心相同的和弦,但与背景相同的颜色。因此,您的第一个矩形似乎被擦除:-)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27757495

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档