簡體   English   中英

為什么在運行我的代碼時Pygame會顯示黑屏?

[英]Why Does Pygame Display A Black Screen When Running My Code?

我目前正在研究《使用Python和Pygame進行入門游戲開發》一書,從該書復制的代碼無法正常運行。 而是出現了一個黑色的pygame窗口屏幕。 任何人都可以在下面的代碼中指出錯誤或錯誤嗎?

import pygame  
from pygame.locals import *  
from sys import exit  
pygame.init()

screen = pygame.display.set_mode((640,480),0,32)     

def create_scales(height):  
    red_scale_surface = pygame.surface.Surface((640,height))  
    blue_scale_surface = pygame.surface.Surface((640,height))  
    green_scale_surface = pygame.surface.Surface((640,height))  
    for x in range(640):  
        c = int((x/639.)*255.)  
        red = (c,0,0)  
        green = (0,c,0)  
        blue = (0,0,c)  
        line_rect = Rect(x,0,1,height)  
        pygame.draw.rect(red_scale_surface,red,line_rect)
        pygame.draw.rect(green_scale_surface,green,line_rect)
        pygame.draw.rect(blue_scale_surface,blue,line_rect)  
    return red_scale_surface, green_scale_surface, blue_scale_surface  
    red_scale, green_scale, blue_scale = create_scales(80)

    color = [127,127,127]

    while True:

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

        screen.fill((0,0,0))

        #Draw the scales to the screen
        screen.blit(red_scale,(0,00))
        screen.blit(green_scale,(0,80))
        screen.blit(blue_scale,(0,160))

        x, y = pygame.mouse.get_pos()

        #If the mouse was pressed on one of the sliders, adjust the color component
        if pygame.mouse.get_pressed()[0]:
            for component in range(3):
                if y > component * 80 and y < (component + 1)* 80:
                    color[component] = int((x/639.)*255.)
                pygame.display.set_caption("PyGame Color Test - "+str(tuple(color)))

       #Draw a circle for each slider to represent the current setting
        for component in range(3):
           pos = (int((color[component]/255.)*639), component*80+40)
           pygame.draw.circle(screen,(255,255,255),pos,20)

        pygame.draw.rect(screen,tuple(color),(0,240,640,240))

        pygame.display.update()

def main():
    create_scales(555)

main()

第一個for循環之后的return似乎是罪魁禍首。 您可以注釋掉並重試嗎?

我認為代碼應如下所示:

import pygame  
from pygame.locals import *  
from sys import exit  
pygame.init()

screen = pygame.display.set_mode((640,480),0,32)     

def create_scales(height):  
    red_scale_surface = pygame.surface.Surface((640,height))  
    blue_scale_surface = pygame.surface.Surface((640,height))  
    green_scale_surface = pygame.surface.Surface((640,height))  
    for x in range(640):  
        c = int((x/639.)*255.)  
        red = (c,0,0)  
        green = (0,c,0)  
        blue = (0,0,c)  
        line_rect = Rect(x,0,1,height)  
        pygame.draw.rect(red_scale_surface,red,line_rect)
        pygame.draw.rect(green_scale_surface,green,line_rect)
        pygame.draw.rect(blue_scale_surface,blue,line_rect)  
    return red_scale_surface, green_scale_surface, blue_scale_surface  

red_scale, green_scale, blue_scale = create_scales(80)
color = [127,127,127]

while True:
    for event in pygame.event.get():
        if event.type == QUIT:
            exit()

    screen.fill((0,0,0))

    #Draw the scales to the screen
    screen.blit(red_scale,(0,00))
    screen.blit(green_scale,(0,80))
    screen.blit(blue_scale,(0,160))

    x, y = pygame.mouse.get_pos()

    #If the mouse was pressed on one of the sliders, adjust the color component
    if pygame.mouse.get_pressed()[0]:
        for component in range(3):
            if y > component * 80 and y < (component + 1)* 80:
                color[component] = int((x/639.)*255.)
            pygame.display.set_caption("PyGame Color Test - "+str(tuple(color)))

    #Draw a circle for each slider to represent the current setting
    for component in range(3):
        pos = (int((color[component]/255.)*639), component*80+40)
        pygame.draw.circle(screen,(255,255,255),pos,20)

    pygame.draw.rect(screen,tuple(color),(0,240,640,240))
    pygame.display.update()


# def main():
#     create_scales(555)

# main()

我已經注釋了調用main()的行,因為我認為您的代碼不需要它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM