停止游戏中的循环扣血显示

停止游戏中循环扣血并显示的具体实现方式会依赖于你的代码结构和游戏的逻辑。通常情况下,你可以通过以下方式来实现停止循环扣血和显示:

在这里插入图片描述

1、问题背景

在使用 Python 代码为游戏开发一个生命值条时,遇到了一个问题。代码使用了循环来减少生命值,但当扣除生命值后再次调用扣血方法时,生命值会继续从初始状态开始减少,而不是从当前生命值开始扣除。这使得生命值条无法正确反映当前的生命值。

2、解决方案

import pygame, sysclass hpbar():def __init__(self, hpchunk, screen, posx, posy):# hpchunk can either be 125 or 250self.hpchunk = hpchunkself.screen = screenself.posx = posxself.posy = posyself.unit_h = 18self.unit_w = 250self.image = pygame.image.load('hpbar.png')self.total_hp = [self.posx + 3, self.posy + 3, self.unit_w, self.unit_h]  # +3 is there due to the thickness of the actual HP bar self.val_per_chunk = self.unit_w / self.hpchunk                     # units of a single chunk e.g. 250 / 125 = 2self.startPos = 253screen.blit(self.image, [self.posx, self.posy])pygame.draw.rect(screen, [0, 255, 0], self.total_hp, 0)self.current_hp = self.unit_wdef loss(self, loss_val):self.loss_val = loss_valtotal_chunk = loss_val * self.val_per_chunk                    chunkPosx = self.posx + self.startPos                               # e.g. if hpchunk = 125, then the hp will be in chunks of twohealthbar = [0, 255, 0]chunkRangeEnd = self.current_hp - total_chunk                           total_chunk = 0                                                     # first iterative valuestop_val = chunkPosx - total_chunkself.current_hp -= total_chunkfor lossx in range(self.current_hp, chunkRangeEnd, -self.val_per_chunk):pygame.draw.rect(self.screen, healthbar, self.total_hp, 0)      # hp bar chunkPosx = chunkPosx - self.val_per_chunk                      # x position of chunk total_chunk = total_chunk + self.val_per_chunk                  # total size of chunkif chunkPosx <= self.posx + 141:                                # yellow zonehealthbar = [255, 255, 0]if chunkPosx <= self.posx + 48:                                 # red zoneif self.val_per_chunk == 25:healthbar = [255, 255, 255]else:healthbar = [255, 0, 0]pygame.draw.rect(self.screen, [255, 0, 255], [chunkPosx, self.posy + 3, total_chunk, self.unit_h], 0)pygame.time.delay(200)pygame.display.flip()pygame.init()
screen = pygame.display.set_mode([720, 480])
screen.fill((255, 255, 255))
pygame.display.flip()while True:for event in pygame.event.get():if event.type == pygame.QUIT:sys.exit()# test, using hp bar instancenewbar = hpbar(125, screen, 150, 150)newbar.loss(5)pygame.display.flip()# test, using hp bar instancenewbar.loss(3)pygame.display.flip()

修改了 loss 方法,并且引入了 current_hp 属性,当调用 loss 方法时,首先计算出要扣除的生命值数量,然后从当前生命值中减去此数量,接着计算新的生命值范围,并使用循环绘制生命值条。这样,即使多次调用 loss 方法,生命值也会从当前值开始减少,并且可以正确反映当前的生命值。

无论我们最终选择哪种方法,确保在游戏逻辑中合理地处理扣血和显示,以及适时地结束循环,这样可以保证游戏的流程和用户体验。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/853036.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Studio One软件最新版下载及详细安装教程

Studio One 6是一款功能丰富、专业级的音乐制作软件&#xff0c;它具备灵活的工作流程和高效的团队协作能力&#xff0c;能帮助用户实现高质量的音乐创作和制作。 智能模板更快的启动&#xff0c;全新的智能模板为你手头的任务提供了必要的工具集&#xff0c;包括基本录制、混音…

