如何在pygame中用光标移动来移动精灵图像?

2024-10-06 10:00:10 发布

您现在位置:Python中文网/ 问答频道 /正文

下面我所做的只是创建一个精灵,如图所示。。 此外,为了做一些有趣的事情,考虑到线程化,我添加了一个线程,它将检查光标位置,因此更新全局x&y导致精灵位置的更改,这是由显示.更新 我是新手,所以我可能在很多方面都错了…所以请忍受我。。。。 非常感谢

    from pygame import *
    from main import *
    import threading
    import sys
    #lets add our sprites

    (x,y) = (0, 0)

    class threading1(threading.Thread):


        def run(self):
            global x,y
            clockobj1 = pygame.time.Clock()
            while (True):

                clockobj1.tick(6)
                (x,y)=pygame.mouse.get_pos()
                display.update()


    class sprites(pygame.sprite.Sprite ):

        def __init__(self,color= redd, width=120, height=120):
            super(sprites,self).__init__()
            self.image = pygame.Surface((width,height))
            self.image.fill(color)

            self.rect=self.image.get_rect()
            self.rect.move_ip(x,y)
            display.update()



    if __name__ == '__main__':
        clockobj = pygame.time.Clock()


        init()
        mainwin = pygame.display.set_mode((720,640))

        sprite1 =  sprites()


        spritegrp =  pygame.sprite.Group()
        spritegrp.add(sprite1)
        spritegrp.update()
        mainwin.fill(blue)
        spritegrp.draw(mainwin)
        threadingobj = threading1()
        threadingobj.start()


        x = True
        while(x):
            display.update()

            for evt in event.get() :
             if (evt.type == QUIT) :
                 quit()
                 x=False
             clockobj.tick(40)

***以下是我的最新代码--------根据答案更新***请查收

^{pr2}$

Tags: fromrectimageimportselfgetinitdisplay
1条回答
网友
1楼 · 发布于 2024-10-06 10:00:10

线程只会使事情复杂化。去掉它,并从类的self.rect.move_ip(x,y)和{}中取出{}。在类中调用了函数。这个函数只需说。self.rect.center = pygame.mouse.get_pos()。然后在主游戏循环中,将sprite1.update()放在那里,或者使用组名来更新它(就像你对spritegrp.update()所做的那样),然后在那里调用display.update(),而不是在函数中。在

其他事项:

  • super().__init__()不需要任何参数
  • ifwhile循环不需要括号
  • 你不需要导入main(我可能错了,但我不这么认为)
  • from module import *通常是一种不好的做法,但是如果你打算这么做(我不推荐),你就不能把{}放在任何地方。你做了from pygame import *,但还是放了{}和其他类似的东西。也许你是说from pygame.locals import *?在
  • 冒号与单词之间没有空格,即for evt in event.get() :是不好的
  • 缩进也应该是一个制表符的长度,或者四个空格。(你在用什么IDE?大多数都是自动完成的。)
  • 变量赋值应该有空格:x = False

相关问题 更多 >