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

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

在这里插入图片描述

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. 远程咨询 远程咨询是远程医疗服务的基础&…

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

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

C# WinForm —— 35 StatusStrip 介绍

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

注册中心理论学习

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

前端问题整理

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…

上位机图像处理和嵌入式模块部署(h750和市场上的开发板)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 目前在电商网站上面&#xff0c;关于h750的开发板很多。一种是某原子和某火出品的板子&#xff0c;这一类的板子就是做的比较大&#xff0c;功能比…

【LeetCode刷题】前缀和解决问题:560.和为k的子数组

【LeetCode刷题】Day 16 题目1&#xff1a;560.和为k的子数组思路分析&#xff1a;思路1&#xff1a;前缀和 哈希表 题目1&#xff1a;560.和为k的子数组 思路分析&#xff1a; 问题1&#xff1a;怎样找到数组所有子数组&#xff1f; 方式一&#xff1a;暴力枚举出来&#x…

AI模型部署:一文搞定Triton Inference Server的常用基础配置和功能特性

前言 Triton Inference Server是由NVIDIA提供的一个开源模型推理框架&#xff0c;在前文《AI模型部署&#xff1a;Triton Inference Server模型部署框架简介和快速实践》中对Triton做了简介和快速实践&#xff0c;本文对Triton的常用配置和功能特性做进一步的汇总整理&#xf…

STM32单片机选型方法

一.STM32单片机选型方法 1.首先要确定需求&#xff1a; 性能需求&#xff1a;根据应用的复杂度和性能要求&#xff0c;选择合适的CPU性能和主频。 内存需求&#xff1a;确定所需的内存大小&#xff0c;包括RAM和Flash存储空间。 外设需求&#xff1a;根据应用所需的功能&…

2024年社会发展与城市规划国际会议(SDUP 2024)

2024年社会发展与城市规划国际会议&#xff08;SDUP 2024&#xff09; 2024 International Conference on Social Development and Urban Planning 【重要信息】 大会地点&#xff1a;杭州 大会官网&#xff1a;http://www.iacsdup.com 投稿邮箱&#xff1a;iacsdupsub-conf.co…

mysql和redis的双写一致性问题

一&#xff0c;使用方案 在使用redis作为缓存的场景下&#xff0c;我们一般使用流程如下 二&#xff0c;更新数据场景 我们此时修改个某条数据&#xff0c;如何保证mysql数据库和redis缓存中的数据一致呢&#xff1f; 按照常规思路有四种办法&#xff0c;1.先更新mysql数据&a…

周五美国股市总结,标普止步四日连涨,纳指五日连创新高,法股单周跌幅两年多最深

美国消费者信心意外下滑至七个月新低&#xff0c;通胀预期反弹&#xff0c;标普大盘脱离历史最高&#xff0c;道指连跌四日&#xff0c;罗素小盘股跌至六周新低&#xff0c;有分析称对经济担忧浮现。全周标普和纳指分别累涨1.6%和3.2%&#xff0c;都是八周里第七周上涨&#xf…

mysql和redis备份和恢复数据的笔记

一、mysql的备份及恢复方法&#xff1a; 1.完全备份与恢复 1.1物理备份与恢复 物理备份又叫冷备份&#xff0c;需停止数据库服务&#xff0c;适合线下服务器 备份数据流程&#xff1a; 第一步:制作备份文件 systemctl stop mysqld #创建存放备份文件的目录 mkdir /bakdir …

连锁门店收银系统源码!

1.系统概况 智慧新零售系统是一套针对零售行业的saas收银系统&#xff0c;线下线上一体化的收银系统。核心功能涵盖了线下收银、小程序商城、会员管理、50营销插件、ERP进销存管理、跑腿配送等行业解决方案。 2.适用行业及门店 智慧新零售是针对零售行业的saas收银系统&#…