问题描述
我的 pygame 游戏有问题。当玩家移动时,我制作了一个玩家动画。我还添加了一个项目符号。我的问题是,在我使用我的子弹后,我的播放器和子弹闪烁。当我只在最后更新显示时,您看不到项目符号。多次更新带来播放器和子弹闪烁的问题。请帮助我。谢谢
import random
import pygame
# Intialize the pygame
pygame.init()
# create the screen
screen = pygame.display.set_mode((640,360))
# Background
background = pygame.image.load('SSF2_Final_Valley.png')
walkRight = [pygame.image.load('R1a.png'),pygame.image.load('R2a.png'),pygame.image.load('R3a.png'),pygame.image.load('R4a.png'),pygame.image.load('R5a.png'),pygame.image.load('R6a.png'),pygame.image.load('R7a.png'),pygame.image.load('R8a.png'),pygame.image.load('R9a.png')]
walkLeft = [pygame.image.load('L1a.png'),pygame.image.load('L2a.png'),pygame.image.load('L3a.png'),pygame.image.load('L4a.png'),pygame.image.load('L5a.png'),pygame.image.load('L6a.png'),pygame.image.load('L7a.png'),pygame.image.load('L8a.png'),pygame.image.load('L9a.png')]
char = pygame.image.load('stand.png')
vel = 5
width = 64
screen_width = 640
left = False
right = False
clockobject = pygame.time.Clock()
#player
playerImg = pygame.image.load('stand.png')
playerX = 15
playerY = 290
playerX_change = 0
# Bullet
# Ready - You can't see the bullet on the screen
# Fire - The bullet is currently moving
bulletImg = pygame.image.load('kunai.png')
bulletX = 15
bulletY = 290 - 32
bulletX_change = 3
bulletY_change = 0
bullet_state = "ready"
def redrawGameWindow():
global player
def player(x,y):
global walkCount
screen.blit(background,(0,0))
#chracter wird gezecihnet
if walkCount + 1 >= 20:
walkCount = 0
if left:
screen.blit(walkLeft[walkCount//3],(x,y))
walkCount += 1
elif right:
screen.blit(walkRight[walkCount//3],y))
walkCount += 1
else:
screen.blit(char,y))
pygame.display.update()
global fire_bullet
def fire_bullet(x,y):
global bullet_state
bullet_state = "fire"
screen.blit(bulletImg,(x + 32,y + 32))
pygame.display.update()
#pygame.display.update()
running = True
while running:
# RGB = Red,Green,Blue
screen.fill((0,0))
# Background Image
screen.blit(background,0))
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
pygame.quit()
exit()
# if keystroke is pressed check whether its right or left
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_SPACE:
if bullet_state is "ready":
# Get the current x cordinate of the spaceship
bulletX = playerX
fire_bullet(bulletX,bulletY)
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT] and playerX > vel:
playerX -= vel
left = True
right = False
elif keys[pygame.K_RIGHT] and playerX < screen_width- width :
playerX += vel
right = True
left = False
else:
right = False
left = False
walkCount = 0
# 5 = 5 + -0.1 -> 5 = 5 - 0.1
# 5 = 5 + 0.1
# Bullet Movement
if bulletX <= 0:
bulletX = 15
bullet_state = "ready"
if bullet_state is "fire":
fire_bullet(bulletX,bulletY)
bulletX += bulletX_change
if (bulletX > screen_width-width):
bullet_state = "ready"
redrawGameWindow()
player(playerX,playerY)
pygame.display.update()
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)