月神之剑 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 在现有系统基础上增加功能
  • ¥15 远程桌面文档内容复制粘贴,格式会变化
  • ¥15 关于#java#的问题:找一份能快速看完mooc视频的代码
  • ¥15 这种微信登录授权 谁可以做啊
  • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”
  • ¥15 网络设备配置与管理这个该怎么弄
  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页