[英]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.