如何将colliderect合并到蛇游戏中?

2024-10-03 06:21:40 发布

您现在位置:Python中文网/ 问答频道 /正文

让我先说我不是一个了不起的程序员,所以代码不是最漂亮的。我现在正在制作一个非常基本的snake版本。现在我被蛇和食物的碰撞难住了。(x,y代表蛇,foodx,foody代表食物)。碰撞检测现在完全不起作用了,我搞不清楚它出了什么问题。提前谢谢你的帮助。 请保持它尽可能简单,不想进入任何类,因为我还不知道如何使用这些。你知道吗

编辑:对不起,英语不是我的第一语言。代码现在正在运行。与食物碰撞后产生的碰撞和食物是不起作用的。你知道吗

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()

Tags: keyimportgetifrandomscreenpygame食物
1条回答
网友
1楼 · 发布于 2024-10-03 06:21:40

将x=x+xd更改为snakecol.x+=xd,y零件也是如此。然后在绘图部分使用蛇柱作为矩形,而不是现在的x,y,20,20。问题是你永远不会更新snake rect的位置。抱歉格式化,我在工作和平板电脑上。你知道吗

相关问题 更多 >