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

devtools/2024/9/20 1:24:03/ 标签: 游戏, pygame, python, 开发语言, 数据库

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

在这里插入图片描述

1、问题背景

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

2、解决方案

python">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.ppmy.cn/devtools/49727.html

相关文章

【安卓逆向】adb root adbd cannot run as root in production builds

尝试了很多方法不行, 最终在这篇贴纸看到这段代码 su -c "resetprop ro.debuggable 1";su -c "resetprop service.adb.root 1";su -c "magiskpolicy --live allow adbd adbd process setcurrent";su -c "magiskpolicy --live allow adbd su…

java值jsp语法笔记

1 JSP注释 1.1 显示注释 显示注释会出现在生成的HTML文档中&#xff0c;对用户可见。 <!-- 这是一个HTML显示注释 --> 1.2 隐式注释 隐式注释不会出现在生成的HTML文档中&#xff0c;对用户不可见。 <%-- 这是一个JSP隐式注释 --%> 2 JSP脚本元素 2.1 局部…

数据库原理(概论)——(1)

数据库概述 一、数据库的四个基本概念 1.数据 描述事物的符号记录 2.数据库 数据库是长期存储在计算机内的、有组织的、可共享的大量数据的集合。数据库中的数据按一定的数据模型组织、描述和存储、具有较小的冗余度、较高的数据独立性和易扩展性&#xff0c;并可为各种用户共…

在npm发布自己的组件包

目录 前言 正文 npm和git的对比 Node环境的配置 具体发布步骤 ※※需要注意的是 尾声 &#x1f52d; Hi,I’m Pleasure1234&#x1f331; I’m currently learning Vue.js,SpringBoot,Computer Security and so on.&#x1f46f; I’m studying in University of Nottingham Ni…

使用QT制作QQ登录界面

mywidget.cpp #include "mywidget.h"Mywidget::Mywidget(QWidget *parent): QWidget(parent) {/********制作一个QQ登录界面*********************/this->resize(535,415);//设置登录窗口大小this->setFixedSize(535,415);//固定窗口大小this->setWindowTi…

JavaScript快速入门系列-3(函数基础)

第三章:函数基础 3.1 函数定义与调用3.1.1 函数声明3.1.2 函数表达式3.2 参数与返回值3.3 匿名函数与立即执行函数表达式(IIFE)3.3.1 匿名函数3.3.2 立即执行函数表达式3.4 箭头函数3.4.1 箭头函数与this3.5 函数的高级话题3.5.1 闭包3.5.2 函数柯里化3.5.3 高阶函数小结在Jav…

操作系统复习

一、操作系统的定义 操作系统(OS&#xff0c;Operating System)是配置在计算机硬件上的第一层软件&#xff0c;是对硬件系统的首次扩充。它在计算机系统中占据了重要地位&#xff0c;汇编程序、编译程序、数据库管理系统等系统软件&#xff0c;都依赖于操作系统的支持&#xff…

centos7下安装redis

目录 一&#xff1a;软件版本 二&#xff1a;安装 一&#xff1a;软件版本 redis版本&#xff1a;redis-6.0.7 gcc版本&#xff1a;gcc-9.2.0 默认下centos7下gcc是4.8的需要升级&#xff0c;因为redis6.0需要gcc5.3以上 二&#xff1a;安装 1&#xff1a;安装gcc wget…

文心一言使用体验(彩色图例)

一、初识文心一言 在我日常生活和工作中&#xff0c;信息检索和处理一直是一个重要的环节。无论是学术研究、市场分析&#xff0c;还是个人兴趣探索&#xff0c;快速准确地获取信息都是至关重要的。然而&#xff0c;随着互联网信息的爆炸式增长&#xff0c;如何高效地从中筛选出…

PythonWeb项目-Django+vue宾馆管理系统功能介绍

本项目源码&#xff1a;基于Python的Django-vue宾馆管理系统源码-参考文档资源-CSDN文库 项目关键技术 开发工具&#xff1a;Pycharm 编程语言: Python 数据库: MySQL5.7 框架&#xff1a;Django、vue 前端&#xff1a;Vue、ElementUI 关键技术&#xff1a;Django、vue、MYSQL…

Python - 处理电子书的库

kindleunpack&#xff1a; 转换azw3为epub https://github.com/kevinhendricks/KindleUnpackkindlegen 转换epub为mobiOpenBookPublishers https://github.com/orgs/OpenBookPublishers/repositories?qsort%3Astarsepub2pdf : converting fixed-layout manga/comic files(epub…

【Spring Boot实现网页会话(Session )】

文章目录 前言什么是网页会话&#xff08;Session&#xff09;Spring Boot 中的 Session 管理Session 的创建与管理Session 的数据存储使用示例 前言 会话管理允许服务器在多次HTTP请求之间保持用户的状态信息&#xff0c;以便用户可以进行认证、保持登录状态等操作。 什么是…

Vue24-内置指令01:v-text指令

一、我们学过的指令 二、v-text v-text把所有的字符串当成文本去解析&#xff0c;所以不能解析html标签。 三、小结 所以&#xff0c;插值语法用的多&#xff01;灵活

欢乐钓鱼大师保姆级教程,云手机辅助攻略解析!

在这份攻略中&#xff0c;我们将为大家详细介绍如何在《欢乐钓鱼大师》中快速提升钓鱼技能和游戏进展&#xff0c;避免常见的新手误区和不必要的资源浪费。无论是钓鱼点的选择、装备的合理使用还是技能的优化&#xff0c;我们都会一一为您详细解析&#xff0c;帮助您成为一名优…

redis清空list

redis list清空 要清空Redis中的list&#xff0c;您可以使用LTRIM命令。Redis Ltrim 对一个列表进行修剪(trim)&#xff0c;就是说&#xff0c;让列表只保留指定区间内的元素&#xff0c;不在指定区间之内的元素都将被删除。 下标 0 表示列表的第一个元素&#xff0c;以 1 表示…

数据结构:顺序栈

目录 1.什么是顺序栈&#xff1f; 2.顺序栈的基本操作和应用 3.包含头文件 4.结点设计 5.接口函数定义 6.接口函数实现 什么是顺序栈&#xff1f; 顺序栈&#xff08;Sequential Stack&#xff09;是一种使用数组来实现的栈数据结构。栈是一种后进先出&#xff08;Last In Firs…

Git 基础操作(一)

Git 基础操作 配置Git 安装完Git后&#xff0c;首先要做的事情是设置你的 用户名 和 e-mail 地址。这样在你向仓库提交代码的时候&#xff0c;就知道是谁提交的&#xff0c;以及提交人的联系方式。 配置用户名和邮箱 使用git config [--global] user.name "你的名字&qu…

opencv实战小结-银行卡号识别

实战1-银行卡号识别 项目来源&#xff1a;opencv入门 项目目的&#xff1a;识别传入的银行卡照片中的卡号 难点&#xff1a;银行卡上会有一些干扰项&#xff0c;如何排除这些干扰项&#xff0c;并且打印正确的号码是一个问题 最终效果如上图 实现这样的功能需要以下几个步骤…

文字悬停效果

文字悬停效果 效果展示 CSS 知识点 CSS 变量使用回顾-webkit-text-stroke 属性的运用与回顾 页面整体结构实现 <ul><li style"--clr: #e6444f"><a href"#" class"text">First</a></li><li style"--cl…

Hexapod C-887使用手册 -- 4,5,6

4 - 拆包 小心拆包C-887 根据合同和发货注意比较发货范围的内容&#xff1a; 检查危险符号的内容。如果任何零件损坏或缺失&#xff0c;立即联系客服部门。 保存所有包装材料&#xff0c;以防产品需要返厂。 5 - 安装 本章中 安装一般注意 安装PC软件 确保通风 接地C-…