Python 图片不更新游戏
我正在尝试更新箭头键,使其看起来像被按下一样。然而,它们似乎不会在单击时更新,相反,屏幕会闪烁,但实际上没有任何变化。我对使用Pygame用python编程比较陌生,不知道如何解决这个问题。 这是我用来检查是否单击的函数:Python 图片不更新游戏,python,pygame,Python,Pygame,我正在尝试更新箭头键,使其看起来像被按下一样。然而,它们似乎不会在单击时更新,相反,屏幕会闪烁,但实际上没有任何变化。我对使用Pygame用python编程比较陌生,不知道如何解决这个问题。 这是我用来检查是否单击的函数: import pygame class Button(): def __init__(self, x, y, xSize, ySize): self.x = x self.y = y self.xSize = xSiz
import pygame
class Button():
def __init__(self, x, y, xSize, ySize):
self.x = x
self.y = y
self.xSize = xSize
self.ySize = ySize
def checkClicked(self):
if pygame.mouse.get_pressed()[0]:
x, y = pygame.mouse.get_pos()
if y > self.y and y < self.y + self.ySize and x > self.x and x <
self.x + self.xSize:
print('Clicked')
return True
return False
这是根据用户按键输入或按下屏幕上的按钮移动的对象:
class Player(object):
def __init__(self, x, y, filename, width, height):
self.x = x
self.y = y
self.width = width
self.height = height
self.image = pygame.transform.scale(pygame.image.load(filename),
(self.width, self.height))
这是一个事件,用于检查用户是否已单击它们或按下箭头键以触发图像更改:
def moveEvent(self, event):
if event.type == pygame.MOUSEBUTTONDOWN:
if event.button == 1:
if leftObject.checkClicked():
leftArrow =
pygame.transform.scale(pygame.image.load('leftarrowdown.png'), (68, 78))
pygame.display.update()
self.x -= 25
if rightObject.checkClicked():
rightArrow =
pygame.transform.scale(pygame.image.load('rightarrowdown.png'), (70, 81))
pygame.display.update()
self.x += 25
if upObject.checkClicked():
upArrow =
pygame.transform.scale(pygame.image.load('uparrowdown.png'), (70, 80))
pygame.display.update()
self.y -= 25
if downObject.checkClicked():
downArrow =
pygame.transform.scale(pygame.image.load('downarrowdown.png'), (70, 82))
pygame.display.update()
self.y += 25
elif event.type == pygame.MOUSEBUTTONUP:
if event.button == 1:
# Left
leftArrow =
pygame.transform.scale(pygame.image.load('leftarrow.png'), (68, 78))
pygame.display.update()
# Right
rightArrow =
pygame.transform.scale(pygame.image.load('rightarrow.png'), (70, 81))
pygame.display.update()
# Up
upArrow =
pygame.transform.scale(pygame.image.load('uparrow.png'), (70, 80))
pygame.display.update()
# Down
downArrow =
pygame.transform.scale(pygame.image.load('downarrow.png'), (70, 82))
pygame.display.update()
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
leftArrow =
pygame.transform.scale(pygame.image.load('leftarrowdown.png'), (68, 78))
self.x -= 25
if event.key == pygame.K_RIGHT:
rightArrow =
pygame.transform.scale(pygame.image.load('rightarrowdown.png'), (70, 81))
self.x += 25
if event.key == pygame.K_UP:
upArrow =
pygame.transform.scale(pygame.image.load('uparrowdown.png'), (70, 80))
self.y -= 25
if event.key == pygame.K_DOWN:
downArrow =
pygame.transform.scale(pygame.image.load('downarrowdown.png'), (70, 82))
self.y += 25
elif event.type == pygame.KEYUP:
if event.key == pygame.K_LEFT:
leftArrow =
pygame.transform.scale(pygame.image.load('leftarrow.png'), (68, 78))
pygame.display.update()
if event.key == pygame.K_RIGHT:
rightArrow =
pygame.transform.scale(pygame.image.load('rightarrow.png'), (70, 81))
pygame.display.update()
if event.key == pygame.K_UP:
upArrow =
pygame.transform.scale(pygame.image.load('uparrow.png'), (70, 80))
pygame.display.update()
if event.key == pygame.K_DOWN:
downArrow =
pygame.transform.scale(pygame.image.load('downarrow.png'), (70, 82))
pygame.display.update()
def draw(self, screen):
screen.blit(self.image, (self.x, self.y))
图像最初会在游戏本身的“游戏/跑步”部分中显示在屏幕上:
class Game(object):
def __init__(self):
self.screensize = [1000, 1000]
self.white = [255, 255, 255]
self.black = [0, 0, 0]
self.screen = pygame.display.set_mode(self.screensize)
#self.bunny = pygame.transform.scale(pygame.image.load('bunny.png'),
(150, 200))
self.clock = pygame.time.Clock()
self.player = Player(50, 350, 'bunny.png', 150, 200)
def Run(self):
run = True
while run:
self.clock.tick(60)
self.screen.fill(self.white)
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
pygame.quit()
exit()
elif event.type == pygame.K_ESCAPE:
run = False
pygame.quit()
exit()
# - Objects Event Handle -
self.player.moveEvent(event)
# - Draws -
self.player.draw(self.screen)
self.screen.blit(leftArrow, (765, 800))
self.screen.blit(rightArrow, (910, 800))
self.screen.blit(upArrow, (835, 725))
self.screen.blit(downArrow, (835, 800))
pygame.display.flip()
game = Game()
game.Run()
任何帮助或方法/建议,以简化这将不胜感激 station
在方法moveEvent
的范围内设置局部变量leftArrow
使用该语句将变量解释为全局变量 进一步注意,所有
moveEvent
中的语句是多余的,同时更新会导致闪烁。主循环末尾的单个
pygame.display.flip()
语句就足够了。从方法moveEvent
中删除所有调用的pygame.display.update()
e、 g
def moveEvent(self,event):
全局左箭头、右箭头、向上箭头、向下箭头#
class Game(object):
def __init__(self):
self.screensize = [1000, 1000]
self.white = [255, 255, 255]
self.black = [0, 0, 0]
self.screen = pygame.display.set_mode(self.screensize)
#self.bunny = pygame.transform.scale(pygame.image.load('bunny.png'),
(150, 200))
self.clock = pygame.time.Clock()
self.player = Player(50, 350, 'bunny.png', 150, 200)
def Run(self):
run = True
while run:
self.clock.tick(60)
self.screen.fill(self.white)
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
pygame.quit()
exit()
elif event.type == pygame.K_ESCAPE:
run = False
pygame.quit()
exit()
# - Objects Event Handle -
self.player.moveEvent(event)
# - Draws -
self.player.draw(self.screen)
self.screen.blit(leftArrow, (765, 800))
self.screen.blit(rightArrow, (910, 800))
self.screen.blit(upArrow, (835, 725))
self.screen.blit(downArrow, (835, 800))
pygame.display.flip()
game = Game()
game.Run()
leftArrow = pygame.transform.scale(pygame.image.load('leftarrowdown.png'), (68, 78))
pygame.display.update()