diff --git a/main.py b/main.py index 724fc84b006cef4f6f7a992e88f42bbfa72ee8c7..386b0d4ea06494a5afe9607ea8787d4183740290 100644 --- a/main.py +++ b/main.py @@ -69,21 +69,33 @@ 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) + while True: + self.rect.left = random.choice(allpos) + self.rect.top = random.choice(allpos) + + # 检查食物位置是否与蛇身体重合 + overlap = False + for segment in snake.body: + if segment.colliderect(self.rect): + overlap = True + break + + if not overlap: + break + print(self.rect) @@ -147,7 +159,7 @@ def main(): snake.addnode() # 食物投递 - food.set() + food.set(snake) pygame.draw.rect(screen,(136,0,21),food.rect,0) # 显示分数文字