diff --git a/main.py b/main.py index 724fc84b006cef4f6f7a992e88f42bbfa72ee8c7..0600e3ede394740d731af9f9d3951b3513dbb5dc 100644 --- a/main.py +++ b/main.py @@ -69,23 +69,27 @@ class Snake(object): # 食物类 # 方法: 放置/移除 # 点以25为单位 -class Food: +class Food(object): def __init__(self): self.rect = pygame.Rect(-25,0,25,25) def remove(self): self.rect.x=-25 - def set(self): + + def set(self, snake): if self.rect.x == -25: - allpos = [] - # 不靠墙太近 25 ~ SCREEN_X-25 之间 - for pos in range(25,SCREEN_X-25,25): - allpos.append(pos) - self.rect.left = random.choice(allpos) - self.rect.top = random.choice(allpos) - print(self.rect) - + while True: + allpos = [] + # 不靠墙太近 25 ~ SCREEN_X-25 之间 + for pos in range(25, SCREEN_X - 25, 25): + allpos.append(pos) + self.rect.left = random.choice(allpos) + self.rect.top = random.choice(allpos) + + # Check if the new position overlaps with any part of the snake's body + if not any(self.rect.colliderect(node) for node in snake.body): + break def show_text(screen, pos, text, color, font_bold = False, font_size = 60, font_italic = False): #获取系统字体,并设置文字大小 @@ -147,7 +151,7 @@ def main(): snake.addnode() # 食物投递 - food.set() + food.set(snake) pygame.draw.rect(screen,(136,0,21),food.rect,0) # 显示分数文字