用python的pygame,但每次程序一运行,pygame window窗口能出现,但是下图这种状态。

有达人能告诉我这是什么原因以及解决方法么?我的python版本是2.7.3,pygame版本1.9.1可能我说的不太清楚。就是pygamewindow不会被黑色填充,直接... 有达人能告诉我这是什么原因以及解决方法么?我的python版本是2.7.3,pygame版本1.9.1
可能我说的不太清楚。就是pygame window不会被黑色填充,直接没有响应,然后窗口里没有内容,上图是它复制了背景的内容。就像快死机了一样。
展开
 我来答
我爸喜欢123
2019-10-05
知道答主
回答量:29
采纳率:0%
帮助的人:2.2万
展开全部
  1. event英文翻译是事件 get 获取  type是样式,类型的意思,所以他这个都是有规律的,但是有顺序事件在前,后面跟属性

  2. 同时也有父子(层级)关系

  3. event.get() 获取到的事件

  4. event.type() 事件类型

  5. event.key() 按键事件

  6. 一般都是写在while里面,因为这是个不断循环的过程,不然,只执行一便达不到实际要求,这是Pygame里面设定好的

这是贪吃蛇游戏的一段代码(一部分):

txt = font.render('GAME OVER', True, (255, 0, 0))
screen.blit(txt, (size[0]/6, size[1]*2/5-20))   # (0, 0)   (size[0]/6, size[1]*2/5)100号字中心位置

direction = 'right'    # 初始方向,向右
changeDirection = direction    # 定义一个改变方向的变量,按键

running = True
while Trunning:   
    for event in pygame.event.get():    # 从队列中获取事件        
        if event.type == QUIT:    # 判断事件类型是否为退出事件
            # pygame.quit()
            sys.exit()    
            
        elif event.type == KEYDOWN:    # 如果按键被按下(事件)
            
            if event.key == K_RIGHT or event.key == K_d: # 如果是右键头或者是d,蛇向右移动
                changeDirection = 'right'            
            if event.key == K_LEFT or event.key == K_a:  # 如果是左键头或者是a,蛇向左移动
                changeDirection = 'left'
            if event.key == K_UP or event.key == K_w:
                changeDirection = 'up'
            if event.key == K_DOWN or event.key == K_s:
                changeDirection = 'down'
            #这下面一行可以忽略,
            if event.key == K_ESCAPE:    # 对应键盘上的Esc键,表示退出
                pygame.event.post(pygame.event.Event(QUIT))
    # 绘制文本,刷新显示
    screen.blit(txt, (20, 10))
    screen.fill(blackColor)  #放在for语句一列,属于while的(子)层级,循环不断的刷新
yuuy小童鞋
2020-02-07
知道答主
回答量:4
采纳率:0%
帮助的人:2513
展开全部

import pygame,sys
from pygame.locals import *
pygame.init()
WINDOWWIDTH=480
WINDOWHEIGHT=700
caption_name='Hello Woad'
DISPLAYSURF=pygame.display.set_mode((WINDOWWIDTH,WINDOWHEIGHT))
pygame.display.set_caption(caption_name)
while True:
‍    DISPLAYSURF.fill((255,255,255))#初始化屏幕 白色
for event in pygame.event.get():
if event.type == QUIT:#退出检测
pygame.quit()
sys.exit()
pygame.display.update()#更新‍

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
TT_last
推荐于2017-09-23 · 超过10用户采纳过TA的回答
知道答主
回答量:27
采纳率:0%
帮助的人:26.7万
展开全部
你的while True: 里面没有写消息处理函数,一般while True:里面的内容大概是这样的:
def run(self):
self.screen.fill((255,255,255))
whileTrue:
# max fps limit
self.clock.tick(30)
for event in pygame.event.get():
if event.type== QUIT:
return
elif event.type== KEYDOWN:
pass
elif event.type== MOUSEBUTTONDOWN:
pass
elif event.type== MOUSEMOTION:
pass
elif event.type== MOUSEBUTTONUP:
pass
pygame.display.update()
对于消息处理,在pass那里,改成自己想要的函数就可以实现对应的功能了。
还有,你可以看看eyehere.net 上面的pygame教程。
追问
您能帮我看看这段么?我是初学者,正在看和孩子一起学python,下面是书上的例子。
import pygame,sys
pygame.init()
screen = pygame.display.set_mode([640,480])
screen.fill([255,255,255])
pygame.draw.circle(screen,[255,0,0],[100,100],30,0)
pygame.display.flip()
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
追答
你的程序我这里运行没有问题,你的pygame有和你的python版本对应么。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
用户协议书go
2019-07-15 · TA获得超过227个赞
知道答主
回答量:61
采纳率:100%
帮助的人:6.3万
展开全部
while True:
    for event in pygame.event.get():
        if event.type = = pygame.QUIT:
            pygame.quit()
               quit()
           
    # 屏幕填充在while循环下,而不在for循环下
    screen.fill((0, 0, 0))
    
    # 反转屏幕以展示最近一次的绘制,非常重要!
    pygame.display.flip()
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
古典风华梦dFU
2012-12-18 · TA获得超过445个赞
知道小有建树答主
回答量:421
采纳率:0%
帮助的人:212万
展开全部
你的while True没有处理,也没有main loop
进入了死循环,当然没有响应了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式