Pygame:如何让我的图像下降?

2024-03-07

我试图让物体像在地球上一样下落。我已经让它们到了我想要的地方,但我似乎无法为它们设置动画。

这就是我想要落下的物体

import pygame

class circle():

    def __init__(self, screen):
        planet_color = (255,0,0)
        planet_radius = 20
        self.screen = screen
        ev = pygame.event.get()

        self.image = pygame.image.load('../images/jupiter.bmp')
        self.image = pygame.transform.scale(self.image, (80, 80))


    def blitme(self):
        self.x = pygame.mouse.get_pos()
        self.rect = self.image.get_rect()
        self.rect.center = self.x
        self.screen.blit(self.image, self.rect)

这是运行它的代码。单击鼠标时,会在单击鼠标的位置生成木星的小图片。我怎样才能让这个图像下降?

import pygame
import gravfunc as gf
from gravfunc import circle
import sys


def run_game():
    screen_height = 670
    screen_width = 1270
    pygame.init()
    screen = pygame.display.set_mode((screen_width, screen_height))
    screen.fill((10,10,30))
    running = True

    circ = circle(screen)


    while running:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                sys.exit()
            elif event.type == pygame.KEYDOWN:
                if event.key == pygame.K_q:
                    sys.exit()
            elif event.type == pygame.MOUSEBUTTONDOWN:
                circ.blitme()


        pygame.display.flip()


run_game()

给你的班级一个self.speed_y属性并添加GRAVITY每帧都对其进行加速以加速对象。我还添加了一个self.pos_y属性因为pygame.Rects 不能使用浮点数作为坐标。所以,

  1. 提高速度
  2. 将速度添加到位置 (self.pos_y)
  3. 分配self.pos_y to self.rect.y.

由于您已经在使用一个类,我建议将其设为 pygame sprite 子类(继承自pygame.sprite.Sprite)。然后您可以将所有圆圈添加到pygame.sprite.Group并通过调用更新和绘制它们sprite_group.update() and sprite_grop.draw(screen).

import pygame


GRAVITY = .2  # Pretty low gravity.

class Circle(pygame.sprite.Sprite):

    def __init__(self, pos, screen):
        super().__init__()
        self.screen = screen
        self.image = pygame.Surface((80, 80), pygame.SRCALPHA)
        pygame.draw.circle(self.image, (30, 90, 150), (40, 40), 40)
        self.rect = self.image.get_rect(center=pos)
        self.pos_y = pos[1]
        self.speed_y = 0

    def update(self):
        self.speed_y += GRAVITY
        self.pos_y += self.speed_y
        self.rect.y = self.pos_y

        if self.pos_y > self.screen.get_height():
            self.kill()  # Remove off-screen circles.


def run_game():
    pygame.init()
    screen = pygame.display.set_mode((1270, 670))
    clock = pygame.time.Clock()
    running = True
    circles = pygame.sprite.Group(Circle((600, 0), screen))

    while running:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                return
            elif event.type == pygame.MOUSEBUTTONDOWN:
                circles.add(Circle(event.pos, screen))

        circles.update()

        screen.fill((10, 10, 30))
        circles.draw(screen)

        pygame.display.flip()
        clock.tick(60)


run_game()
pygame.quit()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pygame:如何让我的图像下降? 的相关文章

