Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在pygame中显示文本2秒_Python_Pygame - Fatal编程技术网

Python 如何在pygame中显示文本2秒

Python 如何在pygame中显示文本2秒,python,pygame,Python,Pygame,我正在用pygame做一个赛车游戏。当汽车撞上一面墙时,应该会显示“YOU crash”信息。它正在这样做,但它只显示了一小部分秒,然后它重置游戏,你必须再次玩。上面写着def_crash()的部分是我发出显示文本命令的地方 以下是游戏的代码: import time import random pygame.init() display_width = 800 display_height = 600 black = (0,0,0) white = (255,255,255) red

我正在用pygame做一个赛车游戏。当汽车撞上一面墙时,应该会显示“YOU crash”信息。它正在这样做,但它只显示了一小部分秒,然后它重置游戏,你必须再次玩。上面写着
def_crash()
的部分是我发出显示文本命令的地方

以下是游戏的代码:

import time
import random

pygame.init()

display_width = 800
display_height = 600

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

red = (200,0,0)
green = (0,200,0)

bright_red = (255,0,0)
bright_green = (0,255,0)


car_width = 86

gameDisplay = pygame.display.set_mode((display_width,display_height))
pygame.display.set_caption("Racing Game")
clock = pygame.time.Clock()

carImg = pygame.image.load("download.png")
carImg = pygame.transform.scale(carImg,(100,160))

def things_dodged(count):
    font = pygame.font.SysFont(None, 25)
    text = font.render ("Dodged: "+str(count), True, black)
    gameDisplay.blit(text,(0,0))

def things(thingx, thingy, thingw, thingh, color):
    pygame.draw.rect(gameDisplay, color, [thingx, thingy, thingw, thingh])

def car(x,y):
    gameDisplay.blit(carImg, (x,y))

def text_objects(text, font):
    textSurface = font.render(text, True, black)
    return textSurface, textSurface.get_rect()


def message_display(text):
    largeText = pygame.font.Font("freesansbold.ttf",100)
    TextSurf, TextRect = text_objects(text, largeText)
    TextRect.center = ((display_width/2),(display_height/2))
    gameDisplay.blit(TextSurf, TextRect)

    pygame.display.update()

    game_loop()

    time.sleep(2)

def crash():
    message_display ("YOU CRASHED")

def button(msg,x,y,w,h,ic,ac,action = None):
    mouse = pygame.mouse.get_pos()
    click = pygame.mouse.get_pressed()
    print(click)
    if x + w > mouse [0] > x and y + h > mouse [1] > y:
        pygame.draw.rect(gameDisplay, ac, (x,y,w,h))
        if click[0] == 1 and action != None:
            if action == "play":
                game_loop()

            elif action == "quit":
                pygame.quit()
                quit()


    else:
        pygame.draw.rect(gameDisplay, ic, (x,y,w,h))

    smallText = pygame.font.Font("freesansbold.ttf",20)
    textSurf, textRect = text_objects(msg, smallText) 
    textRect.center = ( (x+(w/2)), (y+(h/2)) )
    gameDisplay.blit(textSurf, textRect)


def game_intro():
    intro = True

    while intro:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                quit()
        gameDisplay.fill(white)
        largeText = pygame.font.Font("freesansbold.ttf",100)
        TextSurf, TextRect = text_objects("Racing Game", largeText)
        TextRect.center = ((display_width/2),(display_height/2))
        gameDisplay.blit(TextSurf, TextRect)


        button ("GO!",150,450,100,50,green,bright_green,"play")
        button ("QUIT!",550,450,100,50,red,bright_red,"quit")





        pygame.display.update()
        clock.tick(15)



