单击开始按钮时如何退出标题屏幕?

2024-05-13 23:35:25 发布

您现在位置:Python中文网/ 问答频道 /正文

import pygame
import random

pygame.init()

#dimensions
width = 800
height = 600
# creating screen
screen = pygame.display.set_mode((width, height))
running = True
# loading card images
diamond_2 = pygame.image.load('2D.png')
clover_2 = pygame.image.load('2C.png')
heart_2 = pygame.image.load('2H.png')
spade_2 = pygame.image.load('2S.png')
diamond_3 = pygame.image.load('3D.png')
clover_3 = pygame.image.load('3C.png')
heart_3 = pygame.image.load('3H.png')
spade_3 = pygame.image.load('2S.png')
diamond_4 = pygame.image.load('4D.png')
clover_4 = pygame.image.load('4C.png')
heart_4 = pygame.image.load('4H.png')
spade_4 = pygame.image.load('4S.png')
diamond_5 = pygame.image.load('5D.png')
clover_5 = pygame.image.load('5C.png')
heart_5 = pygame.image.load('5H.png')
spade_5 = pygame.image.load('5S.png')
diamond_6 = pygame.image.load('6D.png')
clover_6 = pygame.image.load('6C.png')
heart_6 = pygame.image.load('6H.png')
spade_6 = pygame.image.load('6S.png')
diamond_7 = pygame.image.load('7D.png')
clover_7 = pygame.image.load('7C.png')
heart_7 = pygame.image.load('7H.png')
spade_7 = pygame.image.load('7S.png')
diamond_8 = pygame.image.load('8D.png')
clover_8 = pygame.image.load('8C.png')
heart_8 = pygame.image.load('8H.png')
spade_8 = pygame.image.load('8S.png')
diamond_9 = pygame.image.load('9D.png')
clover_9 = pygame.image.load('9C.png')
heart_9 = pygame.image.load('9H.png')
spade_9 = pygame.image.load('9S.png')
diamond_10 = pygame.image.load('10D.png')
clover_10 = pygame.image.load('10C.png')
heart_10 = pygame.image.load('10H.png')
spade_10 = pygame.image.load('10S.png')
diamond_j = pygame.image.load('JD.png')
clover_j = pygame.image.load('JC.png')
heart_j = pygame.image.load('JH.png')
spade_j = pygame.image.load('JS.png')
diamond_q = pygame.image.load('QD.png')
clover_q = pygame.image.load('QC.png')
heart_q = pygame.image.load('QH.png')
spade_q = pygame.image.load('QS.png')
diamond_k = pygame.image.load('KD.png')
clover_k = pygame.image.load('KC.png')
heart_k = pygame.image.load('KH.png')
spade_k = pygame.image.load('KS.png')
diamond_a = pygame.image.load('AD.png')
clover_a = pygame.image.load('AC.png')
heart_a = pygame.image.load('AH.png')
spade_a = pygame.image.load('AS.png')

# creates game icon
def icon():
    pygame.display.set_caption("Blackjack")
    icon = pygame.image.load('jack.jpg')
    pygame.display.set_icon(icon)

# knight image
def knight_img():
    knight = pygame.image.load('knight.png')
    knightX = 295
    knightY = 430
    screen.blit(knight, (knightX, knightY))

# chatbox image    
def chatbox_img():
    chatbox = pygame.image.load('chatbox.png')
    chatboxX = 405
    chatboxY = 395
    screen.blit(chatbox, (chatboxX, chatboxY))

# game ui
def game_ui():
    green_background = screen.fill((10, 108, 3))

# generates random card 
def random_card():
    num = random.randint(1, 13)
    return num

# generates random card face
def random_face():
    possible_faces = 'DCHS'
    return random.choice(possible_faces)

# player 1 avatar
def player1_avatar():
    p1_avatar = pygame.image.load('p1.jpg')
    p1_avatarX = 195
    p1_avatarY = 130
    screen.blit(p1_avatar, (p1_avatarX, p1_avatarY))

# player 2 avatar
def player2_avatar():
    p2_avatar = pygame.image.load('p2.jpg')
    p2_avatarX = 495
    p2_avatarY = 130
    screen.blit(p2_avatar, (p2_avatarX, p2_avatarY))

# player 3 avatar
def player3_avatar():
    p3_avatar = pygame.image.load('p3.png')
    p3_avatarX = 495
    p3_avatarY = 230
    screen.blit(p3_avatar, (p3_avatarX, p3_avatarY))

# player 4 avatar
def player4_avatar():
    p4_avatar = pygame.image.load('p4.jpg')
    p4_avatarX = 195
    p4_avatarY = 230
    screen.blit(p4_avatar, (p4_avatarX, p4_avatarY))