【前端】HTML5基础

目录 0 参考1 网页1.1 什么是网页1.2 什么是HTML1.3 网页的形成 2 浏览器2.1 常用的浏览器2.2 浏览器内核 3 Web标准3.1 为什么需要Web标准3.2 Web标准的构成 4 HTML 标签4.1 HTML语法规范4.1.1 基本语法概述4.1.2 标签关系4.1.2.1 包含关系4.1.2.2 并列关系 4.2 HTML基本结构标…

03.VisionMaster 机器视觉 位置修正 工具

VisionMaster 机器视觉 位置修正 工具 官方解释&#xff1a;位置修正是一个辅助定位、修正目标运动偏移、辅助精准定位的工具。可以根据模板匹配结果中的匹配点和匹配框角度建立位置偏移的基准&#xff0c;然后再根据特征匹配结果中的运行点和基准点的相对位置偏移实现ROI检测…

远程医疗服务包含哪些服务内容?

在当今数字化时代&#xff0c;远程医疗服务正在迅速崛起&#xff0c;成为医疗保健领域的一项重要创新。通过远程医疗服务&#xff0c;患者可以足不出户就能获得医疗服务。那么远程医疗究竟能提供哪些服务呢?下面我们就来看看。 1. 远程咨询 远程咨询是远程医疗服务的基础&…

Leetcode 2786. 访问数组中的位置使分数最大(DP 优化)

Leetcode 2786. 访问数组中的位置使分数最大 DP 以每个位置为结尾的序列的分数取决于前方的分数&#xff0c;根据奇偶性计算&#xff0c;取最大值 超时 class Solution {public long maxScore(int[] nums, int x) {int n nums.length;long dp[] new long[n];Arrays.fill(dp…

SQL题——连续问题

目录 1.连续问题的统一思路2.相关题目1285 找到连续区间的开始和结束数字2173 最多连胜的次数1454 活跃用户1225 报告系统状态的连续日期2292 连续两年有3个及以上订单的产品2752 在连续天数上进行了最多交易次数的顾客2474 购买量严格增加的客户3140 连续空余座位II 1.连续问题…

内网安全【2】-域防火墙

1.判断什么时候用代理 2.判断什么时候用隧道 3.判断出网和不出网协议 4.如何使用代理建立节点并连接 5.如何使用隧道技术封装协议上线 6.判断哪些代理或隧道情况选择放弃 代理技术&#xff1a;解决网络通讯不通的问题(利用跳板机建立节点后续操作)&#xff08;网络设置导…

HTML5 Web SQL数据库:浏览器中的轻量级数据库解决方案

在HTML5时代&#xff0c;Web开发迎来了一系列创新特性&#xff0c;其中之一便是Web SQL数据库。尽管Web SQL标准已被W3C废弃&#xff0c;转而推荐IndexedDB作为替代&#xff0c;但了解Web SQL对于学习Web存储技术的演进历程仍有其价值。本文将详细介绍Web SQL数据库的基本概念、…

WINDOWS系统jdk和maven明明安装了cmd里却无法使用相关命令

今天当了回s b 新电脑jdk和maven装是装了&#xff0c;系统变量也配置了&#xff0c;但没配置完&#xff0c;javahome和mavenhome没配置&#xff0c;结果cmdjdk和maven版本都查不到&#xff0c;我真s b啊 配置 JAVA_HOME 环境变量&#xff1a; 右键点击“此电脑”或者“我的电…

C# WinForm —— 35 StatusStrip 介绍

1. 简介 状态栏 StatusStrip&#xff0c;默认在软件的最下方&#xff0c;用于显示系统时间、版本、进度条、账号、角色信息、操作位置信息等 可以在状态栏中添加的控件类型有&#xff1a;StatusLabel、ProgressBar、DropDownButton、SplitButton 2. 属性 属性解释(Name)控…

