如何修复有时无法在我的Snake版本中出现的“苹果”?

时间:2019-07-17 11:04:11

标签: python pygame

我是python和pygame的新手。我想完全从零开始创建一个版本的“ snake”,而无需外部帮助或教程。大部分时间游戏都按照我的意愿运行,但偶尔我在蛇中吃的“苹果”根本不出现,我也不明白为什么。

# checking if snake hits apple
    for i in range(len(snake)):
        if snake[i] == apple:
            new = [(snake[len(snake) - 1][0] + 25), (snake[len(snake) - 1][1])]
            snake.append(new)
            apple_exists = False
            score += 50
            count = 0
            speed_count += 1
# Here is the code that writes the apple's next position
    if apple_exists is False:
        apple = [random.randint(0, size[0]), random.randint(0, size[1])]
        while apple[0] % 25 != 0 or apple[1] % 25 != 0:
            apple = [random.randint(0, size[0]), random.randint(0, size[1])]
            for i in range(len(snake)):
                if snake[i][0] == apple[0] and snake[i][1] == apple[1]:
                    continue
        apple_exists = True

    if apple[0] > size[0] or apple[0] < 0 or apple[1] > size[1] or apple[1] < 0:
        apple_exists = False

通常,蛇会“吃掉”苹果,然后另一个苹果会在屏幕上的随机位置产生。但是,有时在吃完一个苹果后,我的蛇就饿了,因为下一个苹果没有出现在屏幕上。我已经推断出苹果出现在可视区域之外,但我不明白为什么会这样,因为随机整数在屏幕高度和宽度的范围内。

编辑:

我已经解决了问题。当我的苹果的y或x值等于500时,似乎是在游戏限制之外的坐标中绘制的(因为其绘制坐标是指矩形的左上角),并且随后超出了玩家的视野。我现在仅将随机整数限制为电路板尺寸减去苹果尺寸即可。

0 个答案:

没有答案