[英]Why Does Pygame Display A Black Screen When Running My Code?
I'm currently working through my Beggining Game Development With Python And Pygame book and the code that I copied from the book won't run properly. 我目前正在研究《使用Python和Pygame进行入门游戏开发》一书,从该书复制的代码无法正常运行。 A black pygame window screen comes up instead.
而是出现了一个黑色的pygame窗口屏幕。 Can anyone point out the errors or mistakes in my code below?
任何人都可以在下面的代码中指出错误或错误吗?
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()
The return
after the first for
loop seems to be the culprit. 第一个
for
循环之后的return
似乎是罪魁祸首。 Can you comment it out and try again? 您可以注释掉并重试吗?
Here's how the code should look in my opinion: 我认为代码应如下所示:
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()
I have commented the lines calling main() since I don't think they are needed for your code to work. 我已经注释了调用main()的行,因为我认为您的代码不需要它们。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.