表面不';不要在下一帧消失 一般来说,我对Python和编程相当陌生 当用户点击屏幕时,我试图在屏幕上画一个正方形(200px乘以200px) 我尝试在曲面周围创建一个曲面和一个矩形(当用户单击屏幕时),然后使用矩形,使用blit方法将曲面放置在屏幕上 对于矩形的x和y,我使用鼠标位置。

表面不';不要在下一帧消失 一般来说,我对Python和编程相当陌生 当用户点击屏幕时,我试图在屏幕上画一个正方形(200px乘以200px) 我尝试在曲面周围创建一个曲面和一个矩形(当用户单击屏幕时),然后使用矩形,使用blit方法将曲面放置在屏幕上 对于矩形的x和y,我使用鼠标位置。,python,pygame,draw,surface,Python,Pygame,Draw,Surface,所以,在我的脑海中,每当用户点击屏幕上的其他地方时,这个方块的位置就会改变,但每次都会创建一个新的方块 所以我有几个问题: 如果我实现这个功能的方式是错误的,那么我如何实现这个功能呢 当Pygame每一帧都画正方形时,正方形不应该改变位置吗 谢谢:) 输出: 即使尝试一个简单的表面和一个屏幕,它也不起作用。 它使用新的x向屏幕添加了另一个曲面 import pygame as pg import sys pg.init() screen = pg.display.set_mode((

所以,在我的脑海中,每当用户点击屏幕上的其他地方时,这个方块的位置就会改变,但每次都会创建一个新的方块

所以我有几个问题:

  • 如果我实现这个功能的方式是错误的,那么我如何实现这个功能呢
  • 当Pygame每一帧都画正方形时,正方形不应该改变位置吗

谢谢:)

输出:


即使尝试一个简单的表面和一个屏幕,它也不起作用。 它使用新的x向屏幕添加了另一个曲面

import pygame as pg
import sys

pg.init()
screen = pg.display.set_mode((400, 400))
clock = pg.time.Clock()
surface = pg.Surface((200, 200))
surface.fill((255, 255, 255))
xpos = 50

while True:
    for event in pg.event.get():
        if event.type == pg.QUIT:
            pg.quit(), sys.exit()

    xpos += 1
    screen.blit(surface, (xpos, 100))


    pg.display.flip()
    clock.tick(60)

哦,我刚意识到我忘了在每一帧之前填满屏幕。固定的

请考虑创建一个,这样更容易帮助你。例如,我们不知道
draw\u board()
是如何工作的。您应该移动所有绘图函数,以便在每个循环中调用它们。一个典型的游戏循环是“事件处理”→ 更新游戏状态→ 画屏→ 显示更新。哦,关于绘图板很抱歉,因为我已经测试了它们,认为它们不重要。我添加了另一个示例。据我所知,这应该会在每一帧中绘制一个新的曲面,并带有新的x。它做到了这一点;但是,前面的曲面仍然存在。
import pygame as pg
import sys

pg.init()
screen = pg.display.set_mode((400, 400))
clock = pg.time.Clock()
surface = pg.Surface((200, 200))
surface.fill((255, 255, 255))
xpos = 50

while True:
    for event in pg.event.get():
        if event.type == pg.QUIT:
            pg.quit(), sys.exit()

    xpos += 1
    screen.blit(surface, (xpos, 100))


    pg.display.flip()
    clock.tick(60)