Python 如何在这个PyGame代码中找到逻辑错误?

Python 如何在这个PyGame代码中找到逻辑错误?,python,python-3.x,oop,pygame,Python,Python 3.x,Oop,Pygame,这是我目前正在为一个项目开发的游戏的早期原型。然而,我似乎遇到了一个障碍,玩家角色无法显示,正如你在我为玩家创建了一个类的代码中看到的那样 导入pygame pygame.init() win=pygame.display.set_模式((500480))#初始化游戏窗口 pygame.display.set_标题(“Hello world”) bg=pygame.image.load('bg.jpg') #球员级别 职业球员: 定义初始化(self,x,y): self.x=x self.y=

这是我目前正在为一个项目开发的游戏的早期原型。然而,我似乎遇到了一个障碍,玩家角色无法显示,正如你在我为玩家创建了一个类的代码中看到的那样

导入pygame
pygame.init()
win=pygame.display.set_模式((500480))#初始化游戏窗口
pygame.display.set_标题(“Hello world”)
bg=pygame.image.load('bg.jpg')
#球员级别
职业球员:
定义初始化(self,x,y):
self.x=x
self.y=y
self.width=64
self.height=64
自立
self.left=False
self.right=True
self.vel=5
自我跳跃=错误
self.jumpCount=10
def移动(自身、x、y):
self.k=pygame.key.get_pressed()
如果self.k[pygame.k_LEFT]和self.x>0+self.vel+self.width:
左=真
右=假
自立
self.x-=vel
elif self.k[pygame.k_RIGHT]和self.x<500-self.vel-self.width:
self.right=True
self.left=False
自立
self.x+=vel
其他:
自立
if self.jumping:#检查用户是否跳跃初始化跳跃
如果self.k[pygame.k_空间]:
如果self.jumpCount>=-10:
负=1
如果self.JumpCount<0:
负=-1
自身y-=(跳线计数**2)*0.5*neg
self.jumpCount-=1
其他:
自我跳跃=错误
self.jumpCount=10
def抽签(自我、获胜、移动):
wLeft=pygame.image.load('runningleft.png')
wRight=pygame.image.load('running.png')
char=pygame.image.load('idleright.png')
如果不是(自立):
如果self.left:
win.blit(wleft,(self.x,self.y))
elif self.right:
win.blit(wright,(self.x,self.y))
其他:
win.blit(char,(self.x,self.y))
pygame.display.update()
pygame.display.update()
向导=播放器(50450)
运行=真
运行时:#主游戏循环
对于pygame.event.get()中的事件:#循环浏览键盘或鼠标事件列表
如果event.type==pygame.QUIT:
运行=错误
wizard.move(wizard.x、wizard.y)
wizard.draw(赢)
温·布利特(背景,(0,0))
pygame.display.update()
pygame.quit()

背景显示在游戏主窗口中,而角色不显示。如前所述,我试图将项目转换为OOP,这是我的代码停止的地方。如何诊断代码中的问题?

您的指令顺序错误。在绘制背景之后和更新显示之前,需要绘制播放器(
向导
):

  • win.blit(bg,(0,0))
  • wizard.draw(赢)
  • pygame.display.update()
  • wizard=player(50450)
    #主游戏循环
    运行=真
    运行时:
    对于pygame.event.get()中的事件:
    如果event.type==pygame.QUIT:
    运行=错误
    wizard.move(wizard.x、wizard.y)
    温·布利特(背景,(0,0))
    wizard.draw(赢)
    pygame.display.update()
    

    循环结束时只需更新一次显示就足够了,因此从
    player.draw
    中删除
    pygame.display.update()
    。显示器的多次更新会导致闪烁。请参见

    您的说明顺序错误。在绘制背景之后和更新显示之前,需要绘制播放器(
    向导
    ):

  • win.blit(bg,(0,0))
  • wizard.draw(赢)
  • pygame.display.update()
  • wizard=player(50450)
    #主游戏循环
    运行=真
    运行时:
    对于pygame.event.get()中的事件:
    如果event.type==pygame.QUIT:
    运行=错误
    wizard.move(wizard.x、wizard.y)
    温·布利特(背景,(0,0))
    wizard.draw(赢)
    pygame.display.update()
    

    循环结束时只需更新一次显示就足够了,因此从
    player.draw
    中删除
    pygame.display.update()
    。显示器的多次更新会导致闪烁。请参见

    当我复制您的代码时,我得到一个错误,即
    向导。draw(win)
    缺少必需的参数
    move
    。通过此方法,
    def draw(self、win、move):
    。也许你可以把整个代码,连同所有的
    jpg
    放在一个投递箱里或者什么的?请阅读。当我复制您的代码时,我得到一个错误,即
    向导.draw(win)
    缺少必需的参数
    move
    。通过此方法,
    def draw(self、win、move):
    。也许你可以把整个代码,连同所有的
    jpg
    放在一个投递箱里或者什么的?请阅读。及