Python Blitting无法正常工作?

时间:2014-01-31 19:04:52

标签: python pygame blit

我正在用python和pygame写一个游戏,我试图创建一个主菜单,但我的标签不会显示????,我也得到这个错误:第22行,在x,y = pygame.mouse .get_pos() 错误:视频系统未初始化????我不明白这里发生了什么,因为我对python很新,我的代码是:

bif="menubg.jpg"
load_check_x = "null"
load_check_y = "null"
import pygame, sys
from pygame.locals import *
x = 0
y = 0


pygame.init()
screen=pygame.display.set_mode((640,360),0,32)
background=pygame.image.load(bif).convert()
pygame.display.set_caption("Some random Title")
pygame.display.flip()
#screen.fill((0,0,0))

while True:
    evc = pygame.event.get()
    for event in evc:
        if event.type == pygame.QUIT:
            pygame.quit()       
x,y = pygame.mouse.get_pos()
#Setup mouse pos!!!
if x >= 340 and x <= 465:
    load_check_x = "True"
if x < 340 or x > 465:
    load_check_x = "False"

if y >= 425 and y <= 445:
    load_check_y = "True"
if y < 425 or y > 445:
    load_check_y = "False"

if load_check_x == "True" and load_check_y == "True":
   for event in evc:
       if event.type ==pygame.MOUSEBUTTONUP:
           clear()
labelfont = pygame.font.SysFont("Comic Sans MS", 12)
new_text = labelfont.render('Play!!!!', 1, (255, 255, 255))
screen.blit(new_text, (340, 425))

有人帮助我!!!

1 个答案:

答案 0 :(得分:0)

看来你的缩进是错误的。 python解释器如何知道if语句体何时结束?它会查看制表符或空格的数量,以查看其后的代码是否属于正文。

如果查看代码,您将看到有一些代码用于初始化,然后是while循环,其中有另一个循环处理您的事件。之后你会有一些代码来检查鼠标等。

如您所见,事件循环之后的所有代码都不属于while循环,它应该是。除此之外,您可以通过创建一个新的矩形并检查您点击的点是否位于矩形内来替换所有if条件。

my_rect = pygame.Rect((340,425),(125,20))
while True:
    evc = pygame.event.get()
    for event in evc:
        if event.type == pygame.QUIT:
            pygame.quit()       
    x,y = pygame.mouse.get_pos()
    #Setup mouse pos!!!
    if my_rect.collidepoint(x,y):
       for event in evc:
           if event.type ==pygame.MOUSEBUTTONUP:
               clear()
    labelfont = pygame.font.SysFont("Comic Sans MS", 12)
    new_text = labelfont.render('Play!!!!', 1, (255, 255, 255))
    screen.blit(new_text, (340, 425))