python - 当我点击矩形时连续移动它(pygame)

标签 python pygame

我已经说过,如果我单击矩形,它会在 X 轴上移动 +1。但我希望这个 Action 是无止境的,这样它就会从屏幕上消失。主要目标是,当我单击矩形时,它会从左向右移动,直到再次单击,然后停止。

import pygame
from pygame.constants import MOUSEBUTTONDOWN

pygame.init()

#variables
W, H =500, 500
screen=pygame.display.set_mode((W, H))
surf = pygame.Surface((50,50))
surf.fill('white')
kubiks = surf.get_rect(topleft= (0,0))
fps=60
clock=pygame.time.Clock()

#display shit
def game_display(kubiks):
    screen.fill('Red')
    screen.blit(surf, (kubiks.x, kubiks.y))    
    pygame.display.update()

#Cube movement
def cube_movment(kubiks):
    kubiks.x +=1

run = True
while run:
    clock.tick(fps)
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False
            break
    if event.type == pygame.MOUSEBUTTONDOWN:
        x, y = event.pos
        if kubiks.collidepoint(x, y):
            cube_movment(kubiks)
                
    game_display(kubiks)

pygame.quit()

最佳答案

更正IndentationMOUSEBUTTONDOWN 事件必须在事件循环中进行计算,而不是在应用程序循环中。

单击鼠标按钮时设置状态变量(移动),并根据变量的状态移动对象:

move = False

run = True
while run:
    clock.tick(fps)
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False
            break

    # INDENTATION
    #-->|
        if event.type == pygame.MOUSEBUTTONDOWN:
            x, y = event.pos
            if kubiks.collidepoint(x, y):
                move = not move
   
    if move:
        cube_movment(kubiks)
             
    game_display(kubiks)

pygame.quit()

关于python - 当我点击矩形时连续移动它(pygame),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68890906/

相关文章:

python - Flask:防止 HTML 在浏览器的 URL 栏中转义

python - 为图像着色 Pygame

python - AttributeError: 'pygame.math.Vector2' 对象没有属性

python - 为不同的 celery worker 分配不同的任务

javascript - 哪种脚本语言更适合嵌入多线程 C/C++ 应用程序

关于类的Python pygame运动问题

python - 如何在Pygame中画一条连续的线?

python - 在python中没有类的碰撞矩形

python - Plone 如何为事件添加内容规则,该事件在结束日期后应移至另一个文件夹

Python,括号对打印语句中 bool 值的影响