我的实例有问题';s函数不工作(Python3,Pygame),请检查我的代码?
我一直试图把我的主角变成一个我可以在游戏中调用的类。这是因为我知道在开发的后期,由于计划实施敌人和生成可升级的电源,它将变得更加复杂 出于某种原因,我的精灵将被绘制,但获取的方法使其检测到我的关键点,然后移动(getkey、animandmove)似乎不起作用,因为按下任何输入都不会移动它。请帮忙我的实例有问题';s函数不工作(Python3,Pygame),请检查我的代码?,python,class,pygame,Python,Class,Pygame,我一直试图把我的主角变成一个我可以在游戏中调用的类。这是因为我知道在开发的后期,由于计划实施敌人和生成可升级的电源,它将变得更加复杂 出于某种原因,我的精灵将被绘制,但获取的方法使其检测到我的关键点,然后移动(getkey、animandmove)似乎不起作用,因为按下任何输入都不会移动它。请帮忙 import pygame from pygame.locals import * import sys import pyganim # used for animations pygame.i
import pygame
from pygame.locals import *
import sys
import pyganim # used for animations
pygame.init()
pygame.mixer.init()
WINDOWWIDTH = 1600
WINDOWHEIGHT = 900
# x = 100
# y = 100
# vel = 10
# width = 64
# height = 64
# moveleft = moveright = moveup = movedown = False
# direction = 'left'
background = pygame.image.load('sprites/background1.png')
leftidle = pygame.image.load("sprites/left.png")
rightidle = pygame.image.load("sprites/right.png")
upidle = pygame.image.load("sprites/up.png")
downidle = pygame.image.load("sprites/down.png")
charanim = {"walkleft": pyganim.PygAnimation(
[("sprites/left2.png", 100), ("sprites/left.png", 100), ("sprites/left3.png", 100), ("sprites/left.png", 10)]),
"walkright": pyganim.PygAnimation(
[("sprites/right2.png", 100), ("sprites/right.png", 100), ("sprites/right3.png", 100),
("sprites/right.png", 10)]), "walkup": pyganim.PygAnimation(
[("sprites/up2.png", 100), ("sprites/up.png", 100), ("sprites/up3.png", 100), ("sprites/up.png", 10)]),
"walkdown": pyganim.PygAnimation(
[("sprites/down2.png", 100), ("sprites/down.png", 100), ("sprites/down3.png", 100), ("sprites/down.png", 10)])}
moveConductor = pyganim.PygConductor(charanim)
mainmenuanim = {"splashscreen": pyganim.PygAnimation([("sprites/splash1.png", 500), ("sprites/splash2.png", 500)])}
mainmenuConductor = pyganim.PygConductor(mainmenuanim)
muzzleflashanim = {"fire": pyganim.PygAnimation(
[("sprites/muzzleflash.png", 100), ("sprites/muzzleflash2.png", 100), ("sprites/muzzleflash3.png", 100),
("sprites/muzzleflash4.png", 100)])}
mainwin = pygame.display.set_mode((WINDOWWIDTH, WINDOWHEIGHT))
pygame.display.set_caption("2084 Ver 0.1.1.1")
def mainmenu():
global running
menulive = True
pygame.mixer.music.load('track0.ogg')
pygame.mixer.music.play(-1)
while menulive:
mainmenuConductor.play()
mainmenuanim["splashscreen"].blit(mainwin, (0, 0))
for event in pygame.event.get():
if event.type == KEYDOWN:
if event.key == K_RETURN:
pygame.mixer.music.stop()
mainloop()
if event.type == pygame.QUIT:
running = False
pygame.quit()
pygame.display.update()
def mainloop():
global running
running = True
char1 = Character()
pygame.mixer.music.load("track1.ogg")
pygame.mixer.music.play(-1)
char1.__init__()
while running:
mainwin.blit(background, (0, 0))
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
char1.getkey()
char1.animandmove()
pygame.display.update()
class Character:
def __init__(self):
self.x = 100
self.y = 100
self.vel = 10
self.width = 64
self.height = 64
self.moveleft = False
self.moveright = False
self.moveup = False
self.movedown = False
self.direction = 'left'
def animandmove(self):
if self.moveleft or self.moveright or self.moveup or self.movedown:
moveConductor.play()
# draws animations for each of the directions
if self.direction == "left":
charanim["walkleft"].blit(mainwin, (self.x, self.y))
elif self.direction == "right":
charanim["walkright"].blit(mainwin, (self.x, self.y))
elif self.direction == "up":
charanim["walkup"].blit(mainwin, (self.x, self.y))
elif self.direction == "down":
charanim["walkdown"].blit(mainwin, (self.x, self.y))
# moving the physicial character
if self.moveleft and self.x > 0:
self.x -= self.vel
if self.moveright and self.x < (WINDOWWIDTH - 64):
self.x += self.vel
if self.moveup and self.y > 0:
self.y -= self.vel
if self.movedown and self.y < (WINDOWHEIGHT - 64):
self.y += self.vel
else:
moveConductor.stop()
if self.direction == "left":
mainwin.blit(pygame.image.load("sprites/left.png"), (self.x, self.y))
elif self.direction == "right":
mainwin.blit(pygame.image.load("sprites/right.png"), (self.x, self.y))
elif self.direction == "up":
mainwin.blit(pygame.image.load("sprites/up.png"), (self.x, self.y))
elif self.direction == "down":
mainwin.blit(pygame.image.load("sprites/down.png"), (self.x, self.y))
def getkey(self):
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
elif event.type == KEYDOWN:
if event.key == K_ESCAPE:
pygame.quit()
sys.exit()
if event.key == K_LEFT or event.key == K_a:
self.moveleft = True
self.moveright = False
if not self.moveup and not self.movedown:
self.direction = "left"
elif event.key == K_RIGHT or event.key == K_d:
self.moveleft = False
self.moveright = True
if not self.moveup and not self.movedown:
self.direction = "right"
elif event.key == K_UP or event.key == K_w:
self.moveup = True
self.movedown = False
if not self.moveleft and not self.moveright:
self.direction = "up"
elif event.key == K_DOWN or event.key == K_s:
self.moveup = False
self.movedown = True
if not self.moveleft and not self.moveright:
self.direction = "down"
elif event.type == KEYUP:
if event.key == K_LEFT or event.key == K_a:
self.moveleft = False
if self.moveup:
self.direction = "up"
if self.movedown:
self.direction = "down"
elif event.key == K_RIGHT or event.key == K_d:
self.moveright = False
if self.moveup:
self.direction = "up"
if self.movedown:
self.direction = "down"
elif event.key == K_UP or event.key == K_w:
self.moveup = False
if self.moveleft:
self.direction = "left"
if self.moveright:
self.direction = "right"
elif event.key == K_DOWN or event.key == K_s:
self.movedown = False
if self.moveleft:
self.direction = "left"
if self.moveright:
self.direction = "right"
pygame.display.update()
mainmenu()
pygame.quit()
导入pygame
从pygame.locals导入*
导入系统
导入用于动画的pyganim
pygame.init()
pygame.mixer.init()
窗宽=1600
窗高=900
#x=100
#y=100
#水平=10
#宽度=64
#高度=64
#moveleft=moveright=moveup=movedown=False
#方向=‘左’
background=pygame.image.load('sprites/background1.png')
leftidle=pygame.image.load(“sprites/left.png”)
rightidle=pygame.image.load(“sprites/right.png”)
upidle=pygame.image.load(“sprites/up.png”)
downidle=pygame.image.load(“sprites/down.png”)
charanim={“walkleft”:pyganim.pyganization(
[((“sprites/left2.png”,100),(“sprites/left.png”,100),(“sprites/left3.png”,100),(“sprites/left.png”,10)],
“walkright”:pyganim.PygAnimation(
[((“sprites/right2.png”,100),(“sprites/right.png”,100),(“sprites/right3.png”,100),
(“sprites/right.png”,10)],“walkup”:pyganim.pyganization(
[((“sprites/up2.png”,100),(“sprites/up.png”,100),(“sprites/up3.png”,100),(“sprites/up.png”,10)],
“巡检”:pyganim.PygAnimation(
[((“sprites/down2.png”,100),(“sprites/down.png”,100),(“sprites/down3.png”,100),(“sprites/down.png”,10)])
moveConductor=pyganim.PygConductor(charanim)
mainmenuanim={“splashscreen”:pyganim.pyganization([((“sprites/splash1.png”,500),(“sprites/splash2.png”,500)])
mainmenuConductor=pyganim.PygConductor(mainmenuanim)
muzzleflashanim={“火”:pyganim.PygAnimation(
[((“sprites/muzzleflash.png”,100),(“sprites/muzzleflash2.png”,100),(“sprites/muzzleflash3.png”,100),
(“sprites/muzzleflash4.png”,100)])
mainwin=pygame.display.set_模式((窗口宽度、窗口高度))
pygame.display.set_标题(“2084版本0.1.1.1”)
def主菜单():
全球运行
menulive=True
pygame.mixer.music.load('track0.ogg')
pygame.mixer.music.play(-1)
虽然menulive:
mainmenuConductor.play()
mainmenuanim[“splashscreen”].blit(mainwin,(0,0))
对于pygame.event.get()中的事件:
如果event.type==KEYDOWN:
如果event.key==K_返回:
pygame.mixer.music.stop()
mainloop()
如果event.type==pygame.QUIT:
运行=错误
pygame.quit()
pygame.display.update()
def mainloop():
全球运行
运行=真
char1=字符()
pygame.mixer.music.load(“track1.ogg”)
pygame.mixer.music.play(-1)
char1.\uuuuu init\uuuuuuuu()
运行时:
mainwin.blit(背景,(0,0))
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
pygame.quit()
char1.getkey()
char1.animandmove()
pygame.display.update()
类别字符:
定义初始化(自):
self.x=100
self.y=100
self.vel=10
self.width=64
self.height=64
self.moveleft=False
self.moveright=False
self.moveup=False
self.movedown=False
self.direction='left'
def animandmove(自身):
如果self.moveleft或self.moveright或self.moveup或self.movedown:
移动指挥。播放()
#为每个方向绘制动画
如果self.direction==“left”:
charanim[“walkleft”].blit(mainwin,(self.x,self.y))
elif self.direction==“right”:
charanim[“walkright”].blit(mainwin,(self.x,self.y))
elif self.direction==“向上”:
charanim[“walkup”].blit(mainwin,(self.x,self.y))
elif self.direction==“向下”:
charanim[“walkdown”].blit(mainwin,(self.x,self.y))
#移动身体特征
如果self.moveleft和self.x>0:
self.x-=self.vel
如果self.moveright和self.x<(窗口宽度-64):
self.x+=self.vel
如果self.moveup和self.y>0:
self.y-=self.vel
如果self.movedown和self.y<(窗口高度-64):
self.y+=self.vel
其他:
moveConductor.stop()
如果self.direction==“left”:
blit(pygame.image.load(“sprites/left.png”),(self.x,self.y))
elif self.direction==“right”:
blit(pygame.image.load(“sprites/right.png”),(self.x,self.y))
elif self.direction==“向上”:
blit(pygame.image.load(“sprites/up.png”),(self.x,self.y))
elif self.direction==“向下”:
blit(pygame.image.load(“sprites/down.png”),(self.x,self.y))
def getkey(自):
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
pygame.quit()
elif event.type==KEYDOWN:
如果event.key==K_转义:
pygame.quit()
sys.exit()
如果event.key==K_LEFT或event.key==K_a:
self.moveleft=True
self.moveright=False
如果不是self.moveup和self.movedown:
self.direction=“左”
elif event.key==K_RIGHT或event.key==K_d:
self.moveleft=False
self.moveright=True
如果不是self.moveup和self.movedown:
self.direction=“right”
elif event.key==K\u UP或event.key==K\u w:
self.moveup=True
self.movedown=False
如果不是self.moveleft和非self.moveright:
self.direction=“向上”
elif event.key==K_DOWN或event.key==K_s:
self.moveup=False
self.movedown=True
如果不是self.moveleft和非self.moveright:
while running:
mainwin.blit(background, (0, 0))
for event in pygame.event.get():
char1.getkey(event)
if event.type == pygame.QUIT:
pygame.quit()
char1.animandmove()
pygame.display.update()
def getkey(self, event):
if event.type == ...
...