python - 在我的 pong remake 中,我的桨没有在 python 中移动
问题描述
我改变了我的代码的方式,现在我的桨停止移动。有谁知道为什么?忽略球,现在,我还没有完成编码。在我改变我的代码之前,我没有定义我的形状,我只是画了它们。现在我定义了它们,什么都不会移动。我只包含了相关代码。
rectY1 = 240
rectY2 = 240
Y1change = 0
Y2change = 0
ballX = 320
ballY = 240
ballXvel = 0
ballYvel = 0
paddle1 = pygame.Rect(18,rectY1,10,120)
paddle2 = pygame.Rect(620,rectY2,10,120)
ball = pygame.Rect(ballX,ballY,30,30)
def drawshapes():
pygame.draw.rect(DISPLAY, WHITE, paddle1)
pygame.draw.rect(DISPLAY, WHITE, paddle2)
pygame.draw.rect(DISPLAY, WHITE, ball)
DISPLAY = pygame.display.set_mode((640,480),0,32)
while True:
for event in pygame.event.get():
if event.type==QUIT:
pygame.quit()
sys.exit()
if event.type == KEYDOWN :
if event.key == K_SPACE :
ballXvel += 10
ballYvel += 10
keys = pygame.key.get_pressed()
Y1change = 0
Y2change = 0
#make paddles move
if keys[K_UP]:
Y2change -= 10
if keys[K_DOWN]:
Y2change += 10
if keys[ord('w')]:
Y1change -= 10
if keys[ord('s')]:
Y1change += 10
#stop paddles at edges
if rectY1 < 5 :
rectY1 = 5
if rectY1 > 355 :
rectY1 = 355
if rectY2 < 5 :
rectY2 = 5
if rectY2 > 355 :
rectY2 = 355
ballX += ballXvel
ballY += ballYvel
rectY1 += Y1change
rectY2 += Y2change
DISPLAY.fill(BLACK)
drawshapes()
pygame.display.update()
fpsClock.tick(FPS)
解决方案
该代码永远不会更新 Paddle rect
。当然rectY1
和rectY2
已更新,但这从未应用于paddle1
and paddle2
。
之前drawshapes()
,将更改应用到桨矩形:
rectY1 += Y1change
rectY2 += Y2change
paddle1.y = rectY1 # <-- HERE - Update the paddle's rect
paddle2.y = rectY2 # which is used to draw it
DISPLAY.fill(BLACK)
但我认为如果你的代码直接在等上跟踪更改会更paddle1.x
简单paddle1.y
。
推荐阅读
- mongodb - 如何使用来自另一个集合的引用值设置新字段
- android - 无法使用 Retrofit to Fragment 读取数据
- python - 获取值的索引并在数组中查找其对应值时出现值错误
- ios - 如何检查 Bundle.module 是否已定义?
- python - xml.etree.ElementTree 中的 python xpath
- c# - 故意排队 Http.sys 队列
- javascript - Vue 的 @click 功能在 Firefox 中不起作用,但在 Edge、Chrome 中起作用
- javascript - 如何将 unicode 字符转换为 svg,然后转换为 favicon
- javascript - 在异步函数中返回 fetch 的问题 | 第2部分
- java - 为什么方法工作后类字段会更新其数据