weixin_44236316 2019-04-25 15:27 采纳率: 0%
浏览 2433

pygame 为什么飞船只能左右移动不能上下移?

import pygame
import sys

def run_game():
    pygame.init()
    screen=pygame.display.set_mode((1200,600))
    pygame.display.set_caption("game over")


    image=pygame.image.load('selfimages/airplane.bmp')
    rect=image.get_rect()
    screen_rect=screen.get_rect()

    rect.centerx=screen_rect.centerx
    rect.centery=screen_rect.centery
    xcenter=float(rect.centerx)
    ycenter=float(rect.centery)

    moving_right=False
    moving_left=False
    moving_down=False
    moving_up=False

    while True:
        for event in pygame.event.get():
            if event.type==pygame.QUIT:
                sys.exit()
            elif event.type==pygame.KEYDOWN:
                if event.key==pygame.K_RIGHT:
                    moving_right=True

                elif event.key==pygame.K_LEFT:
                    moving_left=True

                elif event.key==pygame.K_UP:
                    moving_up=True

                elif event.key==pygame.K_DOWN:
                    moving_dowm=True
            elif event.type==pygame.KEYUP:
                if event.key==pygame.K_RIGHT:
                    moving_right=False

                elif event.key==pygame.K_LEFT:
                    moving_left=False

                elif event.key==pygame.K_UP:
                    moving_up=False

                elif event.key==pygame.K_DOWN:
                    moving_dowm=False

        if moving_right and rect.right<screen_rect.right:
            xcenter+=1.5
        if moving_left and rect.left>0:
            xcenter-=1.5
        if moving_up and rect.top<screen_rect.top:
            ycenter+=1.5
        if moving_down and rect.bottom>0:
            ycenter-=1.5

        rect.centerx=xcenter
        rect.centery=ycenter

        screen.fill((255,255,255))
        screen.blit(image,rect)
        pygame.display.flip()


run_game()

麻烦帮我看看问题出在哪,谢谢大家

  • 写回答

4条回答 默认 最新

  • wxsx1008 2021-09-12 10:39
    关注

    import pygame
    import sys

    def run_game():
    pygame.init()
    screen=pygame.display.set_mode((1000,700))
    pygame.display.set_caption("game over")

    image=pygame.image.load('images/ship1.bmp')
    rect=image.get_rect()
    screen_rect=screen.get_rect()
    
    rect.centerx=screen_rect.centerx
    rect.centery=screen_rect.centery
    xcenter=float(rect.centerx)
    ycenter=float(rect.centery)
    
    moving_right=False
    moving_left=False
    moving_down=False
    moving_up=False
    
    while True:
        for event in pygame.event.get():
            if event.type==pygame.QUIT:
                sys.exit()
            elif event.type==pygame.KEYDOWN:
                if event.key==pygame.K_RIGHT:
                    moving_right=True
    
                elif event.key==pygame.K_LEFT:
                    moving_left=True
    
                elif event.key==pygame.K_UP:
                    moving_up=True
    
                elif event.key==pygame.K_DOWN:
                    moving_down=True
                    
            elif event.type==pygame.KEYUP:
                if event.key==pygame.K_RIGHT:
                    moving_right=False
    
                elif event.key==pygame.K_LEFT:
                    moving_left=False
    
                elif event.key==pygame.K_UP:
                    moving_up=False
    
                elif event.key==pygame.K_DOWN:
                    moving_down=False
    
        if moving_right and rect.right<screen_rect.right:
            xcenter+=0.5
        if moving_left and rect.left>0:
            xcenter-=0.5
        if moving_up and rect.top>0:
            ycenter-=0.5
        if moving_down and rect.bottom>screen_rect.top:
            ycenter+=0.5
    
        rect.centerx=xcenter
        rect.centery=ycenter
    
        screen.fill((255,255,255))
        screen.blit(image,rect)
        pygame.display.flip()
    

    run_game()

    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog