下面我所做的只是创建一个精灵,如图所示。。 此外,为了做一些有趣的事情,考虑到线程化,我添加了一个线程,它将检查光标位置,因此更新全局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}$
线程只会使事情复杂化。去掉它,并从类的}中取出{}。在类中调用了函数。这个函数只需说。
self.rect.move_ip(x,y)
和{self.rect.center = pygame.mouse.get_pos()
。然后在主游戏循环中,将sprite1.update()
放在那里,或者使用组名来更新它(就像你对spritegrp.update()
所做的那样),然后在那里调用display.update()
,而不是在函数中。在其他事项:
super().__init__()
不需要任何参数if
和while
循环不需要括号from module import *
通常是一种不好的做法,但是如果你打算这么做(我不推荐),你就不能把{from pygame import *
,但还是放了{from pygame.locals import *
?在for evt in event.get() :
是不好的x = False
相关问题 更多 >
编程相关推荐