Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.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_Pygame - Fatal编程技术网

Python 如何在Pygame中每次初始化新对象以重置游戏

Python 如何在Pygame中每次初始化新对象以重置游戏,python,pygame,Python,Pygame,每次用户按c键时,我都会尝试重新创建新对象,这样我就可以从开始点再次加载游戏。但我找不到这样做的方法 这就是我迄今为止所尝试的: def初始化名称(游戏): 运行时: 游戏。时钟。滴答声(FPS) #此函数由事件代码组成 theGame.events() #此功能由来自敌人命中事件的代码组成 游戏。打不打() #此函数由子弹击中事件的代码组成 游戏。子弹打不打() #此功能由玩家动作代码组成 游戏动作 #此函数包含在屏幕上绘制精灵的代码 theGame.redrawGameWindow()重新绘

每次用户按c键时,我都会尝试重新创建新对象,这样我就可以从开始点再次加载游戏。但我找不到这样做的方法

这就是我迄今为止所尝试的:

def初始化名称(游戏):
运行时:
游戏。时钟。滴答声(FPS)
#此函数由事件代码组成
theGame.events()
#此功能由来自敌人命中事件的代码组成
游戏。打不打()
#此函数由子弹击中事件的代码组成
游戏。子弹打不打()
#此功能由玩家动作代码组成
游戏动作
#此函数包含在屏幕上绘制精灵的代码
theGame.redrawGameWindow()重新绘制
def startGame(运行):
第一场比赛
运行时:
初始化游戏(第一个游戏)
keys=pygame.key.get_pressed()
如果键[pygame.K_ESCAPE]:
运行=错误
如果键[pygame.K_c]:
新游戏
初始化名称(新游戏)
StartName(真)
我要做的就是当我按下“c”键时,游戏必须从起点重新启动,为此我必须重新创建新的“game()”类对象并初始化游戏


游戏类代码-

在游戏循环中避免游戏循环,这意味着从初始化名称中删除循环
名称
initializeGame
有误导性,称之为
runGame

def runGame(游戏):
#此函数由事件代码组成
theGame.events()
#此功能由来自敌人命中事件的代码组成
游戏。打不打()
#此函数由子弹击中事件的代码组成
游戏。子弹打不打()
#此功能由玩家动作代码组成
游戏动作
#此函数包含在屏幕上绘制精灵的代码
theGame.redrawGameWindow()重新绘制
因此,只需一个
游戏
,即可“重置”ba,创建一个电子游戏对象。
在一个且唯一的游戏循环中,必须调用
runGame

def startGame(运行):
游戏
运行时:
游戏。时钟。滴答声(FPS)
#运行游戏
龙格姆(游戏)
#拿到钥匙
keys=pygame.key.get_pressed()
#把手钥匙
如果键[pygame.K_ESCAPE]:
运行=错误
如果键[pygame.K_c]:
游戏
StartName(真)
注意,
startGame()
已经有了一个循环,因此在任何函数中都不需要进一步的游戏循环
runGame()
完成游戏框架中的所有操作
runGame()
startGame()的游戏循环中被连续调用
如果必须启动一个新游戏,创建一个新的
game
对象就足够了


注意,当由或处理时,将评估由返回的状态。
在事件循环后调用
pygame.key.get_pressed()

我更喜欢稍微不同的设计。获取主循环中的事件(
pygame.event.Get()
)并将它们传递给
runGame()
,然后传递给
Game.events()

职业游戏:
# [...]
def事件(自身、事件列表):
对于事件列表中的事件:
#处理事件
# [...]
def runGame(游戏、事件列表):
#此函数由事件代码组成
theGame.events(事件列表)
# [...]
def startGame(运行):
游戏
运行时:
游戏。时钟。滴答声(FPS)
#运行游戏
eventlist=pygame.event.get()
runGame(游戏、事件列表)
#拿到钥匙
keys=pygame.key.get_pressed()
#把手钥匙
如果键[pygame.K_ESCAPE]:
运行=错误
如果键[pygame.K_c]:
游戏

您能修复缩进吗?缩进在python中很重要,你的代码会因为缩进错误而引发一些语法错误缩进已经可以了是的,Rabbi76在我评论的时候编辑了你的帖子来修复它,我想。兄弟,我没有得到它,请你更详细地解释一下-很抱歉,我是一个noob@hotstepper一个游戏循环就足够了,游戏循环在
startName
中。在这个循环中,连续调用
runGame
。要开始一个新游戏,您只需创建一个新的
game
对象并将其分配给
game
。旧游戏被销毁,新游戏被构建。@hotstepper
游戏
是答案中的一个输入错误,它必须是
游戏
。现在已更正。我尝试了您的代码,但当我按“c”键时,什么都没有happens@hotstepper在链接的代码中。
newGame
中仍有一个循环,请将其删除(运行时删除
)!