# blacjack game
def blackjack_game():
    jack = 'JACK'
    queen = 'QUEEN'
    king = 'KING'
    ace = 'ACE'
    total_num_p1 = 0
    limit = 21
    total_num_p2 = 0

    # player 1 turn 
    def player1_turn():
        pass

    # player 2 turn 
    def player2_turn():
        pass

    # converts card to correct image
    def card_to_img():
        x = random_card()
        if x == 2:
            face = random_face()
            card = str(x) + face
            if card == '2D':
                diamond_2X = 295
                diamond_2Y = 430
                screen.blit(diamond_2, (diamond_2X, diamond_2Y))
            elif card == '2C':
                clover_2X = 295
                clover_2Y = 430
                screen.blit(clover_2, (clover_2X, clover_2Y))
            elif card == '2H':
                heart_2X = 295
                heart_2Y = 430
                screen.blit(heart_2, (heart_2X, heart_2Y))
            else:
                spade_2X = 295
                spade_2Y = 430
                screen.blit(spade_2, (spade_2X, spade_2Y))
        elif x == 3:
            face = random_face()
            card = str(x) + face
            if card == '3D':
                diamond_3X = 295
                diamond_3Y = 430
                screen.blit(diamond_3, (diamond_3X, diamond_3Y))
            elif card == '3C':
                clover_3X = 295
                clover_3Y = 430
                screen.blit(clover_3, (clover_3X, clover_3Y))
            elif card == '3H':
                heart_3X = 295
                heart_3Y = 430
                screen.blit(heart_3, (heart_3X, heart_3Y))
            else:
                spade_3X = 295
                spade_3Y = 430
                screen.blit(spade_3, (spade_3X, spade_3Y))
        elif x == 4:
            face = random_face()
            card = str(x) + face
            if card == '4D':
                diamond_4X = 295
                diamond_4Y = 430
                screen.blit(diamond_4, (diamond_4X, diamond_4Y))
            elif card == '4C':
                clover_4X = 295
                clover_4Y = 430
                screen.blit(clover_4, (clover_4X, clover_4Y))
            elif card == '4H':
                heart_4X = 295
                heart_4Y = 430
                screen.blit(heart_4, (heart_4X, heart_4Y))
            else:
                spade_4X = 295
                spade_4Y = 430
                screen.blit(spade_4, (spade_4X, spade_4Y))
        elif x == 5:
            face = random_face()
            card = str(x) + face
            if card == '5D':
                diamond_5X = 295
                diamond_5Y = 430
                screen.blit(diamond_5, (diamond_5X, diamond_5Y))
            elif card == '5C':
                clover_5X = 295
                clover_5Y = 430
                screen.blit(clover_5, (clover_5X, clover_5Y))
            elif card == '5H':
                heart_5X = 295
                heart_5Y = 430
                screen.blit(heart_5, (heart_5X, heart_5Y))
            else:
                spade_5X = 295
                spade_5Y = 430
                screen.blit(spade_5, (spade_5X, spade_5Y))
        elif x == 6:
            face = random_face()
            card = str(x) + face
            if card == '6D':
                diamond_6X = 295
                diamond_6Y = 430
                screen.blit(diamond_6, (diamond_6X, diamond_6Y))
            elif card == '6C':
                clover_6X = 295
                clover_6Y = 430
                screen.blit(clover_6, (clover_6X, clover_6Y))
            elif card == '6H':
                heart_6X = 295
                heart_6Y = 430
                screen.blit(heart_6, (heart_6X, heart_6Y))
            else:
                spade_6X = 295
                spade_6Y = 430
                screen.blit(spade_6, (spade_6X, spade_6Y))
        elif x == 7:
            face = random_face()
            card = str(x) + face
            if card == '7D':
                diamond_7X = 295
                diamond_7Y = 430
                screen.blit(diamond_7, (diamond_7X, diamond_7Y))
            elif card == '7C':
                clover_7X = 295
                clover_7Y = 430
                screen.blit(clover_7, (clover_7X, clover_7Y))
            elif card == '7H':
                heart_7X = 295
                heart_7Y = 430
                screen.blit(heart_7, (heart_7X, heart_7Y))
            else:
                spade_7X = 295
                spade_7Y = 430
                screen.blit(spade_7, (spade_7X, spade_7Y))
        elif x == 8:
            face = random_face()
            card = str(x) + face
            if card == '8D':
                diamond_8X = 295
                diamond_8Y = 430
                screen.blit(diamond_8, (diamond_8X, diamond_8Y))
            elif card == '8C':
                clover_8X = 295
                clover_8Y = 430
                screen.blit(clover_8, (clover_8X, clover_8Y))
            elif card == '8H':
                heart_8X = 295
                heart_8Y = 430
                screen.blit(heart_8, (heart_8X, heart_8Y))
            else:
                spade_8X = 295
                spade_8Y = 430
                screen.blit(spade_8, (spade_8X, spade_8Y))
        elif x == 9:
            face = random_face()
            card = str(x) + face
            if card == '9D':
                diamond_9X = 295
                diamond_9Y = 430
                screen.blit(diamond_9, (diamond_9X, diamond_9Y))
            elif card == '9C':
                clover_9X = 295
                clover_9Y = 430
                screen.blit(clover_9, (clover_9X, clover_9Y))
            elif card == '9H':
                heart_9X = 295
                heart_9Y = 430
                screen.blit(heart_9, (heart_9X, heart_9Y))
            else:
                spade_9X = 295
                spade_9Y = 430
                screen.blit(spade_9, (spade_9X, spade_9Y))
        elif x == 10:
            face = random_face()
            card = str(x) + face
            if card == '10D':
                diamond_10X = 295
                diamond_10Y = 430
                screen.blit(diamond_10, (diamond_10X, diamond_10Y))
            elif card == '10C':
                clover_10X = 295
                clover_10Y = 430
                screen.blit(clover_10, (clover_10X, clover_10Y))
            elif card == '10H':
                heart_10X = 295
                heart_10Y = 430
                screen.blit(heart_10, (heart_10X, heart_10Y))
            else:
                spade_10X = 295
                spade_10Y = 430
                screen.blit(spade_10, (spade_10X, spade_10Y))
        elif x == 11:
            face = random_face()
            card = str(x) + face
            if card == '11D':
                diamond_jX = 295
                diamond_jY = 430
                screen.blit(diamond_j, (diamond_jX, diamond_jY))
            elif card == '11C':
                clover_jX = 295
                clover_jY = 430
                screen.blit(clover_j, (clover_jX, clover_jY))
            elif card == '11H':
                heart_jX = 295
                heart_jY = 430
                screen.blit(heart_j, (heart_jX, heart_jY))
            else:
                spade_jX = 295
                spade_jY = 430
                screen.blit(spade_j, (spade_jX, spade_jY))
        elif x == 12:
            face = random_face()
            card = str(x) + face
            if card == '12D':
                diamond_qX = 295
                diamond_qY = 430
                screen.blit(diamond_q, (diamond_qX, diamond_qY))
            elif card == '12C':
                clover_qX = 295
                clover_qY = 430
                screen.blit(clover_q, (clover_qX, clover_qY))
            elif card == '12H':
                heart_qX = 295
                heart_qY = 430
                screen.blit(heart_q, (heart_qX, heart_qY))
            else:
                spade_qX = 295
                spade_qY = 430
                screen.blit(spade_q, (spade_qX, spade_qY))
        elif x == 13:
            face = random_face()
            card = str(x) + face
            if card == '13D':
                diamond_kX = 295
                diamond_kY = 430
                screen.blit(diamond_k, (diamond_kX, diamond_kY))
            elif card == '13C':
                clover_kX = 295
                clover_kY = 430
                screen.blit(clover_k, (clover_kX, clover_kY))
            elif card == '13H':
                heart_kX = 295
                heart_kY = 430
                screen.blit(heart_k, (heart_kX, heart_kY))
            else:
                spade_kX = 295
                spade_kY = 430
                screen.blit(spade_k, (spade_kX, spade_kY))
        else:
            face = random_face()
            card = str(x) + face
            if card == '14D':
                diamond_aX = 295
                diamond_aY = 430
                screen.blit(diamond_a, (diamond_aX, diamond_aY))
            elif card == '14C':
                clover_aX = 295
                clover_aY = 430
                screen.blit(clover_a, (clover_aX, clover_aY))
            elif card == '14H':
                heart_aX = 295
                heart_aY = 430
                screen.blit(heart_a, (heart_aX, heart_aY))
            else:
                spade_aX = 295
                spade_aY = 430
                screen.blit(spade_a, (spade_aX, spade_aY))

    #while (total_num_p1 < limit) and (total_num_p2 < limit):
      #  s = input("Player1: Type 'HIT' to hit or 'PASS' to pass")
       # if s == 'HIT':
        #    total_num_p1 += random_card()
       # return (total_num_p1)
       # s2 = input("Player2: Type 'HIT' to hit or 'PASS' to pass")
       # if s2 == 'HIT':
       #     total_num_p2 += random_card()
       # return (total_num_p2)

       # if (total_num_p1 == 21) or ((total_num_p2 != 21) and total_num_p2 > 21):
       #     return ('Congrats Player1! You have won the game!')
       # elif (total_num_p2 == 21) or ((total_num_p1 != 21) and total_num_p1 > 21):
       #     return ('Congrats Player2! You have won the game!')

