Python 生成随机坐标直到正确

Python 生成随机坐标直到正确,python,python-2.7,Python,Python 2.7,所以基本上我是在用Python创建Snake游戏。我猜你们都知道它是如何运作的,一条蛇,一个苹果-蛇吃苹果,变得更大 我的代码运行得很好,除了一个问题,因为苹果的位置是随机的,有时它会出现在蛇身上,看起来就像被吃掉了一样 def add_apple(self): # Place an apple in a random location on screen self.apple = (self.ui.random(WIDTH), self.ui.random(HEIGHT

所以基本上我是在用Python创建Snake游戏。我猜你们都知道它是如何运作的,一条蛇,一个苹果-蛇吃苹果,变得更大

我的代码运行得很好,除了一个问题,因为苹果的位置是随机的,有时它会出现在蛇身上,看起来就像被吃掉了一样

    def add_apple(self):
    # Place an apple in a random location on screen
    self.apple = (self.ui.random(WIDTH), self.ui.random(HEIGHT))
    a, b = self.apple
    self.ui.place(a, b, self.ui.FOOD)
我的蛇是一个列表:

    self.snake.append((self.x, self.y))
    self.ui.place(self.x, self.y, self.ui.SNAKE)

    # If apple is eaten, add another
    if self.apple == (self.x, self.y):
        self.add_apple()
    # For movement
    else:
        x, y = self.snake.pop(0)
        self.ui.place(x, y, self.ui.EMPTY)
所以我的问题是,我如何才能做到,如果苹果的随机位置是在蛇身上,再试一次。我尝试在add_apple中使用while循环,但是GUI会因为某种原因停止响应,没有错误代码


提前感谢。

我们将创建新的apple place,直到找到不是蛇的地方

改变

def添加应用程序自身: 在屏幕上随机放置一个苹果 self.apple=self.ui.randomWIDTH,self.ui.randomHEIGHT a、 b=self.apple self.ui.placea、b、self.ui.FOOD 为此:

def添加应用程序自身: 在屏幕上随机放置一个苹果 self.apple=self.ui.randomWIDTH,self.ui.randomHEIGHT 而self.snake中的self.apple: self.apple=self.ui.randomWIDTH,self.ui.randomHEIGHT a、 b=self.apple self.ui.placea、b、self.ui.FOOD 如果您想加快速度,可以通过以下方式进行:

从随机进口选择 def添加应用程序自身: 在屏幕上随机放置一个苹果 x_snakes=[i[0]代表我自己。snake]所有蛇x位置 y_snakes=[i[1]因为我在自己身上。snake] x_not_snake=[i for i in rangeWIDTH if i not in x_snake]所有关于蛇不在x cordinate中的假设 y_not_snake=[如果我不在y_snake中,则我在rangeHEIGHT中代表i]同样代表y self.apple=choicex\u not\u snake,choicey\u not\u snake随机获得一条 a、 b=self.apple self.ui.placea、b、self.ui.FOOD 这对于游戏结束状态来说效果更好,因为它会为每个随机调用找到一个随机位置