随机推荐

  • Android:使用第三方应用程序打开私人文件

    我正在制作一个从互联网下载文件并允许用户使用第三方应用程序打开这些文件的应用程序 我使用以下命令将这些文件存储在我的私人应用程序目录中getFilesDir http developer android com reference andr
  • 使用Python3.x创建贝叶斯网络并学习参数[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在为 Windows 上的 python3 x 寻找最合适的工具来创建贝叶斯网络 从数据中学习其参
  • 在 Python 中解析 CSS

    我正在合并 100 个 HTML 页面 所有页面的头部都嵌入了样式元素 使用 BeautifulSoup 提取 style 的内容 但现在只剩下将字符串解析为字典 selector str properties str 的任务 查看tiny
  • 如何自动下载每周导出服务文件

    在 SalesForce 中 您可以在此处安排最多每周一次的数据 备份 转储 设置 gt 管理设置 gt 数据管理 gt 数据导出 如果您有一个大型 Salesforce 数据库 则可能需要手动下载大量文件 有没有人有最佳实践 工具 批处理
  • CorePlot iPhone 错误:CorePlot-CocoaTouch.h:没有这样的文件或目录

    我正在尝试引导某人将 CorePlot 添加到他们的 iPhone 应用程序中 我的电脑上可以运行 但他总是收到 CorePlot CocoaTouch h no such file or directory 错误 如果我弄乱了构建设置中的
  • 在 Swift 中从 sockaddr_in 结构体获取 IP 地址和端口号?

    经过多次尝试和错误 但没有取得任何成功 看来我可能需要一些帮助 在最新版本的 Swift 中 如何从 sockaddr in 获取 IP 地址和端口号 我看到了一些相关的问题 但似乎无法在任何地方找到合适的例子 另外 我似乎并没有真正掌握如
  • Chartjs 在鼠标悬停时非常快速地调整大小(闪烁)

    我在基于引导的页面中有一个图表 我试图在页面调整大小时调整它的大小 以遵循响应式设计的变化 所以我有这段代码 function redrawChart var w chart container width var c document g
  • 使用 ctypes 从 Python 调用带有 Char** 参数的 C 方法

    我需要一种使用 ctypes 库将数组从 Python 传递到 char 的方法到 C 库 我尝试过的一些方法导致我出现分段错误 另一些则导致垃圾信息 由于我已经在这个问题上苦苦挣扎了一段时间 我决定写一个小指南 以便其他人可以受益 有这段
  • 当 Stream.Read() 存在时,StreamReader 的用途是什么?

    这一直困扰着我 我知道Stream是一个抽象类 因此无法实例化 但它具有派生自它的类 为什么有一个流阅读器类和一个流 Read 方法 反之亦然 流写入器 and 流 Write 您可以使用 300 万种不同的方法写入文本文件 但尝试了解所有
  • 角度材料 2 个选项卡滚动显示在导航上

    正如您在此示例中所看到的 当您更改选项卡时 动画上会出现垂直滚动条
  • 如何在 Android 中打开 PDF

    如何从服务器打开 pdf 文件而不将其保存在设备上且不使用任何第三方应用程序 因为我不希望我的用户下载任何应用程序来使用我的应用程序 而且我不想使用 Web 视图来打开 pdf文件 此方法适用于旧版本的android 在新活动中 WebVi
  • 使用 DataTable.js 的 js 源数据的单独列搜索过滤器,过滤器位于顶部

    我无法将过滤器选择放在顶部 我如何实现 我坚持使用 initComplete 选项 因为它仅在 DataTable 完全初始化后触发一次 并且可以安全地调用 API 方法 另外 我到底应该在哪里使列下拉值变得唯一 const dataSet
  • i18next加载json错误(404 Not Found)

    这是我在index html 的代码 p p
  • 将整数列表转换为逗号分隔的字符串

    我试图将整数列表转换为逗号分隔的整数字符串 Collectors joining CharSequence delimiter 返回一个按遇到顺序连接输入元素 由指定分隔符分隔 的收集器 List
  • AsyncTask 上的 Android 连接超时

    尝试让这个简单的下载和保存图像正常工作 但我不断收到连接超时异常 据我所知 该网址应该有效 new DownloadImageTask private class DownloadImageTask extends AsyncTask
  • 2 个 JUnit Assert 类之间的差异

    JUnit 框架包含 2Assert类 显然在不同的包中 和每个类的方法看起来非常相似 有人能解释这是为什么吗 我指的课程是 junit framework Assert http junit org junit javadoc 4 5 j
  • 跨 AppDomains 和进程的 TransactionScope

    跨不同的AppDomains和进程使用System Transactions 主要是TransactionScope 是真的吗 相关交易 http msdn microsoft com en us library system transa
  • 如何在 VB.NET 中使用 BeginInvoke

    在 C 中你使用BeginInvoke像这样 obj BeginInvoke Action gt do something 我尝试将其转换为 VB NET 最后得到了这段代码 看起来可行 obj BeginInvoke Sub do som
  • ASP.NET MVC 快速教程 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Pygame:如何让我的图像下降?

    我试图让物体像在地球上一样下落 我已经让它们到了我想要的地方 但我似乎无法为它们设置动画 这就是我想要落下的物体 import pygame class circle def init self screen planet color 25