在下面的代码中,我想简单地在碰撞发生后从显示屏上删除食物。我的第一个想法是简单地将食物的坐标改变到屏幕外的位置。但这并没有解决我的问题。
x和y坐标是相同的并存储在两个列表中(只是为了简单。一个列表可以帮我做得很好)我使用pygame.draw
来绘制食物和Packman(暂时是Packman函数)将简单的点Packman替换为其图片)
关于我的问题的任何想法?
import pygame
white=(255,255,255)
black=(0,0,0)
foodcolor=(120,100,130)
PackmanColor=(255,215,0)
PageHeight = 500
PageWidth = 500
FPS=20
x_packman= 150
y_packman= 200
x_food = 20
pygame.init()
surface = pygame.display.set_mode((PageHeight,PageWidth))
pygame.display.set_caption("AI Game")
clock = pygame.time.Clock()
PackmanPicture = pygame.image.load('packman.png').convert()
RedGhost = pygame.image.load('redghost.png').convert()
YellowGhost = pygame.image.load('yellowghost.png').convert()
face="right"
def packmann(x , y):
pygame.draw.rect(surface, PackmanColor, [x, y, 10, 10])
def Packman(x , y, image):
if(face =="right"):
temp_face = pygame.transform.rotate(image,0)
if(face == "left"):
temp_face = pygame.transform.rotate(image,180)
if (face == "up"):
temp_face = pygame.transform.rotate(image, 90)
if (face == "down"):
temp_face = pygame.transform.rotate(image, 270)
surface.blit(temp_face ,(x,y))
def ghost(x,y,image):
surface.blit(image,(x,y))
#y_food = 10
red_ghost_x = 400
red_ghost_y = 400
yellow_ghost_x = 400
yellow_ghost_y = 50
xfood = []
for i in range(50):
x_food +=23
xfood.append(x_food)
#print(xfood)
yfood = xfood
y_move = 0
x_move = 0
Game_Over=False
def GameOver():
pygame.quit()
quit()
while not Game_Over:
global face
for event in pygame.event.get():
if (event.type == pygame.QUIT):
Game_Over=True
if (event.type == pygame.KEYDOWN):
if (event.key == pygame.K_UP):
y_move = -3
x_move = 0
face="up"
if (event.type == pygame.KEYDOWN):
if (event.key == pygame.K_DOWN):
y_move = 3
x_move = 0
face = "down"
if(event.type == pygame.KEYDOWN):
if(event.key == pygame.K_RIGHT):
x_move = 3
y_move = 0
face = "right"
if(event.type == pygame.KEYDOWN):
if(event.key == pygame.K_LEFT):
x_move = -3
y_move = 0
face = "left"
y_packman+=y_move
x_packman+=x_move
surface.fill(black)
#packman(x_packman,y_packman,PackmanPicture)
packmann(x_packman,y_packman)
ghost(red_ghost_x,red_ghost_y,RedGhost)
ghost(yellow_ghost_x,yellow_ghost_y,YellowGhost)
if (y_packman>PageHeight-10 or y_packman<5 or x_packman>PageWidth-10 or x_packman<5):
GameOver()
for i in range(len(xfood)-31):
for j in range(len(xfood)-31):
pygame.draw.rect(surface,foodcolor,[xfood[i],yfood[j],4,4])
pygame.display.update()
for i in range(len(xfood)-31):
for j in range(len(xfood)-31):
if (x_packman == xfood[i] and y_packman == yfood[j]):
xfood[i]=999
yfood[j]=999
clock.tick(FPS)
pygame.quit()
quit()