【发布时间】:2019-10-26 09:18:45
【问题描述】:
这是我目前正在为一个项目开发的游戏的早期原型。但是,我似乎遇到了无法显示玩家角色的障碍,正如您在我为玩家创建的类的代码中看到的那样
import pygame
pygame.init()
win = pygame.display.set_mode((500,480))#initialises the game window
pygame.display.set_caption("Hello world")
bg = pygame.image.load('bg.jpg')
#player class
class player:
def __init__(self,x,y):
self.x = x
self.y = y
self.width = 64
self.height = 64
self.standing = True
self.left = False
self.right = True
self.vel = 5
self.jumping = False
self.jumpCount = 10
def move(self,x,y):
self.k = pygame.key.get_pressed()
if self.k[pygame.K_LEFT] and self.x > 0 + self.vel + self.width:
left = True
right = False
self.standing = False
self.x -= vel
elif self.k[pygame.K_RIGHT] and self.x < 500-self.vel-self.width:
self.right = True
self.left = False
self.standing = False
self.x += vel
else:
self.standing = True
if self.jumping:#checks if users jumping intiating jump
if self.k[pygame.K_SPACE]:
if self.jumpCount >= -10:
neg = 1
if self.JumpCount < 0:
neg = -1
self.y -= (jumpCount ** 2) * 0.5 * neg
self.jumpCount -= 1
else:
self.jumping = False
self.jumpCount = 10
def draw(self,win,move):
wLeft = pygame.image.load('runningleft.png')
wRight = pygame.image.load('running.png')
char = pygame.image.load('idleright.png')
if not(self.standing):
if self.left:
win.blit(wleft,(self.x,self.y))
elif self.right:
win.blit(wright,(self.x,self.y))
else:
win.blit(char,(self.x,self.y))
pygame.display.update()
pygame.display.update()
wizard = player(50,450)
run = True
while run:#main game loop
for event in pygame.event.get():#loops through a list of keyboard or mouse events
if event.type == pygame.QUIT:
run = False
wizard.move(wizard.x,wizard.y)
wizard.draw(win)
win.blit(bg,(0,0))
pygame.display.update()
pygame.quit()
背景会显示在游戏主窗口中,而角色则不会。如前所述,我试图将项目转换为 OOP,这是我的代码停止的地方。如何诊断代码中的问题?
【问题讨论】:
-
当我复制您的代码时,我收到一个错误,指出
wizard.draw(win)缺少所需的参数move。通过这种方法,def draw(self,win,move):。也许您可以发布整个代码,将所有jpg放在一个保管箱中或其他什么地方?
标签: python python-3.x oop pygame