使用turtle或pygame在python中按任意键再次播放

问题描述

我正在尝试使用乌龟模块和 pygame 作为主菜单创建一个种族 如何在显示获胜图像后执行可以按任意键返回主菜单代码?我尝试插入一个 pygame 事件键,但它不起作用,所以我尝试使用乌龟,但它也不起作用。

import turtle
from time import sleep  # Zzz!
from random import randint
import pygame
import os

# colors
WHITE = (255,255,255)
BLACK = (0,0)
RED = (255,0)
GREEN = (51,102,51)
broWN = (122,49,2)
GRAY = (94,92,148)
DbroWN = (78,30,0)
DGRAY = (31,31,47)
VIOLET = (99,60,181)
DVIOLET = (38,24,69)

pygame.init()

winHeight = 625
winWidth = 1000

win = pygame.display.set_mode((winWidth,winHeight))
mainmenu = pygame.image.load("m1.png")
houseterror = os.path.abspath("House_Of_Terror.ttf")


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


def button(msg,x,y,w,h,nothovercol,hovercol,action=None):
    mouse = pygame.mouse.get_pos()
    click = pygame.mouse.get_pressed()

    if x + w > mouse[0] > x and y + h > mouse[1] > y:  # If mouse 0 (x coordinate) is less than  greater than
        pygame.draw.rect(win,(x,h),border_radius=12)
        if click[0] == 1 and action != None:
            if action == "play":
                main()  
            elif action == "quit":
                pygame.quit()
                quit()
    else:
        pygame.draw.rect(win,border_radius=12)  # rect(name of screen,color,(x position,y position,width,height)

    label_menu = pygame.font.Font(houseterror,30)
    textSurf,textRect = text_objects(msg,label_menu)
    textRect.center = ((x + (w / 2)),(y + (h / 2)))
    win.blit(textSurf,textRect)


def main_menu():
    menu = True

    while menu:

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

        button("PLAY",373,469,254,41,VIOLET,DVIOLET,"play")
        button("QUIT",525,39,"quit")


win.blit(mainmenu,(0,0))

pygame.display.update()
clock = pygame.time.Clock()
clock.tick(60)


def main():
    # Making the screen and setting the background color

    window = turtle.Screen()
    window.setup(width=1000,height=625,startx=175,starty=40)
    window.bgpic("Main.png")
    window.register_shape("zom1.gif",shape=None)

    # Making the turtle to write the text
    text = turtle.Turtle()
    # Makes the text color white
    text.color('white')
    # So we don't see the movement
    text.speed(0)
    # So it doesnt draw a line
    text.penup()
    # So we don't see the turtle,just the text
    text.hideturtle()
    # Sets the position
    text.setpos(-95,180)
    # Makes the text appear
    # We write the text here so the rules apply to the text
    text.write('Turtle Race',font=('Comic Sans Ms','bold'))

    # Making the Finish Line
    square_size = 20
    stamp = 20
    finish_line = 150

    # Makes the square turtle that will draw the Finish Line
    square = turtle.Turtle()
    square.shape('square')
    square.penup()
    square.speed(0)

    # Makes the black squares
    square.color()

    # Draws the first 'column' of the Finish Line
    for i in range(9):
        # weird math
        # (finish_line) sets the x pos
        # (150 - (i * square_size * 3)) makes 'dashed' model of the finish line
        square.setpos(finish_line,(135 - (i * square_size * 2)))
        square.stamp()

    # Makes the white squares
    square.color('white')

    for i in range(9):
        # weird math
        # (finish_line) sets the x pos
        # (150 - (i * square_size * 3)) makes 'dashed' model of the finish line
        square.setpos(finish_line,(115 - (i * square_size * 2)))
        square.stamp()

    # Making the contestants
    # Contestant No.1

    turtle1 = turtle.Turtle()
    turtle1.speed(0)
    # Nice color
    turtle1.color('deepskyblue')
    # There's no turtle race whitout turtles ;)
    turtle1.shape("zom1.gif")
    turtle1.penup()
    turtle1.goto(-270,165)

    # Contestant No.2

    turtle2 = turtle.Turtle()
    turtle2.speed(0)
    # Nice color
    turtle2.color('fuchsia')
    # There's no turtle race whitout turtles ;)
    turtle2.shape("zom1.gif")
    turtle2.penup()
    turtle2.goto(-270,95)

    # Contestant No.3

    turtle3 = turtle.Turtle()
    turtle3.speed(0)
    # Nice color
    turtle3.color('gold')
    # There's no turtle race whitout turtles ;)
    turtle3.shape("zom1.gif")
    turtle3.penup()
    turtle3.goto(-270,25)

    # Contestant No.4

    turtle4 = turtle.Turtle()
    turtle4.speed(0)
    # Nice color
    turtle4.color('darkorange')
    # There's no turtle race whitout turtles 
    turtle4.shape("zom1.gif")
    turtle4.penup()
    turtle4.goto(-270,-45)

    # Contestant No.5

    turtle5 = turtle.Turtle()
    turtle5.speed(0)
    # Nice color
    turtle5.color('darkorange')
    # There's no turtle race whitout turtles ;)
    turtle5.shape("zom1.gif")
    turtle5.penup()
    turtle5.goto(-270,-115)

    # The turtle have 2 secs to prepare before the race
    sleep(2)

    # START THE GAME ALREADY!
    # Ready! Seatdy! GO!
    for i in range(150):  # (a lot)
        turtle1.forward(randint(1,5))  # move between 1 and 6 pixels at a time
        turtle2.forward(randint(1,5))  # move between 1 and 6 pixels at a time
        turtle3.forward(randint(1,5))  # move between 1 and 6 pixels at a time
        turtle4.forward(randint(1,5))  # move between 1 and 6 pixels at a time
        turtle5.forward(randint(1,5))  # move between 1 and 6 pixels at a time
        if turtle1.xcor() == 210 or turtle2.xcor() == 210 or turtle3.xcor() == 210 or turtle4.xcor() == 210 or turtle5.xcor() == 210:
            break

    # CELEBRATE THE WINNER
    if turtle1.xcor() > turtle2.xcor() and turtle1.xcor() > turtle3.xcor() and turtle1.xcor() > turtle4.xcor() and turtle1.xcor() > turtle5.xcor():
        window.bye()
        wonn = pygame.image.load("won.png")
        win.blit(wonn,0))
        pygame.display.update()

        window.onkey(main_menu,"space")
        window.listen()
    elif turtle2.xcor() > turtle1.xcor() and turtle2.xcor() > turtle3.xcor() and turtle2.xcor() > turtle4.xcor() and turtle2.xcor() > turtle5.xcor():
        window.bye()
        wonn = pygame.image.load("won.png")
        win.blit(wonn,"space")
        window.listen()
    elif turtle3.xcor() > turtle1.xcor() and turtle3.xcor() > turtle2.xcor() and turtle3.xcor() > turtle4.xcor() and turtle3.xcor() > turtle5.xcor():
        window.bye()
        wonn = pygame.image.load("won.png")
        win.blit(wonn,"space")
        window.listen()
    elif turtle4.xcor() > turtle1.xcor() and turtle3.xcor() > turtle2.xcor() and turtle3.xcor() > turtle4.xcor() and turtle4.xcor() > turtle5.xcor():
        window.bye()
        wonn = pygame.image.load("won.png")
        win.blit(wonn,"space")
        window.listen()
    else:
        window.bye()
        wonn = pygame.image.load("won.png")
        win.blit(wonn,"space")
        window.listen()


main_menu()
main()

解决方法

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

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

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