有人可以告诉我为什么上下箭头键不会移动我的图像?我正在使用Python 3和Pygame 1.91。没有错误。只是失望。相关部分是第65-115行(显示功能的开始到Move_Paddle功能的结束)。
import pygame
import time
import sys
from pygame.locals import *
pygame.init()
display_width = 800
display_height = 600
black = (0, 0, 0) #Colors
white = (255, 255, 255)
pygame.display.set_caption('Pong') #Title
clock = pygame.time.Clock() #Clock
gameDisplay = pygame.display.set_mode((display_width,display_height)) #Defines "window" and width/height variables
BallImg = pygame.image.load('C:\Python\Programs\Pong\Ball.png')
Paddle_PlayerImg = pygame.image.load('C:\Python\Programs\Pong\Paddle.png')
Paddle_CompImg = pygame.image.load('C:\Python\Programs\Pong\Paddle1.png')
def Ball(BLx,BLy):
gameDisplay.blit(BallImg,(BLx ,BLy ))
def Paddle_Player(PPx,PPy):
gameDisplay.blit(Paddle_PlayerImg, (display_width * 0.725 ,display_height * .166 ))
def Paddle_Comp(PCx,PCy):
gameDisplay.blit(Paddle_CompImg, (PCx,PCy))
pygame.display.flip()
gameDisplay.fill(black)
BLx = display_width * 0.475
BLy = display_height * .75
PPx = display_width * 0.725
PPy = display_height * .166
PCx = display_width * 0.125
PCy = display_height * .166
Ball(BLx,BLy)
Paddle_Player(PPx,PPy)
Paddle_Comp(PCx,PCy)
pygame.display.flip()
clock.tick(15)
def Display():
gameDisplay.fill(black)
BLx = display_width * 0.475
BLy = display_height * .75
PPx = display_width * 0.725
PPy = display_height * .166
PCx = display_width * 0.125
PCy = display_height * .166
Ball(BLx,BLy)
Paddle_Player(PPx,PPy)
Paddle_Comp(PCx,PCy)
pygame.display.update()
def Move_Paddle():
PPx = display_width * 0.725
PPy = display_height * .166
PPy_change = 0
gameExit = False
while not gameExit:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
if event.type == KEYDOWN:
if event.key == K_DOWN:
PPy_change = -5
if event.key == K_UP:
PPy_change = 5
if event.type == pygame.KEYUP:
if event.key == K_UP or event.key == K_DOWN:
PPy_change = 0
PPy += PPy_change
pygame.display.update()
Paddle_Player(PPx,PPy)
clock.tick(60)
Move_Paddle()
Display()
quit()
答案 0 :(得分:1)
我认为问题在于,在Move_Paddle()
函数中,更新显示并移动player
的代码,我猜 - Paddle_Player()
函数 - 在while循环之外,所以只有退出后才会触发代码。您应该在while
循环内移动它们。示例 -
def Move_Paddle():
PPx = display_width * 0.725
PPy = display_height * .166
PPy_change = 0
gameExit = False
while not gameExit:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
if event.type == KEYDOWN:
if event.key == K_DOWN:
PPy_change = -5
if event.key == K_UP:
PPy_change = 5
if event.type == pygame.KEYUP:
if event.key == K_UP or event.key == K_DOWN:
PPy_change = 0
PPy += PPy_change
pygame.display.update()
Paddle_Player(PPx,PPy)
clock.tick(60)
答案 1 :(得分:0)
import pygame
import time
import sys
from pygame.locals import *
pygame.init()
display_width = 800
display_height = 600
black = (0, 0, 0) #Colors
white = (255, 255, 255)
cellSize = 11
pygame.display.set_caption('Pong') #Title
clock = pygame.time.Clock() #Clock
gameDisplay = pygame.display.set_mode((display_width,display_height)) #Defines "window" and width/height variables
BallImg = pygame.image.load('C:\Python\Programs\Pong\Ball.png')
Paddle_PlayerImg = pygame.image.load('C:\Python\Programs\Pong\Paddle.png')
Paddle_CompImg = pygame.image.load('C:\Python\Programs\Pong\Paddle1.png')
def Ball(BLx,BLy):
gameDisplay.blit(BallImg,(BLx ,BLy ))
def Paddle_Player(PPx,PPy):
gameDisplay.blit(Paddle_PlayerImg, (display_width * 0.725 ,display_height * .166 ))
def Paddle_Comp(PCx,PCy):
gameDisplay.blit(Paddle_CompImg, (PCx,PCy))
pygame.display.flip()
gameDisplay.fill(black)
BLx = display_width * 0.475
BLy = display_height * .75
PPx = display_width * 0.725
PPy = display_height * .166
PCx = display_width * 0.125
PCy = display_height * .166
Ball(BLx,BLy)
Paddle_Player(PPx,PPy)
Paddle_Comp(PCx,PCy)
pygame.display.flip()
clock.tick(15)
def Display():
gameDisplay.fill(black)
BLx = display_width * 0.475
BLy = display_height * .75
PPx = display_width * 0.725
PPy = display_height * .166
PCx = display_width * 0.125
PCy = display_height * .166
Ball(BLx,BLy)
Paddle_Player(PPx,PPy)
Paddle_Comp(PCx,PCy)
pygame.display.update()
def Move_Paddle():
PPx = display_width * 0.725
PPy = display_height * .166
PPy_change = 0
gameExit = False
while not gameExit:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
if event.type == KEYDOWN:
if event.key == K_DOWN:
PPy += PPy_change
print(PPy_change)
print(K_DOWN)
if event.key == K_UP:
PPy_change = 5
if event.type == pygame.KEYUP:
if event.key == K_UP or event.key == K_DOWN:
PPy_change = 0
PPy += PPy_change
Paddle_Player(PPx,PPy)
pygame.display.update()
clock.tick(60)
Move_Paddle()
Display()
quit()
答案 2 :(得分:0)
我修好了!!!!
# I changed this function:
def Paddle_Player(PPx,PPy):
gameDisplay.blit(Paddle_PlayerImg, (display_width * 0.725 ,display_height * .166 ))
#...to this! That's all there was to it.
def Paddle_Player(PPx,PPy):
gameDisplay.blit(Paddle_PlayerImg, (PPx,PPy))
#The variables were already defined below!