使用 PyGame 将基于百分比的颜色值从绿色更改为红色

2023-12-24

我正在尝试制作一个健康栏,根据健康百分比将绿色缩放为红色。基本上,我试图使值 0.5 对应于 (255, 255, 0),值 1.0 对应于 (0, 255, 0),值 0.0 对应于 (255,0,0) 。我看见这个帖子 https://stackoverflow.com/questions/25943241/color-from-green-to-red-with-percentage,其意图与我相同,但在代码方面并没有太大帮助。同样适用于这个帖子 https://stackoverflow.com/questions/340209/generate-colors-between-red-and-green-for-a-power-meter.

这是我当前的代码:

def draw_player_health_mana(surface, x, y, curr_value, start_value, type_bar, font):
        #TRANSFORMS THE VALUES TO PERCENTAGE
        pct = curr_value/start_value
     
        if pct < 0:
            pct = 0
        #SIZE OF THE HEALTH BAR
        BAR_LENGTH = 150
        BAR_HEIGHT = 18
        
        #INITIAL COLOR VALUES
        red_color = 255
        green_color = 255
        
        #THE FILLED BAR TO DISPLAY VISUALLY OF CURRENT HP COMPARED TO MAX HP
        fill = pct * BAR_LENGTH
        
        #PYGAME RECTANGLES
        outline_rect = pg.Rect(x, y, BAR_LENGTH, BAR_HEIGHT)
        fill_rect = pg.Rect(x, y, fill, BAR_HEIGHT)

        #CHECKS WHAT TYPE OF BAR IS CALLED FOR - THERES MANA AND HEALTH
        if type_bar == 'health':
            #THE DIFFERENCE IN PERCENTAGE, MEANT AS AN INCREASE
            pct_diff = 1.0 - pct
            
            #INTENT IS TO CHECK IF PERCENTAGE IS ABOVE 50%, THEN DECREASE THE GREEN SPECTRUM
            #BUT AS SHOWN, IT NEVER DECREASES TO 0, BUT ONLY TO HALF OF 255...
            #LIKEWISE FOR THE INCREASE OF RED_COLOR 
            if pct > 0.5: 
                red_color = 255 * pct       #### Can't really figure out how to deal with this part 
            else:                                   
                green_color = 255*pct_diff
            
            col = (red_color, green_color, 0)
            print(col)
        elif type_bar == 'mana':
            col = BLUE

        pg.draw.rect(surface, col, fill_rect)
        pg.draw.rect(surface, BLACK, outline_rect, 2)
        
        text = font.render(str(curr_value) + "/" + str(start_value), True, BLACK)
        text_rect = text.get_rect(center=(BAR_LENGTH/2 + x, BAR_HEIGHT/2 + y))
        surface.blit(text, text_rect)

