黑屏pygame:(((

时间:2020-11-08 12:11:32

标签: python pygame

我目前正在关注youtube上的侧滚式教程,该教程提供了入门文件。对于Youtuber,所有的精灵都显示在窗口上,但是当我运行文件时,它将显示一个空白屏幕。有人可以帮我吗? 这是启动文件的代码:

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

我没有做任何更改,我已经将所有sprites与实际代码保存在同一目录中。

1 个答案:

答案 0 :(得分:1)

我相信答案在于以下事实:1)您没有任何while循环可以捕获玩家输入,而2)您从未创建类对象。