月神之剑 2023-02-09 17:33 采纳率: 60%
浏览 30
已结题

刚学习Python,编写的程序能正常运行,但火箭不能左右移动,如何解决?

刚学习Python,编写的程序能正常运行,但火箭不能左右移动,


#主程序
import sys
import pygame
from hj_image import Hj_image

class Move_huojian:

    def __init__(self):
        pygame.init()

        self.screen=pygame.display.set_mode((1200,600))
        self.screen_name=pygame.display.set_caption("移动火箭")
        self.bj_color=(90,150,190)
        self.hj_image = Hj_image(self)
        #self.hj_speed=0.5

    def _update_screen(self):
        self.screen.fill(self.bj_color)
        self.hj_image.draw_hj()
        pygame.display.flip()

    def _event_key(self):
        for event in pygame.event.get():
            if event.type==pygame.QUIT:
                sys.exit()
            elif event.type == pygame.KEYDOWN:
                if event.key == pygame.K_RIGHT:
                    self.hj_image.move_right == True
                elif event.key == pygame.K_LEFT:
                    self.hj_image.move_left == True
            elif event.type == pygame.KEYUP:
                if event.type == pygame.K_RIGHT:
                    self.hj_image.move_right == False
                elif event.key == pygame.K_LEFT:
                    self.hj_image.move_left == False

    def run_game(self):
        while True:
            self._event_key()
            self.hj_image.gengxin()
            self._update_screen()




if __name__=="__main__":
    a=Move_huojian()


#火箭图片模块
import pygame


class Hj_image:

    def __init__(self,hj):
        self.screen=hj.screen
        self.screen_rect=hj.screen.get_rect()

        self.image=pygame.image.load("C:/Users/xcz000/Desktop/My Python/images/arm.bmp")
        self.image_rect=self.image.get_rect()

        #self.x = float(self.image_rect.x)

        self.image_rect.midbottom=self.screen_rect.midbottom

        self.move_right = False
        self.move_left = False

    def gengxin(self):
        if self.move_right:
            self.image_rect.x+=1
        if self.move_left:
            self.image_rect.x-=1

    def draw_hj(self):
        self.screen.blit(self.image,self.image_rect)

  • 写回答

1条回答 默认 最新

  • 程序员星辰 2023-02-09 17:42
    关注

    有用望采纳
    首先,代码中存在一个小错误:

    if event.type == pygame.KEYDOWN:
                    if event.key == pygame.K_RIGHT:
                        self.hj_image.move_right == True
                    elif event.key == pygame.K_LEFT:
                        self.hj_image.move_left == True
                elif event.type == pygame.KEYUP:
                    if event.type == pygame.K_RIGHT:
                        self.hj_image.move_right == False
                    elif event.key == pygame.K_LEFT:
                        self.hj_image.move_left == False
    
    

    self.hj_image.move_right == True 和 self.hj_image.move_left == False 应该使用赋值语句 = 而不是比较语句 ==。

    代码修正后应该是这样的:

    
    if event.type == pygame.KEYDOWN:
                    if event.key == pygame.K_RIGHT:
                        self.hj_image.move_right = True
                    elif event.key == pygame.K_LEFT:
                        self.hj_image.move_left = True
                elif event.type == pygame.KEYUP:
                    if event.key == pygame.K_RIGHT:
                        self.hj_image.move_right = False
                    elif event.key == pygame.K_LEFT:
                        self.hj_image.move_left = False
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 2月17日
  • 已采纳回答 2月9日
  • 创建了问题 2月9日

悬赏问题

  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。