“开始”屏幕不起作用如何解决问题?

问题描述

我遇到的问题是,每次我运行游戏时,开始屏幕都无法正常工作,例如,全部单击“开始”按钮,这将不允许我开始游戏,但一切似乎正确,并且的地方,如果有人可以请帮助的话,将不胜感激

import pygame,random
from time import sleep

pygame.init()
# music/sounds
CarSound = pygame.mixer.Sound("image/CAR+Peels+Out.wav")
CarSound_two = pygame.mixer.Sound("image/racing01.wav")
CarSound_three = pygame.mixer.Sound("image/RACECAR.wav")
CarSound_four = pygame.mixer.Sound("image/formula+1.wav")
Crowds = pygame.mixer.Sound("image/cheer_8k.wav")
Crowds_two = pygame.mixer.Sound("image/applause7.wav")
Crowds_three = pygame.mixer.Sound("image/crowdapplause1.wav")
music = pygame.mixer.music.load("image/Led Zeppelin - Rock And Roll (Alternate Mix) (Official Music Video).mp3")
pygame.mixer.music.play(-1)
bg = pygame.image.load('image/Crowds.png')

clock = pygame.time.Clock()

# Setting up our colors that we are going to use
GREEN = (20,255,140)
GREY = (210,210,210)
WHITE = (255,255)
RED = (255,0)
PURPLE = (255,255)
BLACKWHITE = (96,96,96)
BLACK = (105,105,105)
RGREEN = (0,66,37)
LIGHT_RED = (200,0)
BRIGHT_GREEN = (0,0)
DARK_BLUE = (0,139)
BLUE = (0,255)
NAVY = (0,128)
DARK_OLIVE_GREEN = (85,107,47)
YELLOW_AND_GREEN = (154,205,50)


SCREENWIDTH = 400
SCREENHEIGHT = 500

size = (SCREENWIDTH,SCREENHEIGHT)
screen = pygame.display.set_mode(size)
pygame.display.set_caption("Car Racing")
Icon = pygame.image.load("image/redca_iconr.png")
pygame.display.set_icon((Icon))
# This will be a list that will contain all the sprites we intend to use in our game.
# all_sprites_list = pygame.sprite.Group()

# player
playerIMG = pygame.image.load("image/red_racecar.png")
playerX = 280
playerY = 450
playerCar_position = 0

# player2
playerIMG_two = pygame.image.load("image/greencar.png")
playerX_two = 150
playerY_two = 450
playerCar_position_two = 0

# player3
playerIMG_three = pygame.image.load("image/Orangecar.png")
playerX_three = 60
playerY_three = 450
playerCar_position_three = 0

# player4
playerIMG_four = pygame.image.load("image/yellowcar2.png")
playerX_four = 210
playerY_four = 450
playerCar_position_four = 0


# Putting cars to the screen
def player(x,y):
    screen.blit(playerIMG,(x,y))


def player_two(x,y):
    screen.blit(playerIMG_two,y))


def player_three(x,y):
    screen.blit(playerIMG_three,y))


def player_four(x,y):
    screen.blit(playerIMG_four,y))


finish_text = ""
font2 = pygame.font.SysFont("Papyrus",65)
players_finished = 0
placings = ["1st","2nd","3rd","4th"]

smallfont = pygame.font.SysFont("Papyrus",15)
normalfont = pygame.font.SysFont("arial",25)
differntfont = pygame.font.SysFont("futura",25)


def score(score):
    text = smallfont.render("Race cars passing: " + str(score),True,RGREEN)
    screen.blit(text,[145,490])


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


def message_display(text):
    largText = pygame.font.Font("Mulish-Regular.ttf",15)
    TextSurf,TextRect = text_objects(text,largText)
    TextRect.center = ((SCREENWIDTH / 1),(SCREENHEIGHT / 1))
    screen.blit(TextSurf,TextRect)

text_two = normalfont.render("Start new game?",5,(0,37))
time_to_blit = None

screen.blit(bg,0))
pygame.display.flip()

这是我的按钮,“退出”按钮可以正常工作,而只是“执行”按钮,按下该按钮将无法让我开始游戏,我唯一的猜测可能是除非我在错误的地方放置了东西?

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(screen,h))
        if click[0] == 1 and action != None:
            if action == "Play":
                game_loop()
            elif action == "Quit":
                pygame.quit()
                quit()

    else:
        pygame.draw.rect(screen,h))

    if 260 + 100 > mouse[0] > 260 and 40 + 50 > mouse[1] > 40:
        pygame.draw.rect(screen,BLUE,(260,40,100,50))
    else:
        pygame.draw.rect(screen,DARK_BLUE,50))

    newtext = pygame.font.SysFont("arial",25)
    textSurf,textReact = text_objects(msg,newtext)
    textReact.center = ((x + (100 / 2))),(y + (h / 2))
    screen.blit(textSurf,textReact)

    newtext = pygame.font.SysFont("arial",textReact = text_objects("QUIT!",newtext)
    textReact.center = ((260 + (100 / 2))),(40 + (50 / 2))
    screen.blit(textSurf,textReact)


def game_intro():
    intro = True
    while intro:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                quit()

        screen.fill(YELLOW_AND_GREEN)
        text = normalfont.render("Super Racer!",8,37))
        screen.blit(text,(165 - (text.get_width() / 5),100))

        button("GO!",60,50,RED,LIGHT_RED,"Play")
        button("QUIT!",260,"Quit")
        pygame.display.update()
        clock.tick(15)



