模块“pygame"没有“退出"成员 [英] Module 'pygame' has no 'QUIT' member

查看:91
本文介绍了模块“pygame"没有“退出"成员的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试在 pygame 中创建一个横版卷轴游戏,当它应该让玩家精灵穿过屏幕并随着时间的推移提高速度时,它只会使黑屏.

I'm trying to create a sidescroller game in pygame and it just makes a black screen when it should make a player sprite walking across a screen which increases speed as time goes along.

当我在 vscode 中调试时,它出现 E1101:Module 'pygame' has no 'QUIT' member.

When I debug in vscode it comes up with E1101:Module 'pygame' has no 'QUIT' member.

QUIT 似乎在 event.get 模块中,所以我不知道为什么会发生这种情况

QUIT seems to be in the event.get module so I don't know why this is happening

我正在关注 https 中的代码://www.youtube.com/watch?v=PjgLeP0G5Yw&index=1&list=PLzMcBGfZo4-nh5Txa7ypUiv_4EVq4dgKc

import pygame
from pygame.locals import *
import os
import sys
import math

pygame.init()

W, H = 800, 447
win = pygame.display.set_mode((W,H))
pygame.display.set_caption('Side Scroller')

bg = pygame.image.load(os.path.join('images','bg.png')).convert()
bgX = 0
bgX2 = bg.get_width()

clock = pygame.time.Clock()

class player(object):
    run = [pygame.image.load(os.path.join('images', str(x) + '.png')) for x in range(8,16)]
    jump = [pygame.image.load(os.path.join('images', str(x) + '.png')) for x in range(1,8)]
    slide = [pygame.image.load(os.path.join('images', 'S1.png')),pygame.image.load(os.path.join('images', 'S2.png')),pygame.image.load(os.path.join('images', 'S2.png')),pygame.image.load(os.path.join('images', 'S2.png')), pygame.image.load(os.path.join('images', 'S2.png')),pygame.image.load(os.path.join('images', 'S2.png')), pygame.image.load(os.path.join('images', 'S2.png')), pygame.image.load(os.path.join('images', 'S2.png')), pygame.image.load(os.path.join('images', 'S3.png')), pygame.image.load(os.path.join('images', 'S4.png')), pygame.image.load(os.path.join('images', 'S5.png'))]
    jumpList = [1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4]
    def __init__(self, x, y, width, height):
        self.x = x
        self.y = y
        self.width = width
        self.height = height
        self.jumping = False
        self.sliding = False
        self.slideCount = 0
        self.jumpCount = 0
        self.runCount = 0
        self.slideUp = False

    def draw(self, win):
        if self.jumping:
            self.y -= self.jumpList[self.jumpCount] * 1.2
            win.blit(self.jump[self.jumpCount//18], (self.x,self.y))
            self.jumpCount += 1
            if self.jumpCount > 108:
                self.jumpCount = 0
                self.jumping = False
                self.runCount = 0
        elif self.sliding or self.slideUp:
            if self.slideCount < 20:
                self.y += 1
            elif self.slideCount == 80:
                self.y -= 19
                self.sliding = False
                self.slideUp = True
            if self.slideCount >= 110:
                self.slideCount = 0
                self.slideUp = False
                self.runCount = 0
            win.blit(self.slide[self.slideCount//10], (self.x,self.y))
            self.slideCount += 1

        else:
            if self.runCount > 42:
                self.runCount = 0
            win.blit(self.run[self.runCount//6], (self.x,self.y))
            self.runCount += 1

def redrawWindow():
    win.blit(bg,(bgX,0)) #pastes background onto 0,0
    win.blit(bg, (bgX2,0)) #pastes background onto width,0
    #runner.draw(win)
    pygame.display.update

runner = player(200,313,64,64)
pygame.time.set_timer(USEREVENT+1,500) #sets userevent to be true every half a second
speed = 30
run = True
while run:
    redrawWindow()

    bgX -= 1.4
    bgX2 -= 1.4
    if bgX < bg.get_width() * -1:
        bgX = bg.get_width()
    if bgX2 < bg.get_width() * -1:
        bgX2 = bg.get_width()
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False
            pygame.quit()
            quit()
        if event.type == USEREVENT+1:
            speed +=1

    clock.tick(speed)

推荐答案

正如@PRMoureu 所说,您直接从 pygame.locals 导入了所有内容(包括 QUIT),因此您在它之前不需要命名空间.

As @PRMoureu said, you imported everything (including QUIT) from pygame.locals directly, so you don't need a namespace before it.

if event.type == QUIT

这篇关于模块“pygame"没有“退出"成员的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