Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.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 游戏计数_Python_Pygame - Fatal编程技术网

Python 游戏计数

Python 游戏计数,python,pygame,Python,Pygame,在这段代码中,我有一个由“食物”组成的列表,当我的角色与其中一个项目发生冲突时,它会删除自己,添加分数,并在列表中创建一个新的食物。因此,屏幕上会弹出一种新的食物。我有一些敌人在屏幕上飞来飞去,然后减去分数,他们也在列表中。我正试图编写我的程序,所以当我删除两种食物时,一个新的敌人将使用“计数”添加到列表中。但出于某种原因,它什么也没做。谁能给我指出正确的方向吗 def update(self) : self.score = self.player.update(s

在这段代码中,我有一个由“食物”组成的列表,当我的角色与其中一个项目发生冲突时,它会删除自己,添加分数,并在列表中创建一个新的食物。因此,屏幕上会弹出一种新的食物。我有一些敌人在屏幕上飞来飞去,然后减去分数,他们也在列表中。我正试图编写我的程序,所以当我删除两种食物时,一个新的敌人将使用“计数”添加到列表中。但出于某种原因,它什么也没做。谁能给我指出正确的方向吗

    def update(self) :
           self.score = self.player.update(self.score)
           for triangle in self.triangles:
               triangle.update(self.screen.get_rect())    
            #self.ball.update(self.screen.get_rect())
                if self.player.rect.colliderect(triangle.rect):
                    self.score -= 2
            for i, food in enumerate(self.foods):
                count = 0
                if self.player.rect.colliderect(food.rect):
                    self.score += 100
                    count += 1
                    del self.foods[i]
                    self.foods.append(Food(random.randint(0, 640), random.randint(0, 448)))
                    if count%2 == 0:
                        self.triangles.append(Ball(random.randint(0, 640), random.randint(0, 448)))
            if self.score < -1:
                pygame.mixer.music.stop()
def更新(自):
self.score=self.player.update(self.score)
对于self.triangles中的三角形:
triangle.update(self.screen.get_rect())
#self.ball.update(self.screen.get_rect())
如果self.player.rect.collide rect(triangle.rect):
自我评分-=2
对于我来说,列举食物(self.foods):
计数=0
如果self.player.rect.collide rect(food.rect):
自我评分+=100
计数+=1
del self.食品[i]
self.foods.append(Food(random.randint(0640)、random.randint(0448)))
如果计数%2==0:
self.triangles.append(Ball(random.randint(0640)、random.randint(0448)))
如果自我评分<-1:
pygame.mixer.music.stop()

您在每次迭代开始时将计数设置为0,这样它就不会超过1。您需要在循环之外创建计数

count = 0
for i, food in enumerate(self.foods):
    ...

它仍然没有做任何事情,即使我把它放在循环之外:/n那么您的其余代码就有问题了。尝试将print语句放在self.triangles.append调用当前所在的位置,并查看是否调用了它。屏幕上确实出现了一种新的食物。也许我就不用计数了。如果调用了append,那有什么问题?你预计会发生什么?实际发生了什么?我明白了。问题在于游戏循环是如何工作的。更新方法会在每一帧被调用,所以除非你几乎同时触摸两块食物,否则这不会被触发。您需要一个更新函数之外的计数值,该值在“删除食品”时添加到。您可以在update函数中去掉count,并在update函数之外创建一个名为count的全局变量。或者你也可以用类似于记录分数的方法来计算被吃掉的人数。然后每次都增加这个值。