def game_loop():
    x = (display_width * 0.45)
    y = (display_height * 0.72)

    x_change = 0

    thing_startx = random.randrange(0, display_width)
    thing_starty = -600
    thing_speed = 7
    thing_width = 100
    thing_height = 100

    thingCount = 1

    dodged = 0


    gameExit = False

    while not gameExit:

        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                quit()

            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_LEFT:
                    x_change = -5
                if event.key == pygame.K_RIGHT:
                    x_change = 5

            if event.type == pygame.KEYUP:
                if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
                    x_change = 0

        x += x_change

        gameDisplay.fill(white)


        things(thing_startx, thing_starty, thing_width, thing_height, black)
        thing_starty += thing_speed
        car (x,y)
        things_dodged(dodged)

        if x > display_width - car_width or x < -10:
            crash()


        if thing_starty > display_height:
            thing_starty = 0 - thing_height
            thing_startx = random.randrange(0,display_width)
            dodged += 1
            thing_speed += 1
            thing_width += (dodged * 0.5)


        if y < thing_starty + thing_height:


            if x > thing_startx and x < thing_startx + thing_width or x + car_width > thing_startx and x + car_width < thing_startx + thing_width: 
                crash()

        pygame.display.update()
        clock.tick(80)

game_intro()        
game_loop()
pygame.quit()
quit()```



Please help if possible. If you can tell me what's wrong and tell me how to fix it that would be great.
导入时间
随机输入
pygame.init()
显示宽度=800
显示高度=600
黑色=(0,0,0)
白色=(255255)
红色=(200,0,0)
绿色=(0200,0)
鲜红色=(255,0,0)
亮绿色=(0255,0)
轿厢宽度=86
gameDisplay=pygame.display.set_模式((显示宽度、显示高度))
pygame.display.set_标题(“赛车游戏”)
clock=pygame.time.clock()
carImg=pygame.image.load(“download.png”)
carImg=pygame.transform.scale(carImg,(100160))
def道奇事件(计数):
font=pygame.font.SysFont(无,25)
text=font.render(“减淡:+str(计数),真,黑色)
blit(文本,(0,0))
定义事物(thingx、thingy、thingw、thingh、颜色):
pygame.draw.rect(游戏显示,颜色,[thingx,thingy,thingw,thingh])
def汽车(x,y):
游戏显示.blit(carImg,(x,y))
def text_对象(文本、字体):
textSurface=font.render(文本,真,黑色)
返回textSurface,textSurface.get_rect()
def信息_显示(文本):
largeText=pygame.font.font(“freesansbold.ttf”,100)
TextSurf,TextRect=text\u对象(text,largeText)
text rect.center=((显示宽度/2),(显示高度/2))
blit(TextSurf,TextRect)
pygame.display.update()
博弈(循环)
时间。睡眠(2)
def crash():
信息显示(“您崩溃了”)
def按钮(消息、x、y、w、h、ic、ac、操作=无):
mouse=pygame.mouse.get_pos()
click=pygame.mouse.get_pressed()
打印(单击)
如果x+w>鼠标[0]>x和y+h>鼠标[1]>y:
pygame.draw.rect(游戏显示,ac,(x,y,w,h))
如果单击[0]==1并执行操作!=无:
如果动作==“播放”:
博弈(循环)
elif操作==“退出”:
pygame.quit()
退出
其他:
pygame.draw.rect(游戏显示,ic,(x,y,w,h))
smallText=pygame.font.font(“freesansbold.ttf”,20)
textSurf,textRect=text\u对象(msg,smallText)
textRect.center=((x+(w/2)),(y+(h/2)))
blit(textSurf,textRect)
def game_intro():
简介=正确
而简介:
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
pygame.quit()
退出
游戏显示。填充(白色)
largeText=pygame.font.font(“freesansbold.ttf”,100)
TextSurf,TextRect=text_对象(“赛车游戏”,largeText)
text rect.center=((显示宽度/2),(显示高度/2))
blit(TextSurf,TextRect)
按钮(“GO!”,150450100,50,绿色,亮绿色,“play”)
按钮(“退出!”,550450100,50,红色,亮红色,“退出”)
pygame.display.update()
时钟滴答(15)
def game_loop():
x=(显示宽度*0.45)
y=(显示高度*0.72)
x_变化=0
thing\u startx=random.randrange(0,显示宽度)
事情开始=-600
速度=7
物体宽度=100
物体高度=100
thingCount=1
减淡=0
gameExit=False
不退出游戏时:
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
pygame.quit()
退出
如果event.type==pygame.KEYDOWN:
如果event.key==pygame.K_左:
x_变化=-5
如果event.key==pygame.K_RIGHT:
x_变化=5
如果event.type==pygame.KEYUP:
如果event.key==pygame.K_左或event.key==pygame.K_右:
x_变化=0
x+=x_变化
游戏显示。填充(白色)
事物(事物开始,事物开始,事物宽度,事物高度,黑色)
物体开始速度+=物体速度
汽车(x,y)
闪避的事物(闪避)
如果x>显示宽度-轿厢宽度或x<-10:
崩溃()
如果事物开始>显示高度:
物体起点=0-物体高度
thing\u startx=random.randrange(0,显示宽度)
减淡+=1
速度+=1
物体宽度+=(减淡*0.5)
如果y<物体起点+物体高度:
如果x>thing\u startx和xthing\u startx和x+car\u width
一种快速而肮脏的方法就是这样做。我所做的改动就是你的
crash
函数,并在调用它的地方添加了一点代码。我还删除了
display\u message
中的一些行

import pygame
import time

pygame.init()

display_width = 800
display_height = 600

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


car_width = 86

gameDisplay = pygame.display.set_mode((display_width,display_height))
pygame.display.set_caption("Racing Game")
clock = pygame.time.Clock()

carImg = pygame.image.load("download.png")
carImg = pygame.transform.scale(carImg,(100,160))


def car(x,y):
    gameDisplay.blit(carImg, (x,y))

def text_objects(text, font):
    textSurface = font.render(text, True, black)
    return textSurface, textSurface.get_rect()


def message_display(text):
    largeText = pygame.font.Font("freesansbold.ttf",100)
    TextSurf, TextRect = text_objects(text, largeText)
    TextRect.center = ((display_width/2),(display_height/2))
    gameDisplay.blit(TextSurf, TextRect)

    # Don't do any of these.
    # pygame.display.update()
    # game_loop()
    # time.sleep(2)


def crash_scene(x, y):
    sceneExit = False
    time = 2000  # 2000 milliseconds until we continue.

    while not sceneExit:

        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                quit()

        gameDisplay.fill(white)
        car (x,y)
        message_display ("YOU CRASHED")

        pygame.display.update()

        passed_time = clock.tick(60)
        time -= passed_time
        if time <= 0:
            sceneExit = True

def game_loop():
    x = (display_width * 0.45)
    y = (display_height * 0.72)

    x_change = 0


    gameExit = False

    while not gameExit:

        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                quit()

            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_LEFT:
                    x_change = -5
                if event.key == pygame.K_RIGHT:
                    x_change = 5

            if event.type == pygame.KEYUP:
                if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
                    x_change = 0

        x += x_change

        gameDisplay.fill(white)
        car (x,y)

        if x > display_width - car_width or x < -10:
            crash_scene(x, y)
            # Reset car
            x = (display_width * 0.45)
            y = (display_height * 0.72)
            x_change = 0

        pygame.display.update()
        clock.tick(60)

game_loop()
pygame.quit()
quit()
导入pygame
导入时间
pygame.init()
显示宽度=800
显示高度=600
黑色=(0,0,0)
白色=(255255)
红色=(255,0,0)
轿厢宽度=86
gameDisplay=pygame.display.set_模式((显示宽度、显示高度))
pygame.display.set_标题(“赛车游戏”)
clock=pygame.time.clock()
carImg=pygame.image.load(“download.png”)
carImg=pygame.transform.scale(carImg,(100160))
def汽车(x,y):
游戏显示.blit(carImg,(x,y))
def text_对象(文本、字体):
textSurface=font.render(文本,真,黑色)
返回textSurface,textSurface.get_rect()
def信息_显示(文本):
largeText=pygame.font.font(“freesansbold.ttf”,100)
TextSurf,TextRect=text\u对象(text,largeText)
text rect.center=((显示宽度/2),(显示高度/2))
blit(TextSurf,TextRect)
#不要这样做。
#pygame.display.update()
#博弈(循环)
#时间。睡眠(2)
def碰撞_场景(x,y):
sceneExit=False
T