我是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时,似乎是在游戏限制之外的坐标中绘制的(因为其绘制坐标是指矩形的左上角),并且随后超出了玩家的视野。我现在仅将随机整数限制为电路板尺寸减去苹果尺寸即可。