Обнаружение срыва Пакмана - PullRequest
0 голосов
/ 21 мая 2018

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