月神之剑 2023-02-09 17:33 采纳率: 50%
浏览 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 TMC2209串口模式下读取不到寄存器的值串口助手蓝色字体是发过去的消息,绿色字体是收到的消息,第二行发送读取寄存器的指令但是没有读取到寄存器的值串口助手如下图:接线如下图,如何解决?
  • ¥30 itest不允许查看成绩怎么办
  • ¥15 高通安卓11提取完整线刷包软件,或者优博讯dt50顺丰刷机包
  • ¥20 C,有个译码器,换了信道就跑不出原来数据
  • ¥15 MIMIC数据库安装问题
  • ¥60 基于JTag协议开发Fpga下载器上位机,哪位大🐂有偿指导?
  • ¥20 全书网Java爬取数据
  • ¥15 怎么获取红包封面的原始链接,并且获取红包封面序列号
  • ¥100 微信小程序跑脚本授权的问题
  • ¥100 房产抖音小程序苹果搜不到安卓可以付费悬赏