Python 如何使对象在撞击左边缘时循环回右边缘?
我正在用Pygame制作一个游戏,现在我有两个问题:Python 如何使对象在撞击左边缘时循环回右边缘?,python,pygame,Python,Pygame,我正在用Pygame制作一个游戏,现在我有两个问题: 不知道如何使对象在撞击左边缘时循环回右边缘 我不明白如何正确地编写对象之间的碰撞(现在它的工作不正确) 这是我的代码:这是一个简单的滚动游戏,玩家试图避免“伤害”并收集“好处”。玩家站在左侧,可以上下移动,“伤害”和“利益”对象从右向左移动 在这里,我认为循环回到右边缘的问题 如果len(敌人)==0: 波长+=1 对于范围内的i(波长): 敌人=敌人(随机。随机范围(500700),随机。随机范围(0,高度-100),随机。选择([“1”,
如果len(敌人)==0:
波长+=1
对于范围内的i(波长):
敌人=敌人(随机。随机范围(500700),随机。随机范围(0,高度-100),随机。选择([“1”,“2”,“3”))
敌人。附加(敌人)
如果len(水果)==0:
波长+=1
对于范围内的i(波长):
食物=食物(random.randrange(500700),random.randrange(100,身高-100),random.choice([“一”,“二”,“三]))
水果(食物)
这里是粉碎物体的问题
针对敌人中的敌人[:]:
敌人。移动(敌人)
如果敌方.x+敌方.get_width()==player.x+player.get_width():
寿命-=1
敌人。移开(敌人)
水果食品[:]:
食物。移动(食物)
如果food.x+food.get_width()==player.x+player.get_width():
分数+=1
水果。除去(食物)
如果我正确理解您的问题,我建议在move()
函数中进行检查。我们可以这样做:
def move(self, vel)
{
self.x -= vel
if self.x <= 0:
{
self.x = WIDTH
}
}
def移动(自身、水平)
{
self.x-=vel
如果self.x=WIDTH
,则设置self.x=0
。这取决于您希望移动对象的方式。如果您希望它击中某个特定对象,或者如果您希望它考虑图像的大小,则可以使用它进行更深入的操作,但这应该只是一个基本的尝试。至少我会这样做
编辑:您从原始帖子中删除了一些代码,因此我假设它仍然是一样的。请重复并从中删除。“演示如何解决此编码问题?”与堆栈溢出无关。您必须诚实地尝试解决方案,然后就实现问一个具体问题。“它的工作不正确”不是一个问题规范。请提供预期结果。显示中间结果与预期结果的偏差。我们应该能够将单个代码块粘贴到文件中,运行它,并重现您的问题。这也让我们可以在您的上下文中测试任何建议。我怀疑是否有人会通过180行under提供了文档化的代码,以确定您的程序结构并确定您需要什么正如发帖指南所告诉你的那样。@Prune谢谢你的回答,我试图将代码缩小以便于理解。我不知道那是什么语言,但它肯定不是Python。你能把这个作为Python的答案吗?