让我先说我不是一个了不起的程序员,所以代码不是最漂亮的。我现在正在制作一个非常基本的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()
将x=x+xd更改为snakecol.x+=xd,y零件也是如此。然后在绘图部分使用蛇柱作为矩形,而不是现在的x,y,20,20。问题是你永远不会更新snake rect的位置。抱歉格式化,我在工作和平板电脑上。你知道吗
相关问题 更多 >
编程相关推荐