为了账号安全,请及时绑定邮箱和手机立即绑定

躲避僵尸吃事物游戏,大神们帮忙看看为什么与僵尸碰撞后无反应?

/ 猿问

躲避僵尸吃事物游戏,大神们帮忙看看为什么与僵尸碰撞后无反应?

慕神0273248 2019-01-05 19:57:32
import pygame,sys
import random,math
from pygame.locals import *

pygame.init()

FPS=60
fpsClock = pygame.time.Clock()

playerImage = pygame.image.load('player.png')
playerStretchedImage = pygame.transform.scale(playerImage, (40, 40))
playerRect=playerImage.get_rect()
foodImage = pygame.image.load('cherry.png')
font = pygame.font.SysFont(None,48)
baddie=pygame.image.load('baddie.png')
x=10
y=10
a,b=0,0
movex,movey=0,0
foodCounter = 0
NEWFOOD = 15

BADDIEMINSIZE = 10
BADDIEMAXSIZE = 40
BADDIEMINSPEED = 1
BADDIEMAXSPEED = 8
ADDNEWBADDIERATE = 6

foods = []
for i in range(20):
    foods.append(pygame.Rect(random.randint(0, 500 - 20), random.randint(0, 400 - 20), 20, 20))

white=(255,255,255)
black=(0,0,0)

windowSurface=pygame.display.set_mode((500,400),0,32)
pygame.display.set_caption('move')

def waitForPlayerToPressKey():
    while True:
        for event in pygame.event.get():
            if event.type == QUIT:
                pygame.quit()
                sys.exit()
            if event.type == KEYDOWN:
                if event.key == K_ESCAPE: # Pressing ESC quits.
                    pygame.quit()
                    sys.exit()
                return

def drawText(text, font, surface, x, y):
    textobj = font.render(text, 1, black)
    textrect = textobj.get_rect()
    textrect.topleft = (x, y)
    surface.blit(textobj, textrect)

topscore=0
while True:
    baddies=[]
    score=0
    baddieAddCounter=0

    while True:
        windowSurface.blit(playerStretchedImage,(x,y))
        for event in pygame.event.get():
            if event.type == QUIT:
                pygame.quit()
                sys.exit()

            x, y = pygame.mouse.get_pos()
            pygame.mouse.set_visible(False)
            x -= playerImage.get_width() / 2
            y -= playerImage.get_height() / 2
            player = pygame.Rect(x, y, 40, 40)

        windowSurface.fill(white)

        foodCounter += 1
        if foodCounter >= NEWFOOD:
            foodCounter = 0
            foods.append(pygame.Rect(random.randint(0, 500- 20), random.randint(0, 400 - 20), 20, 20))

        windowSurface.blit(playerStretchedImage,(x,y))

        for food in foods[:]:
            if player.colliderect(food):
                foods.remove(food)
                score+=1
                player = pygame.Rect(player.left, player.top, player.width + 2, player.height + 2)
                playerStretchedImage = pygame.transform.scale(playerImage, (player.width, player.height))

        drawText('Score: %s' % (score), font, windowSurface, 10, 0)
        drawText('Top Score: %s' % (topscore), font, windowSurface, 10, 40)

        for food in foods:
            windowSurface.blit(foodImage, food)

        pygame.display.update()

        baddieAddCounter+=1
        if baddieAddCounter == ADDNEWBADDIERATE:
            baddieAddCounter = 0
            baddieSize = random.randint(BADDIEMINSIZE, BADDIEMAXSIZE)
            newBaddie = {'rect': pygame.Rect(random.randint(0, 500 - baddieSize), 0 - baddieSize, baddieSize,baddieSize),
                        'speed': random.randint(BADDIEMINSPEED, BADDIEMAXSPEED),
                        'surface': pygame.transform.scale(baddie, (baddieSize, baddieSize)),
                        }
            baddies.append(newBaddie)

        for b in baddies:
            b['rect'].move_ip(0, b['speed'])

        for b in baddies[:]:
            if b['rect'].top > 400:
                baddies.remove(b)

        for b in baddies:
            windowSurface.blit(b['surface'], b['rect'])

        pygame.display.update()

        for b in baddies:
            if playerRect.colliderect(b['rect']):
                if score > topscore:
                    topscore = score
                break
            break

        fpsClock.tick(FPS)

    drawText('GAME OVER', font, windowSurface, (500 / 3), (400 / 3))
    drawText('Press a key to play again.', font, windowSurface, (500 / 3) - 80, (400 / 3) + 50)
    pygame.display.update()
    fpsClock.tick(FPS)
    waitForPlayerToPressKey()


查看完整描述

2 回答

?
慕神0273248

图片链接: https://pan.baidu.com/s/1vFYnrawjM5Yw4-xLXhNfXQ 提取码: hxt8

查看完整回答
1 反对 回复 2019-01-05
?
慕神0273248

之前没有发全

图片链接: https://pan.baidu.com/s/1ajB8CH888Ufe4hk6qBIXug 提取码: 79hq


查看完整回答
反对 回复 2019-01-05

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信