【Python】Python编程从入门到实践课后题 12-3

12-3火箭:编写一个游戏, 开始时屏幕中央有一个火箭, 而玩家可使用四个方向键上下左右移动火箭。 请务必确保火箭不会移到屏幕外面 。

费了老劲把它改成这样了,为了把它放到一个文件里,示例里的东西都挪到一起了,纪念下

import sys

import pygame

class Rocket(): 
    def __init__(self,screen):
        #初始化飞船并设置其初始位置
        self.screen = screen

        #加载飞船图像并获取其外接矩形
        self.image = pygame.image.load('images/rocket.jpg')
        self.rect = self.image.get_rect()
        self.screen_rect = screen.get_rect()

        #将图片放在屏幕中央
        self.rect.centerx = self.screen_rect.width/2
        self.rect.bottom = self.screen_rect.height/2 + self.image.get_height()/2

        #移动标志
        self.moving_right = False
        self.moving_left = False
        self.moving_up = False
        self.moving_down = False
    def update(self):
        """根据移动标志调整飞船的位置"""
        if self.moving_right and self.rect.right < self.screen_rect.right + 20:
            self.rect.centerx += 1

        if self.moving_left and self.rect.left > 0-20:
            self.rect.centerx -= 1

        if self.moving_up and self.rect.top > 0-10:
            self.rect.bottom -= 1

        if self.moving_down and self.rect.bottom < self.screen_rect.bottom + 10:
            self.rect.bottom += 1

    def blitme(self):
        #在指定位置绘制飞船
        self.screen.blit(self.image, self.rect)

def check_keydown_events(event, rocket):
    if event.key == pygame.K_RIGHT:
        #向右移动飞船
        # ship.rect.centerx  += 1
        rocket.moving_right = True
    if event.key == pygame.K_LEFT:
        rocket.moving_left = True
    if event.key == pygame.K_UP:
        rocket.moving_up = True
    if event.key == pygame.K_DOWN:
        rocket.moving_down = True

def check_keyup_events(event, rocket):
    if event.key == pygame.K_RIGHT:
        rocket.moving_right = False
    elif event.key == pygame.K_LEFT:
        rocket.moving_left = False
    elif event.key == pygame.K_UP:
        rocket.moving_up = False
    elif event.key == pygame.K_DOWN:
        rocket.moving_down = False


def check_events(rocket):
    #响应按键和鼠标事件
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()
        elif event.type == pygame.KEYDOWN:
            check_keydown_events(event, rocket)
        elif event.type == pygame.KEYUP:
            check_keyup_events(event, rocket)
            

def update_screen(screen, rocket):
    """更新屏幕上的图像,并切换到新屏幕"""
    #每次循环时都重绘屏幕
    # screen.fill(ai_settings.bg_color)
    rocket.blitme()

    #让最近绘制的屏幕可见
    pygame.display.flip()


def run_game():
    #初始化游戏并创建一个屏幕对象
    pygame.init()
    screen = pygame.display.set_mode((1200, 800))
    pygame.display.set_caption("Rocket")

    #设置背景色
    bg_color = (252, 252, 252)

    #创建一艘飞船
    rocket = Rocket(screen)

    #开始游戏的主循环
    while True:

        #监视键盘和鼠标事件
        # for event in pygame.event.get():
        #     if event.type == pygame.QUIT:
        #         sys.exit()
        # gf.check_events()
        check_events(rocket)

        #每次循环时都重绘屏幕
        screen.fill(bg_color)
        # screen.fill(ai_settings.bg_color)
        rocket.blitme()
        # #让最近绘制的屏幕可见
        # pygame.display.flip()

        rocket.update()
        update_screen(screen, rocket)


run_game()

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 很好的问!《Python编程入门实践》是一本非常好的Python编程入门书籍,它提供了许多有趣的习,可以帮助读者巩固所学的知识并提高编程能力。 这些习涵盖了Python编程的各个方面,包括基本语法、函数、类、文件操作、Web开发等等。通过完成这些习,读者可以逐步掌握Python编程的核心概念和技能,并且能够应用这些知识来解决实际问。 如果你正在学习《Python编程入门实践》,我建议你认真完成每个章节的习,并且尝试自己编写一些类似的程序。此外,你还可以参考一些其他的Python编程练习,例如LeetCode、Codewars等网站上的目,来进一步提高自己的编程能力。 ### 回答2: 《Python编程入门实践》是一本非常优秀的Python入门教材,其习设计也是非常合理和有挑战性的。这些习不仅具备良好的逻辑链条和难度递进,而且还让我们真正理解了Python编程的精髓,加深了对Python语言的理解和运用。 针对《Python编程入门实践》的习,在学习过程中,我们可以从以下几个方面进行思考和总结: 首先,我们需要认真阅读目,并按照目要求进行分析和思考。在解决问的过程中,我们应该养成良好的习惯,将问分解为多个小问,并一步一步的解决它们,而不是一次性的解决大问。 其次,我们需要运用所学知识进行编程。我们应该熟练掌握Python的语法和各种库函数的使用,并能够独立设计和编写Python程序。 除此之外,我们还需要注重细节和思考的深度,通过自己的思考和探索,深入理解Python编程的本质和特点,并能够灵活运用到实际问中。 最后,我们还需要进行代码的优化和重构,使其更加简洁高效。同时,我们也要注重代码的可读性和重用性,尽量使用函数封装和模块化的方式来进行编程。 在学习过程中,我们也可以参考一些其他优秀的 Python 教材和相关网站,不断学习和探索,提高自己的学习效率和编程水平。 总之,通过对《Python编程入门实践》的习的认真学习和练习,我们可以不断巩固和提高自己的 Python 编程能力,并为将来的工作和学习打下坚实的基础。 ### 回答3: 《Python编程入门实践》是一本非常好的Python入门教程。针对各个章节后面的习,这些习都很典型,旨在让读者将章节中所学到的内容应用到实践中,并进一步加深对Python编程语言的理解。 这些习既有简单的,也有较为困难的。比如,在第二章后面的习中,有一个要求用Python输出自己的名字、年龄和所在城市的程序,这个练习是比较简单的,可以通过以下代码来实现: name = "张三" age = 20 city = "北京" print("我的名字是%s,今年%d岁,我来自%s。" % (name, age, city)) 再比如,在第六章的练习中,要求编写一个Python程序,让用户输入一些数字,然后计算它们的和。这个练习稍微有点难度,可用如下程序实现: nums = input("请输入一些数字,用逗号隔开:") # 读入输入的数字 num_list = nums.split(",") # 将输入的数字按逗号分隔开,并存储到列表中 sum = 0 # 定义变量sum,用于计算输入数字的总和 for i in num_list: # 遍历列表中的每个元素 sum += int(i) # 将每个元素转换为整型并累加到sum中 print("输入数字的总和是:%d" % sum) 当然,这些习还有很多其他的变式,具体要看读者的深度理解和编程能力。总结来说,Python编程入门实践课后是非常有价值的,读者可以通过完成这些练习来巩固所学到的知识点,同时也可以提升自己的编程能力和思维能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

实施工程师木易

感谢支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值