leetcode 字符串

1143. 最长公共子序列 . - 力扣&#xff08;LeetCode&#xff09; class Solution { public:int longestCommonSubsequence(string text1, string text2) {int mtext1.length();int ntext2.length();vector<vector<int>>f(m1,vector<int>(n1,0));for(int …

远程控制软件

向日葵远程控制软件 向日葵远程控制软件_远程控制电脑手机_远程桌面连接_远程办公|游戏|运维-贝锐向日葵官网 TODESK ToDesk远程桌面软件-免费安全流畅的远程连接电脑手机

注册中心理论学习

注册中心介绍 注册中心&#xff08;也称为服务注册中心或服务发现服务&#xff09;是微服务架构中的一个关键组件&#xff0c;它负责服务的注册与发现。在微服务体系中&#xff0c;服务实例的数量和位置是动态变化的&#xff0c;注册中心提供了一个集中的地方来存储这些信息&a…

速盾:服务器遭受ddos攻击如何防御

DDoS&#xff08;分布式拒绝服务&#xff09;攻击是一种常见的网络攻击方式&#xff0c;旨在通过同时向目标服务器发送大量请求&#xff0c;以使其过载并无法正常工作。为了有效防御DDoS攻击&#xff0c;服务器管理员可以采取以下措施&#xff1a; 流量监测和分析&#xff1a;监…

前端问题整理

Vue vue mvvm&#xff08;Model-View-ViewModel&#xff09;架构模式原理 Model 是数据层&#xff0c;即 vue 实例中的数据View 是视图层&#xff0c; 即 domViewModel&#xff0c;即连接Model和Vue的中间层&#xff0c;Vue实例就是ViewModelViewModel 负责将 Model 的变化反映…

测试基础13:测试用例设计方法-错误推断、因果图判定表

课程大纲 1、错误推测法 靠主观经验和直觉来推测可能容易出现问题的功能或场景&#xff0c;设计相关测试用例进行验证。 2、因果图&判定表 2.1定义 因果图和判定表是分析和表达多逻辑条件下&#xff0c;执行不同操作的情况的工具。 &#xff08;因果图和判定表配合使用&a…

ETL可视化工具 DataX -- 简介( 一)

引言 DataX 系列文章&#xff1a; ETL可视化工具 DataX – 安装部署 ( 二) 1.1 DataX 1.1.1 Data X概览 DataX 是阿里云DataWorks数据集成的开源版本&#xff0c;在阿里巴巴集团内被广泛使用的离线数据同步工具/平台。DataX 实现了包括 MySQL、Oracle、OceanBase、SqlServ…

(el-Transfer)操作(不使用 ts):Element-plus 中 Select 组件动态设置 options 值需求的解决过程

Ⅰ、Element-plus 提供的Select选择器组件与想要目标情况的对比&#xff1a; 1、Element-plus 提供Select组件情况&#xff1a; 其一、Element-ui 自提供的Select代码情况为(示例的代码)&#xff1a; // Element-plus 提供的组件代码: <template><div class"f…

Linux ssh远程关闭如何保持进程在后台运行的解决方案

问题描述&#xff1a; Unix/Linux下一般想让某个程序在后台运行&#xff0c;很多都是使用 nohup & 在程序结尾让程序自动运行。 使用SSH远程Linux服务器启动应用&#xff0c;都是使用nohup &命令&#xff0c;结果关闭SSH应用仍然挂断了。 我们很多程序并不象mysqld一…

leetcode3无重复字符的最长字串(重点讲滑动窗口)

本文主要讲解无重复字符的最长字串的要点与细节&#xff0c;根据步骤一步步走更方便理解 c与java代码如下&#xff0c;末尾 具体要点&#xff1a; 1. 区分一下子串和子序列 子串&#xff1a;要求元素在母串中是连续地出现 子序列&#xff1a;不要求连续 2. 题目中有两个核心…