倒数计时结束后开始游戏

问题描述 投票:-2回答:1

所以我有这是我的主要游戏代码:

def game():
running = True
import pygame, sys
import random
import math as m

mainClock = pygame.time.Clock()
pygame.init()
pygame.font.init
pygame.display.set_caption('Ping Pong')
SCREEN = width, height = 900,600
white = (255, 255, 255) 
green = (0, 255, 0) 
blue = (0, 0, 128)
black = (0,0,0)
speed = [4,4]
font = pygame.font.Font('freesansbold.ttf', 32) 
score = 0
score = str(score)
font.size(score)
font.set_bold(True)
text = font.render(score, True, white)       
textRect = text.get_rect()       
textRect.center = ((width/2 - width / 20), (height/60 + height/20))
screen = pygame.display.set_mode(SCREEN, 0,32)
height1 = height/4
score = int(score)
ball = pygame.Rect(width/2, height/2, 50,50)
player = pygame.Rect(0,(height/2),25,height1)
player_1 = pygame.Rect(width - 25,(height/2),25,height1)
font1 = pygame.font.Font('freesansbold.ttf', 32) 
score1 = 0
score1 = str(score)
font1.size(score1)
font1.set_bold(True)
text1 = font1.render(score1, True, white)
score1 = int(score1)
textRect1 = text1.get_rect()     
textRect1.center = ((width/2 + width / 15), (height/60 + height/20))
up = False
down = False
up_1 = False
down_1 = False
RED = (255,0,0)
particles = []
while running:
    color = (192,192,192)
    # clear display #
    screen.fill((0,0,0))
    screen.blit(text, textRect)
    screen.blit(text1, textRect1)
    bx = ball.centerx
    by = ball.centery
    particles.append([[bx, by],[random.randint(0,20) / 10 - 1, -1], random.randint(4,6)])
    for particle in particles:
        particle[0][0] += particle[1][0]
        particle[0][1] += particle[1][1]
        particle[2] -= 0.1
        particle[1][1] += 0.1
        pygame.draw.circle(screen, color, [int(particle[0][0]), int(particle[0][1])], int(particle[2]))
        if particle[2] <= 0:
            particles.remove(particle)
    if up == True:
        player.y -= 5
    if down == True:
        player.y += 5
    if up_1 == True:
        player_1.y -= 5
    if down_1 == True:
        player_1.y += 5
    if player.top < 0 :
        player.y = 0
    if player.bottom > height:
        player.bottom = height 
    if player_1.top < 0 :
        player_1.y = 0
    if player_1.bottom > height :
        player_1.bottom = height
    for i in range(-90,(height + 130), 120):
        rectangle = pygame.Rect((width/2), i, 13, 60)
        pygame.draw.rect(screen, (255,255,255), rectangle)
    pygame.draw.rect(screen,(191, 224, 255),player)
    pygame.draw.rect(screen,(191, 224, 255),player_1)
    color = (192,192,192)
    r = random.randint(0, 255)
    g = random.randint(0, 255)
    b = random.randint(0, 255)
    pygame.draw.rect(screen,color,ball, 3)

    import time
    ball.x += speed[0]
    ball.y += speed[1]
    if ball.top < 0 or ball.bottom > height:
        speed[1] = -speed[1]
        r = random.randint(0,255)
        g = random.randint(0,255)
        b = random.randint(0,255)
        pygame.draw.rect(screen,(r,b,g),ball, 3)
        pygame.draw.circle(screen, (r,b,g), [int(particle[0][0]), int(particle[0][1])], int(particle[2]))
    dab = random.randint(0,1)
    if ball.left < 0 :
        font = pygame.font.Font('freesansbold.ttf', 32)
        score1 = int(score1)
        score1 += 1
        score1 = str(score1)
        font.set_bold(True)
        text1 = font.render(score1, True, white) 

        textRect1 = text.get_rect()  

        textRect1.center = ((width/2 + width / 15), (height/60 + height/20))


        screen.blit(text1, textRect1)
        ball.x = width/2
        ball.y = height/2
        if dab == 1:
            ball.x += -speed[0]
            ball.y += -speed[1]
        elif dab == 0:
            ball.x += speed[0]
            ball.y += speed[1]


    if ball.right > width:
        font = pygame.font.Font('freesansbold.ttf', 32)
        score = int(score)
        score += 1
        score = str(score)
        font.set_bold(True)
        text = font.render(score, True, white) 

        textRect = text.get_rect()  

        textRect.center = ((width/2 - width / 20), (height/60 + height/20))


        screen.blit(text, textRect)
        ball.x = width/2
        ball.y = height/2
        if dab == 1:
            ball.x += -speed[0]
            ball.y += -speed[1]
        elif dab == 0:
            ball.x += speed[0]
            ball.y += speed[1] 

    # event handling #
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()
        if event.type == KEYDOWN:

            if event.key == K_s:
                down = True

            if event.key == K_w:
                up = True

            if event.key == K_UP:
                up_1 =True
            if event.key == K_ESCAPE:
                running = False

            if event.key == K_DOWN:
                down_1 = True
        if event.type == KEYUP:
            if event.key == K_s:
                down = False
            if event.key == K_w:
                up = False
            if event.key == K_UP:
                up_1 = False
            if event.key == K_DOWN:
                down_1 = False

    if ball.colliderect(player_1):
        dab = random.randint(0,1)
        if dab == 1:
            speed[1] = -speed[1]
        speed[0] = -speed[0]
        r = random.randint(0,255)
        g = random.randint(0,255)
        b = random.randint(0,255)
        pygame.draw.rect(screen,(r,b,g),ball, 3)
    if ball.colliderect(player):
        speed[0] = -speed[0]
        speed[0] = random.randint(4,6)
        r = random.randint(0,255)
        g = random.randint(0,255)
        b = random.randint(0,255)
        pygame.draw.rect(screen,(r,b,g),ball, 3)


    # update display #
    pygame.display.update()
    mainClock.tick(60)

