我如何将colliderect纳入Snake游戏?

时间:2016-05-26 16:06:15

标签: python pygame

首先让我说我不是一个了不起的编码器,所以代码不是最漂亮的。我现在正在制作一个非常基本的蛇版本。目前我对蛇与食物之间的碰撞感到困惑。 (x,y代表蛇和食物x,食物为食物)。碰撞检测现在还不能正常工作,我无法弄清楚它有什么问题。在此先感谢您的帮助。 请保持尽可能简单,不要进入任何课程,因为我不知道如何使用它们。

编辑:对不起,英语不是我的第一语言。代码现在正常运行。与食物碰撞后的碰撞和食物生成无效。

import pygame
import sys
import random
import math
import time

pygame.init()
screen=pygame.display.set_mode((500,500))

red=(255,0,0)
blue=(0,0,255)
green=(0,255,0)
black=(0,0,0)

block1=1
block2=0

count=0

screen.fill(black)


randStart=random.randint(0,25)

x=randStart*20
y=randStart*20
xd=20
yd=0

foodx=random.randint(0,480)
foody=random.randint(0,480)

snakecol=pygame.Rect(x,y,20,20)
foodcol=pygame.Rect(foodx,foody,20,20)




done=False
while not done:
    screen.fill(black)
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            done = True


#controls

    if block1==1:
        if(pygame.key.get_pressed()[pygame.K_a]):
            yd=0
            xd=-20
            block1=0
            block2=1

    if block1==1:
        if(pygame.key.get_pressed()[pygame.K_d]):
            yd=0
            xd=20
            block1=0
            block2=1
    if block2==1:        
        if(pygame.key.get_pressed()[pygame.K_w]):
            xd=0
            yd=-20
            block1=1
            block2=0
    if block2==1:
        if(pygame.key.get_pressed()[pygame.K_s]):
            xd=0
            yd=20
            block1=1
            block2=0


#stop moving paddle

    if x<-20:
        x=500
    if x>500:
        x=-20
    if y<-20:
        y=500
    if y>500:
        y=-20

#food
    if snakecol.colliderect(foodcol):
        foodx=random.randint(0,480)
        foody=random.randint(0,480)





    x=x+xd
    y=y+yd



    pygame.draw.rect(screen,(255,255,255),(foodx,foody,20,20),0)
    pygame.draw.rect(screen,(255,255,255),(x,y,20,20),0)
    pygame.display.flip()



    time.sleep(0.4)
    count+=1
pygame.quit()

1 个答案:

答案 0 :(得分:1)

将x = x + xd更改为snakecol.x + = xd,y部分也相同。然后在绘图部分使用snakecol作为rect而不是x,y,20,20就像现在一样。问题是你永远不会更新蛇的矩形位置。抱歉格式化,我在工作和平板电脑。