В моем коде ниже я хочу просто удалить еду с дисплея после столкновения.Моими первыми мыслями было просто изменить координаты еды на место вне экрана.Но это не решило мою проблему.Координаты 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()