正如上面语法中所述,问题在于颜色转换。颜色为(红色、绿色、蓝色)。对于健康状况良好的漂亮绿色,它应该是 (0, 255, 0)。然而,当健康状况转向 50% 时,红色必须达到 255 的值(导致 (255, 255, 0),我不知道如何有效地做到这一点,同时将绿色的减少过渡到 0 以达到更多的是红色..我在这件事上感到非常迷失,任何类型的帮助将不胜感激。

提前致谢。


0.5 对应 (255, 255, 0),值 1.0 对应 (0, 255, 0) (255, 255, 0),值 1.0 对应 (0, 255, 0)

因此绿色分量是min(255, pct_diff*2 * 255)红色分量是min(255, pct*2 * 255):

pct_diff = 1.0 - pct
red_color = min(255, pct_diff*2 * 255)
green_color = min(255, pct*2 * 255)
col = (red_color, green_color, 0)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 PyGame 将基于百分比的颜色值从绿色更改为红色 的相关文章

  • 多索引上的 pandas dataframe groupby

    我正在使用 Pandas dataframe 来读取 Excel 文件并对其进行一些操作 我有一个包含多行的标题 现在我想按几个列值进行分组 但是我无法找到解决方案 Excel 示例 name address contact info fi
  • Python 3 中是否有像 C++ 中的 getchar() 这样的内置函数?

    我想在 python 中进行用户输入 类似于获取字符 c 中使用的函数 C 代码 include
  • 无法更改现有 Keras 模型中的激活

    我有一个普通的 VGG16 模型relu激活 即 def VGG 16 weights path None model Sequential model add ZeroPadding2D 1 1 input shape 3 224 224
  • 如何按照文档规定的方式使用 python-daemon?

    我正在尝试用 python 创建一个守护进程 并且遇到了 python daemon 包 有趣的是 我见过的最常见的使用方式甚至不是文档 https www python org dev peps pep 3143 非常稀疏 告诉你要做的
  • Matlab 和 Python 中的优化算法(dog-leg trust-region)

    我正在尝试使用 Matlab 和 Python 中的狗腿信赖域算法求解一组非线性方程 在Matlab中有fsolve https www mathworks com help optim ug fsolve html其中此算法是默认算法 而
  • Python - 如何在 Python 中剪切字符串?

    假设我有以下字符串 http www domain com s some two 20 怎样才能脱掉之后的东西 包括 并有这个字符串 http www domain com s some 好吧 回答眼前的问题 gt gt gt s http
  • 使用 range/arange 函数作为参数对 2d numpy 数组进行索引/切片

    我对 numpy 有一个基本的疑问 我在 Ubuntu 14 04 上使用 Python 2 7 numpy 1 9 2 例如 我将 2d numpy 数组初始化为a np zeros 10 10 然后 我尝试通过以下方式使用范围函数作为索
  • 如何将 python 点列表转换为 numpy 图像数组?

    我有一个 python 点列表 x y 坐标 200 245 344 248 125 34 它表示二维平面上的轮廓 我想使用一些 numpy scipy 算法进行平滑 插值等 它们通常需要 numpy 数组作为输入 例如scipy ndim
  • SQLite 性能基准 - 为什么 :memory: 这么慢...只有磁盘速度的 1.5 倍?

    为什么 sqlite 中的 memory 这么慢 我一直在尝试查看使用内存中的 sqlite 与基于磁盘的 sqlite 是否可以获得任何性能改进 基本上我想用启动时间和内存来换取非常快速的查询not在应用程序过程中击中磁盘 然而 以下基准
  • Python 单元测试 Google Bigquery

    我在对以下代码块进行单元测试时遇到问题 from google cloud import bigquery from google oauth2 import service account def run query query gcp
  • 使用 BeautifulSoup 查找 html 中的所有表

    我想使用 BeautifulSoup 查找 html 中的所有表格 内部表应包含在外部表中 我创建了一些有效的代码 并且它给出了预期的输出 但是 我不喜欢这个解决方案 因为它使用 decompose 这会破坏 汤 对象 你知道如何以更优雅的
  • 如何对 glob.glob 进行数字排序?

    我在一个文件夹中有一堆按数字排序的文件 当我尝试对 glob glob 进行排序时 我从来没有以正确的顺序获得文件 文件示例和预期输出排序 folder C Users user Desktop folder 1 sample mp3 C
  • Python并发.futures.ThreadPoolExecutor max_workers

    我在网上找了好久 但没有用 请帮助或尝试给我一些如何实现这一目标的想法 当我使用 python 模块时concurrent futures ThreadPoolExecutor max workers None 我想知道max worker
  • 带约束的简单线性回归

    我开发了一种算法来循环 15 个变量并为每个变量生成一个简单的 OLS 然后算法再循环 11 次以产生相同的 15 个 OLS 回归 但 X 变量的滞后每次增加 1 我选择具有最高 r 2 的自变量 并使用 3 4 或 5 个变量的最佳滞后
  • Python 中 `if name == "__main__"` 是什么意思? [复制]

    这个问题在这里已经有答案了 可能的重复 name main gt 做什么 https stackoverflow com questions 419163 what does if name main do 我已经用 Python 编写脚本
  • 在 selenium 下运行 chromedriver 日志时,如何减少其详细程度?

    我的功能测试的詹金斯失败报告充满了这样的行 selenium webdriver remote remote connection DEBUG Finished Request selenium webdriver remote remot
  • 使用 str 方法替换 string 中的多个元素

    我正在尝试编写一个函数 它接受一串 DNA 并返回赞美 我已经尝试解决这个问题有一段时间了 并浏览了 Python 文档 但无法解决 我已经为该函数编写了文档字符串 以便您可以看到答案应该是什么样子 我在这个论坛上看到过类似的问题 但我无法
  • Python带有负数的排序列表[重复]

    这个问题在这里已经有答案了 为了尝试通过练习来学习Python 我正在尝试使用Python来实现和测试快速排序算法 实现本身并不困难 但是排序的结果有点令人费解 当我对列表进行排序时 35 1 2 7 8 3 4 20 6 53 结果给了我
  • 如何将焦点集中到 python Tkinter 文本小部件?

    我希望能够打开应用程序 GUI 并让它自动将光标放置到特定的文本小部件中 最好的情况是 应用程序启动后 有人就可以开始输入 而无需单击文本小部件 这只是显示问题的一个小示例 from Tkinter import root Tk Windo
  • 就地改变 numpy 函数输出数组

    我正在尝试编写一个对数组执行数学运算并返回结果的函数 一个简化的例子可以是 def original func A return A 1 A 1 为了加速并避免为每个函数调用分配新的输出数组 我希望将输出数组作为参数 并就地更改它 def

随机推荐

  • 最佳实践:创建免费版和付费版时如何处理iOS App的代码差异?

    我想在 App Store 上发布我的 iOS 应用程序的两个版本 一种是付费的 另一种是免费的 到目前为止 我的付费应用程序代码已经完成 现在我想为免费应用程序的 iAd 和 InAppPurchase 添加更多代码 维护这两个版本的最佳
  • 使用 Pandas 和 spaCy 进行标记化

    我正在开发我的第一个 Python 项目 并且拥有相当大的数据集 数十万行 我需要对 5 个文本列 每个 单元格 有多个文本句子 进行一些 nlp 聚类 分类 并且一直在使用 pandas 来组织 构建数据集 我希望对所有 nlp 使用 s
  • 在 Windows 7 64 位上安装 Hg-Git

    我正在尝试安装一段时间Hg Git 插件 http hg git github com 到我的 Windows 7 操作系统 我遇到了一些困难 例如安装 Python 和其他实用程序中描述的这个博客 http blog sadphaeton
  • NoSQL 数据库中的架构迁移脚本

    我有一个一直使用 C 实体框架和 SQL Server 的活动项目 然而 随着 NoSQL 替代方案的可行性日益增加 我正在研究将项目切换为使用 MongoDB 的所有影响 显然 主要的过渡障碍是由于 无模式 造成的 找到了对 C 等语言意
  • 用于反转文件名中日期顺序的批处理脚本

    我想使用批处理脚本来重命名一堆使用以下命名方案的文件 File 2 9 pdf File 3 9 pdf File 4 9 pdf 我想反转数字 使它们变成 File 9 2 pdf File 9 3 pdf File 9 4 pdf 通常
  • 实体框架一对多 IQueryable

    所以 我一直在玩弄这个tutorial https www tutorialspoint com entity framework entity framework first example htm因为我需要优化一些查询 然而 我意识到一
  • 一起转换图像和蒙版(Keras 示例)

    此代码片段取自 Keras API 参考 数据预处理 部分 一起转换图像和蒙版的示例 link https keras io api preprocessing image https keras io api preprocessing
  • Angular 4 调用路由的函数

    我通过 Angular Web 应用程序中的菜单设置了路由 菜单中设置了 routerLinks 如下面的主页链接 a a
  • FileStream.Dispose 是否立即关闭文件?

    我有一些代码 通过使用 MemoryStream WriteTo 将 MemoryStream 保存到 FileStream 来写入文件 文件关闭后再次打开以读取一些元数据 这在 80 90 的情况下有效 另外 20 我收到一个异常 说该文
  • 如何验证 Apple APN 设备令牌 - WCF .NET

    我正在构建一个 WCF REST Web 服务 移动应用程序调用该服务将 Apple 设备令牌插入数据库 我想在插入数据库之前验证设备令牌 是否有办法验证设备令牌以了解其是否有效 我在论坛上进行了搜索 但找不到任何示例代码 在 NET 中
  • 将 UITabBarItem 图像向下移动?

    通常在每个选项卡上UITabBar您有一个小图像和一个命名该选项卡的标题 图像位于选项卡顶部 居中以容纳下面的标题 我的问题是 如果你想要一个只有图像而没有标题的 tabBar 有没有办法将图像向下移动 以便它在选项卡中更好地居中 我目前正
  • 将 iframe 插入到 React 组件中

    我有一个小问题 从服务请求数据后 我得到了一个 iframe 代码作为响应 我想将其作为道具传递给我的模态组件并显示它 但是当我简单地 this props iframe 它在渲染函数中显然将其显示为字符串 在 React 中或使用 JSX
  • 使用 PHP 从纯文本和 HTML 文本的混合创建 PDF [重复]

    这个问题在这里已经有答案了 可能的重复 使用 PHP 将 HTML CSS 转换为 PDF https stackoverflow com questions 391005 convert html css to pdf with php
  • 在 UITableView 中对齐多个运行时生成的 UILabels

    我有一个UITableView需要通过列出类似的样式来支持内容 But the tricky part is that the amount of Label will vary with each cell some may have o
  • 在 Visual Studio 2015 中从 *.ts 生成 *.js

    当我将 ts 文件添加到 Visual Studio 2015 并对其进行编译时 js 文件不是 ts 的代码隐藏文件 它仅驻留在该文件夹中 而不是 Visual Studio 项目的一部分 这是设计使然还是我破坏了项目中的某些内容 如果是
  • 评估软件最低要求

    有没有办法评估软件的最低要求 我的意思是 我怎样才能发现我的应用程序需要的最小 RAM 量 Thanks 分析器在这里不会为您提供帮助 也不会估计数据结构的大小 探查器当然可以告诉您代码在哪里花费了最多的 CPU 时间 但它不会告诉您是否未
  • 如何从包含联系人详细信息且对象不在电话簿中的对象生成 .vcf 文件

    我想为一个对象生成一个 vcf 文件 其中包含姓名 图像 电话号码 传真号码 电子邮件地址 地址等联系信息 该对象未添加到手机的通讯录中 但存储在我的地址簿中 应用 生成 vcf 文件后 我可以像这样发送此 vcard Intent i n
  • Android 上的自定义字体和自定义 Textview

    从我需要开发的应用程序中 我收到了一种特定字体 其中包含许多文件 例如 FontName Regular 字体名称 粗体 字体名称 我需要在应用程序的所有文本视图中使用它 首先我认为这是一项容易的任务 查看SO并发现一个非常好的线程 her
  • C# Windows 控制台应用程序如何判断它是否以交互方式运行

    用 C 编写的 Windows 控制台应用程序如何确定它是在非交互式环境 例如从服务或计划任务 中调用还是在能够用户交互的环境 例如命令提示符或 PowerShell 中调用 编辑 4 2021 新答案 由于 Visual Studio 调
  • 使用 PyGame 将基于百分比的颜色值从绿色更改为红色

    我正在尝试制作一个健康栏 根据健康百分比将绿色缩放为红色 基本上 我试图使值 0 5 对应于 255 255 0 值 1 0 对应于 0 255 0 值 0 0 对应于 255 0 0 我看见这个帖子 https stackoverflow