# jack image
def jack_img():
    jack = pygame.image.load('rsz_jack.png')
    jackX = 295
    jackY = 100
    screen.blit(jack, (jackX, jackY))

# game title
def display_title_text():
    title_font = pygame.font.Font('CARDC___.TTF', 64)
    title_text = title_font.render("Blackjack", True, (0, 0, 0))
    screen.blit(title_text, (202, 300))

# start button
def start_button():
    button = pygame.Rect(195, 400, 100, 50)
    pygame.draw.rect(screen, [0, 255, 0], button)
    button_font = pygame.font.Font('GOODDP__.TTF', 32)
    button_text = button_font.render("START!", True, (0, 0, 0))
    screen.blit(button_text, (205, 410))
    # NEED TO REWORK CLICKS SO IT NOTIFIES ONLY WHEN THE BUTTON IS PRESSED!
    clicked = pygame.mouse.get_pressed()
    if clicked[0] == 1:
        print('Clicked left button!')
    elif clicked[1] == 1:
        print('Clicked middle button!')
    elif clicked[-1] == 1:
        print('Clicked right button!')
    else:
        pass

# quit button
def quit_button():
    button = pygame.Rect(475, 400, 100, 50)
    pygame.draw.rect(screen, [255, 0 ,0], button)
    button_font = pygame.font.Font('GOODDP__.TTF', 32)
    button_text = button_font.render("QUIT!", True, (0, 0, 0))
    screen.blit(button_text, (500, 410))
    clicked = pygame.mouse.get_pressed()
    if clicked[0] == 1:
        print('Clicked left button!')
    elif clicked[1] == 1:
        print('Clicked middle button!')
    elif clicked[-1] == 1:
        print('Clicked right button!')
    else:
        pass