# Main game loop
def game_loop():
    run = True
    while run:
        # Drawing on Screen
        screen.fill(BLACK)
        # Draw The Road
        pygame.draw.rect(screen,GREY,[40,300,500])
        # Draw Line painting on the road
        pygame.draw.line(screen,WHITE,[185,0],500],5)
        # Finish line
        pygame.draw.rect(screen,BLACKWHITE,[50,280,40])
        pygame.draw.line(screen,70],[330,5)
        font = pygame.font.SysFont("Impact",20)
        text = font.render("Finish line!",2,(150,25))
        screen.blit(text,(185 - (text.get_width() / 2),45))
        screen.blit(bg,(-236,-34))
        screen.blit(bg,-5))
        screen.blit(bg,(-235,140))
        screen.blit(bg,240))
        screen.blit(bg,340))
        screen.blit(bg,(340,-60))
        screen.blit(bg,(335,5))
        screen.blit(bg,130))
        screen.blit(bg,230))
        screen.blit(bg,330))
        screen.blit(bg,(333,330))

        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                run = False
                # Number of frames per secong e.g. 60
                clock.tick(60)

            keys = pygame.key.get_pressed()

            if keys[pygame.K_1]:
                CarSound.play()
                playerCar_position = -0.5
            if keys[pygame.K_q]:
                playerCar_position = 0.5
            if keys[pygame.K_2]:
                CarSound_two.play()
                playerCar_position_two = -0.5
            if keys[pygame.K_w]:
                playerCar_position_two = 0.5
            if keys[pygame.K_3]:
                CarSound_three.play()
                playerCar_position_three = -0.5
            if keys[pygame.K_e]:
                playerCar_position_three = 0.5
            if keys[pygame.K_4]:
                CarSound_four.play()
                playerCar_position_four = -0.5
            if keys[pygame.K_r]:
                playerCar_position_four = 0.5
                
# our functions
playerY += playerCar_position
playerY_two += playerCar_position_two
playerY_three += playerCar_position_three
playerY_four += playerCar_position_four

player(playerX,playerY)
player_two(playerX_two,playerY_two)
player_three(playerX_three,playerY_three)
player_four(playerX_four,playerY_four)

finish_line_rect = pygame.Rect(50,70,235,32)
game_intro()
score(players_finished)  


# Did anyone cross the line?
if (finish_line_rect.collidepoint(playerX,playerY)):
    if finish_text[:8] != "Player 1":  # so it doesnt do this every frame the car is intersecting
        inish_text = "Player 1 is " + placings[players_finished]
        players_finished += 1
        print("Player (one) has crossed into finish line!")
        Crowds.play()


    elif (finish_line_rect.collidepoint(playerX_two,playerY_two)):
        if finish_text[:8] != "Player 2":
            print("Player one has crossed into finish line first other car lost!")
            finish_text = "Player 2 is " + placings[players_finished]
            players_finished += 1
            Crowds_three.play()


    elif (finish_line_rect.collidepoint(playerX_three,playerY_three)):
        if finish_text[:8] != "Player 3":
            print("Player two has crossed into finish line first other car lost!")
            finish_text = "Player 3 is " + placings[players_finished]
            players_finished += 1

    elif (finish_line_rect.collidepoint(playerX_four,playerY_four)):
        if finish_text[:8] != "Player 4":
            print("Player two has crossed into finish line first other car lost!")
            finish_text = "Player 4 is " + placings[players_finished]
            players_finished += 1
            Crowds_two.play()

        if (players_finished and finish_text):
            font = pygame.font.SysFont("Impact",15)
            text = font.render(finish_text,37))
            screen.blit(text,(90 - (text.get_width() / 2),-2))

        if (finish_text):
            font = pygame.font.SysFont("Impact",20)
            text = font.render('Game Over!!!',(250 - (text.get_width() / 5),-2))

        if players_finished == 4:
            time_to_blit = pygame.time.get_ticks() + 5000

            if time_to_blit:
                print(screen.blit(text_two,(130,460)))
                if pygame.time.get_ticks() >= time_to_blit:
                    time_to_blit = None
                
           



pygame.quit()

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)