重来 发表于 2020-9-8 09:53:15

求教!!问题出在哪了?运行后不能改变速度啊?毫无反应,我都怀疑我键盘按键坏了

#引用
import pygame,sys

#初始化
pygame.init()
size = width,height =600,400#设置屏幕,变量
speed = #用列表设置小球速度,下面可通过索引使用
BLACK = 100,0,100#颜色RGB体系,红,绿,蓝
screen = pygame.display.set_mode(size)
pygame.display.set_caption('3键盘控制的碰壁小球')
ball = pygame.image.load('ball.gif')
ballrect = ball.get_rect()
fps = 300#设置每秒刷新帧的次数,也可通过调整speed实现速度的变化(不知道功能完全相同不?)
fclock = pygame.time.Clock()#创建一个clock对象,用于操作时间



#事件处理
while True:
    for event in pygame.event.get():
      if event.type == pygame.QUIT:
            sys.exit()

      elif event.type == pygame.KEYDOWN:#对键盘敲击的定义
            if event.type == pygame.K_LEFT:
                speed = speed if speed == 0 else (abs(speed)-1)*int(speed/abs(speed))
                #(abs(speed)-1)速度,int(speed/abs(speed))正负号问题
            if event.type == pygame.K_RIGHT:
                speed = speed+1 if speed > 0 else speed-1
            if event.type == pygame.K_UP:
                speed = speed+1 if speed > 0 else speed-1
            if event.type == pygame.K_DOWN:
                speed = speed if speed == 0else (abs(speed)-1)*int(speed/abs(speed))

    ballrect = ballrect.move(speed,speed)#设置小球移动速度(引用speed索引)
    if ballrect.left < 0 or ballrect.right >width:#遇左右两侧
      speed = -speed #横向速度相反
    if ballrect.top < 0 or ballrect.bottom > height:#遇上下
      speed = -speed #纵向速度相反

#窗口刷新
    screen.fill(BLACK)
    screen.blit(ball,ballrect)
    pygame.display.update()
    fclock.tick(fps)#设置时间间隔,控制帧速度

疾风怪盗 发表于 2020-9-8 10:06:00

            print(event.type)
            print(pygame.K_LEFT)
            print(pygame.K_RIGHT)
            print(pygame.K_UP)
            print(pygame.K_DOWN)
你是用这个判断来调整小球速度吧
但是上面这些打印出来:
2
276
275
273
274
判断永远不成立,这段代码等于没执行

重来 发表于 2020-9-8 10:57:30

已解决,是我犯了低级错误
页: [1]
查看完整版本: 求教!!问题出在哪了?运行后不能改变速度啊?毫无反应,我都怀疑我键盘按键坏了