# game win text    
def display_gamewon_message():
    gamewon_font = pygame.font.Font('GOODDP__.TTF', 64)
    gamewon_text = gamewon_font.render("YOU WON!", True, (0, 0, 0))
    screen.blit(gamewon_text, (292, 300))

# gameover text
def display_gameover_message():
    gameover_font = pygame.font.Font('GOODDP__.TTF', 64)
    gameover_text = gameover_font.render("GAME OVER", True, (0, 0, 0))
    screen.blit(gameover_text, (292, 300))

# checks if the game is still running
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
    screen.fill((150, 173, 252))
    blackjack_game()
    icon()
    jack_img()
    display_title_text()
    quit_button()
    start_button()
    knight_img()
    player1_avatar()
    player2_avatar()
    player3_avatar()
    player4_avatar()
    chatbox_img()
    pygame.display.update()

这是我的代码,我只是有点我的游戏,我写的工作在终端,并已为我的标题屏幕的游戏按钮以及。我感到困惑的是,我如何将标题屏幕中的所有内容作为一个函数,而将游戏中的所有内容作为另一个函数,这样当用户按下开始按钮时,我就可以调用game_loop()函数,该函数将运行我的游戏并退出标题屏幕


Tags: imagepngloadbuttonrandomcardscreenpygame
1条回答
网友
1楼 · 发布于 2024-05-13 23:35:25

您必须添加一个游戏状态。这是一个变量,指示游戏处于何种状态

在globale名称空间(应用程序初始化部分的某处)中添加变量game_state

game_state = "start"

按下开始按钮后,更改变量的状态:
(记住使用^{} statement

def start_button():
    global game_state  

    button = pygame.Rect(195, 400, 100, 50)
    pygame.draw.rect(screen, [0, 255, 0], button)
    button_font = pygame.font.Font('GOODDP__.TTF', 32)
    button_text = button_font.render("START!", True, (0, 0, 0))
    screen.blit(button_text, (205, 410))
    # NEED TO REWORK CLICKS SO IT NOTIFIES ONLY WHEN THE BUTTON IS PRESSED!
    clicked = pygame.mouse.get_pressed()
    if clicked[0] == 1:
        game_state = "run"

在主应用程序循环中,您可以根据game_state执行不同的操作:

while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
    screen.fill((150, 173, 252))

    # draw all the things which are visible in both game_state 
    # [...]

    if game_state == "start":

        # draw startup screen
        # [...]

    elif game_state == "run"

        # draw game screen
        # [...]

    pygame.display.update()

通过这种设置,可以处理更多的状态,如信用卡或游戏结束

相关问题 更多 >