并且我有一个显示一些选项的菜单屏幕。仅button_1有效。:

def main_menu():
while True:
    white = (255,255,255)
    font = pygame.font.Font('freesansbold.ttf', 32)
    font.set_bold(True)
    screen.fill((0,0,0))
    button_1 = pygame.Rect(width/2, (height/2), width/2, 50)
    button_1.centerx = width/2
    button_2 = pygame.Rect(width/2, height/1.5, width/2, 50)
    button_2.centerx = width/2
    pygame.draw.rect(screen, (255, 0, 0), button_1)
    pygame.draw.rect(screen, (255, 0, 0), button_2)
    #draw_text('Start!', font, (255, 255, 255), screen, button_1.centerx, button_1.centery)
    font = pygame.font.Font('freesansbold.ttf', 32)
    font.set_bold(True)
    text1 = font.render('Start!', True, white) 

    textRect1 = text1.get_rect()  

    textRect1.center = (button_1.centerx, button_1.centery)


    screen.blit(text1, textRect1)

    mx, my = pygame.mouse.get_pos()


    if button_1.collidepoint((mx, my)):
        if click:
            game()
    if button_2.collidepoint((mx, my)):
        if click:
            options()


    click = False
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()
        if event.type == KEYDOWN:
            if event.key == K_ESCAPE:
                pygame.quit()
                sys.exit()
        if event.type == MOUSEBUTTONDOWN:
            if event.button == 1:
                click = True

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

我如何做到这一点,以便在按下button_1之后,屏幕上出现3,2,1的倒数,然后游戏开始?

python pygame
1个回答
0
投票

为了倒数,您导入时间模块:

import time

...然后,您需要一个for循环,从第1步开始,从3倒数到1。在for循环中,使用时间模块打印数字并休眠一秒钟:

for a in range(3,0,-1):
    print(a)
    time.sleep(1)

在此for循环之后,您放入了其余代码。

© www.soinside.com 2019 - 2024. All rights reserved.