Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 对pygame使用多处理?_Python_Python 3.x_Pygame_Multiprocessing_Python Multiprocessing - Fatal编程技术网

Python 对pygame使用多处理?

Python 对pygame使用多处理?,python,python-3.x,pygame,multiprocessing,python-multiprocessing,Python,Python 3.x,Pygame,Multiprocessing,Python Multiprocessing,在我用pygame制作的简单snake游戏中,我试图将输入循环与游戏逻辑分开,但是,我真的很难弄清楚为什么在运行程序时什么都没有发生 我尝试在子流程中导入pygame,检查了子流程中的错误,但一无所获。我查看了谷歌,但找不到任何有用的例子,或者类似的问题。有人知道这些吗 好的,下面是代码: 导入pygame 导入时间 将多处理作为mp导入 作为rnd导入随机数据 pygame.init() def event_to_dict(事件:pygame.event)->dict: 返回{ “类型”:ev

在我用pygame制作的简单snake游戏中,我试图将输入循环与游戏逻辑分开,但是,我真的很难弄清楚为什么在运行程序时什么都没有发生

我尝试在子流程中导入pygame,检查了子流程中的错误,但一无所获。我查看了谷歌,但找不到任何有用的例子,或者类似的问题。有人知道这些吗

好的,下面是代码:

导入pygame
导入时间
将多处理作为mp导入
作为rnd导入随机数据
pygame.init()
def event_to_dict(事件:pygame.event)->dict:
返回{
“类型”:event.type,
“key”:如果event.type==pygame.KEYDOWN,则为event.key,否则为None,
}
类别蛇板:
def uuu init uuu(self,行:int,列:int):
self.rows=行
self.columns=列
self.vertices=[]
self.odd_列=False
self.buff=[]
对于范围内的u(self.rows):
self.buff.append([''表示范围内的u(self.columns)])
def初始化(自):
对于范围内的r(self.rows):
对于范围内的c(self.columns):
self.buff[r][c]=''
self.odd_column=(self.columns>>1)%2==1
self.buff[self.rows>>1][self.columns>>1]='\u25cb'
self.vertices=[(self.rows>>1,self.columns>>1)]
def place_食品(自助):
尽管如此:
r=rnd.randint(0,self.rows-1)
c=rnd.randint(0,self.columns-1)
codd=c%2==1
if(codd和self.odd_列或非codd和非self.odd_列)和self.buff[r][c]!='\u25cb':
self.buff[r][c]='\u25c9'
打破
def勾选(自身,方向:int)->bool:
nr,nc=自身顶点[-1]
如果方向==0:
nr-=1
elif方向==1:
nc+=1
elif方向==2:
nr+=1
elif方向==3:
nc-=1
其他:
打印(“snake的方向无效”)
出口(1)
如果nr>=self.rows或nc>=self.columns或nr<0或nc<0或self.buff[nr][nc]='\u25cb':
返回错误
self.vertices.append((nr,nc))
self.vertices.pop(0)
返回真值
蛇类游戏(蛇板):
def uuu init uuu(self,行:int,列:int):
super().\uuuu init\uuuu(行、列)
self.score=0
自我定向=0
self.initialize()
self.place_food()
def勾号(自身,方向:int=-1)->bool:
v=super().勾选(如果方向<0,则为自方向,否则为方向)
如果self.buff[self.vertices[-1][0][self.vertices[-1][1]]=='\u25c9':
self.score+=1
self.vertices.append(self.vertices[-1])
self.place_food()
对于范围内的r(self.rows):
对于范围内的c(self.columns):
如果(r,c)在self.vertices中:
self.buff[r][c]='\u25cb'
elif self.buff[r][c]!='\u25c9'和self.buff[r][c]!='':
self.buff[r][c]=''
返回v
类GameLoop(mp.Process):
定义初始化(self,q:object,size:list):
super()。\uuuu init\uuuuu()
self.q=q
self.size=大小
self.g=蛇类游戏(大小[1]//10,大小[0]//10)
self.g.initialize()
self.g.放置食物()
self.screen=None
self.game\u surf=无
self.font=无
def运行(自)->无:
尝试:
导入pygame
pygame.init()
self.screen=pygame.display.set_模式(self.size)
self.game\u surf=pygame.Surface(self.size)
self.font=pygame.font.SysFont('roboto',16)
_正在运行=正确吗
当_正在运行时:
如果自问自答(0):
d=自我q.记录()
如果d不是无:
如果d['type']==pygame.KEYDOWN:
如果d['key']==pygame.K_a:
自重力方向=3
elif d['key']==pygame.K_s:
自重力方向=2
elif d['key']==pygame.K_d:
自重力方向=1
elif d['key']==pygame.K_w:
自重力方向=0
elif d['key']==pygame.K_ESCAPE:
正在运行=错误
其他:
正在运行=错误
self.game_surf.fill((255,255,255))
对于枚举中的ri,r(self.g.buff):
对于ci,枚举(r)中的c:
如果c=='\u25cb':
#打印(“在{},{}处画蛇”。格式(ri*10,ci*10))
pygame.draw.circle(self.game\u surf,
(0, 0, 255),
((ci*10)+5,(ri*10)+5),
5)
elif c=='\u25c9':
#wprint(“在{},{}放置食物”。格式(ci,ri))
pygame.draw.circle(self.game\u surf,
(0, 127, 255),
((ci*10)+5,(ri*10)+5),
5)
timg=self.font.render(“分数:{},级别:{}”。格式(self.g.Score,self.g.Score//10+1),
是的,
(0, 0, 0))
self.screen.blit(self.game\u surf,(0,0))
自屏蔽blit(timg,(0,0))
pygame.display.flip()
如果self.g.勾选():
睡眠时间(1/((int(self.g.score/10+1))*10))
其他: