java之回合制游戏以及如何优化

public class Role {private String name;private int blood;//空参public Role() {}//包含全部参数的构造public Role(String name, int blood) {this.name = name;this.blood = blood;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getBlood() {return blood;}public void setBlood(int blood) {this.blood = blood;}//定义一个方法用于攻击别人//思考,谁攻击谁?//Role r1=new Role();//Role r2=new Role();//r1.攻击(r2)//方法的调用者去攻击参数public void attack(Role role){//计算造成的伤害1~20Random r=new Random();int hurt=r.nextInt(20)+1;//剩余血量int remainBoold=role.getBlood()-hurt;//对剩余血量做一个验证,如果为负数了,就修改为0remainBoold=remainBoold<0?0:remainBoold;//修改一下被揍的人的血量role.setBlood(remainBoold);//this表示方法的调用者System.out.println(this.getName()+"举起了拳头,打了"+role.getName()+"一下,"+"造成了"+hurt+"点伤害,这个人还剩下了"+remainBoold+"点血量" );}
}
public class GameTest {public static void main(String[] args) {//创建第一个角色Role  r1 = new Role("乔峰",100);//创建第二个角色Role  r2=new Role("张三丰",100);//3.开始格斗, 回合制游戏while (true){//r1攻击r2r1.attack(r2);//判断r2的剩余血量if(r2.getBlood()==0){System.out.println(r1.getName()+"K.O了"+r2.getName());break;}//r2r攻击r1r2.attack(r1);if(r1.getBlood()==0){System.out.println(r2.getName()+"K.O了"+r1.getName());break;}}}
}

以下是优化方式:

import java.util.Random;public class Role {private String name;private int blood;private char gender;private String face;//长相是随机的String[]boyfaces={"风流俊雅","气宇轩昂","相貌英俊","五官端正","相貌平平","一塌糊涂","面目狰狞"};String[]girlfaces={"美艳绝伦","沉鱼落雁","亭亭玉立","身材姣好","相貌平平","丑的不行","惨不忍睹"};String[]attack_desc={"%s使出了一招【背心钉】,转到对方的身后,一掌向%s背心的灵台穴拍去","%s使出了一招【游空探爪】,飞起身形自半空中边变掌为抓锁向%s","%s大喝一声,身形下伏,一招【霹雷坠地】,垂向%s双腿","%s运气于掌,一瞬间掌心变得血红,一式掌心雷,推向%s",};String[]injured_desc={"结果%s退了半步,毫发无损","结果给%s造成一处瘀伤","结果一击命中,%s痛苦的弯下了腰","%s痛苦的闷哼了一声,显然受了点内伤",};//包含全部参数的构造public Role(String name, int blood, char gender) {this.gender=gender;this.name = name;this.blood = blood;setFace(gender);}public String getFace() {return face;}public void setFace(char gender) {Random random=new Random();//长相是随机的if(gender=='男'){//从boyfaces里面随机长相//index只是一个索引,我们还需要把数据提取出来int index= random.nextInt(boyfaces.length);//我们只要把索引给这个数组,然后在赋值给this指定的变量就行了this.face=boyfaces[index];} else if (gender=='女') {//从girlfaces里面随机长相int index= random.nextInt(girlfaces.length);this.face=girlfaces[index];}else{this.face = "面目狰狞";}this.face = face;}public char getGender() {return gender;}public void setGender(char gender) {this.gender = gender;}//空参public Role() {}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getBlood() {return blood;}public void setBlood(int blood) {this.blood = blood;}//定义一个方法用于攻击别人//思考,谁攻击谁?//Role r1=new Role();//Role r2=new Role();//r1.攻击(r2)//方法的调用者去攻击参数public void attack(Role role){Random r=new Random();int index=r.nextInt(attack_desc.length);String KongFu=attack_desc[index];//输出一个攻击的效果System.out.printf(KongFu,this.getName(),role.getName());//计算造成的伤害1~20int hurt=r.nextInt(20)+1;//剩余血量int remainBoold=role.getBlood()-hurt;//对剩余血量做一个验证,如果为负数了,就修改为0remainBoold=remainBoold<0?0:remainBoold;//修改一下被揍的人的血量role.setBlood(remainBoold);//受伤的描述System.out.printf(KongFu,this.getName(),role.getName());//this表示方法的调用者System.out.println(this.getName()+"举起了拳头,打了"+role.getName()+"一下,"+"造成了"+hurt+"点伤害,这个人还剩下了"+remainBoold+"点血量" );}public void showRoleInfo(){System.out.println("姓名为"+getName());System.out.println("血量为"+getBlood());System.out.println("性别为"+getGender());System.out.println("长相为"+getFace());}
}
public class GameTest {public static void main(String[] args) {//创建第一个角色Role  r1 = new Role("乔峰",100,'男');//创建第二个角色Role  r2=new Role("张三丰",100,'男'  );//展示一下信息r1.showRoleInfo();r2.showRoleInfo();//3.开始格斗, 回合制游戏while (true){//r1攻击r2r1.attack(r2);//判断r2的剩余血量if(r2.getBlood()==0){System.out.println(r1.getName()+"K.O了"+r2.getName());break;}//r2r攻击r1r2.attack(r1);if(r1.getBlood()==0){System.out.println(r2.getName()+"K.O了"+r1.getName());break;}}}
}

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

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

相关文章

提交高通量测序原始数据到 SRA --- 操作流程

❝ 写在前面 由于最近在提交课题数据到 NCBI 数据库&#xff0c;整理了相关笔记。本着自己学习、分享他人的态度&#xff0c;分享学习笔记&#xff0c;希望能对大家有所帮助。推荐先按顺序阅读往期内容&#xff1a; 1. 提交高通量测序数据到 GEO --- 说明书 目录 1 注册 NCBI 账…

HTML中a标签跳转后路径不正确?

场景&#xff1a;页面中动态设置了一个tag跳转的a标签&#xff0c;由于页面路径都是同级的一直没发现问题&#xff0c;后来新增页签想通过模块目录分类&#xff0c;就出现了跳转后地址路径重复404问题&#xff0c;地址上面总会多出路径拼接 页签举例&#xff1a; <ul id&q…

【C++】关联容器探秘:Map与Multimap详解

目录 1.映射类 map 0. 引入 pair&#xff1a; 1.定义 2.插入 3. 遍历 4.❗operator[]的实现 5. 插入 运用 2.Multimap 类 0. 引入&#xff1a;不去重的 Multi 1. Multimap 不支持 Operator[] 2. Multimap 的删除 1.映射类 map 0. 引入 pair&#xff1a; 在C中&…

1 go语言环境的搭建

本专栏将从基础开始&#xff0c;循序渐进&#xff0c;由浅入深讲解Go语言&#xff0c;希望大家都能够从中有所收获&#xff0c;也请大家多多支持。 查看相关资料与知识库 专栏地址:Go专栏 如果文章知识点有错误的地方&#xff0c;请指正&#xff01;大家一起学习&#xff0c;…

软件测试---测试需求分析

课程目标 什么是软件测试需求 软件测试需求的必要性 如何对软件测试需求进行分析&#xff08;重点&#xff09; 课程补充 灰度测试&#xff08;基于功能&#xff09;&#xff1a;先发布部分功能&#xff0c;然后看用户的反馈&#xff0c;再去发布另外一部分的功能更新。 A/B测…

运筹学笔记

计算的时间问题&#xff01;计算机解决了计算量的问题&#xff01; 计算机的发展对运筹学研究起到了极大的促进作用。 运筹学的一个特征之一是它常常会考虑寻求问题模型的最佳解决方案&#xff08;称为最优解&#xff09;。 没有人能成为运筹学所有方面的专家。 分析学越来越流…

Pytorch 8

这节课是讲mini_batch数据下载的 from torch.utils.data import Dataset from torch.utils.data import DataLoader第一个类是抽象类&#xff0c;只能继承 第二个可以直接用 class DiabetesDataset(Dataset):def __init__(self, filepath):xy np.loadtxt(filepath, delimit…

redis的分片集群(仅供自己参考)

前言&#xff1a;为什么使用分片集群&#xff1a;因为redis的主从和哨兵机制主要是用来解决redis的高并发读的问题&#xff0c;还有redis的高并发的写的问题没有解决。使用分片集群就可以很好的解决redis写的问题&#xff0c;有多个master就可以实现并发的写。同时&#xff0c;…

C++学习笔记04-补充知识点(问题-解答自查版)

前言 以下问题以Q&A形式记录&#xff0c;基本上都是笔者在初学一轮后&#xff0c;掌握不牢或者频繁忘记的点 Q&A的形式有助于学习过程中时刻关注自己的输入与输出关系&#xff0c;也适合做查漏补缺和复盘。 本文对读者可以用作自查&#xff0c;答案在后面&#xff0…

Mysql-高级实战案例

文章目录 千万级用户场景下的运营系统SQL调优1. 索引优化2. 查询优化3. 分析查询执行计划4. 存储引擎配置5. 数据库架构优化6. 监控与报警7. 定期维护8. 软件升级 亿级数据量商品系统的SQL调优实战1. 索引优化2. 查询重构3. 分区策略4. 优化查询计划5. 缓存策略6. 数据库架构调…

国内微短剧系统平台抖音微信付费小程序app开发源代码交付

微短剧作为当下热门的内容&#xff0c;结合抖音平台的广泛用户基础&#xff0c;开发微短剧付费小程序APP具有显著的市场潜力&#xff0c;用户对于短剧内容的需求旺盛&#xff0c;特别是在言情、总裁、赘婿等热门题材方面&#xff0c;接下来给大家普及一下微短剧小程序系统。 顺…

rce漏洞-ctfshow(50-70)

Web51 if(!preg_match("/\;|cat|flag| |[0-9]|\\$|\*|more|less|head|sort|tail|sed|cut|tac|awk|strings|od|curl|\|\%|\x09|\x26/i", $c)){ system($c." >/dev/null 2>&1"); } Nl&#xff0c;绕过tac&#xff0c;cat&#xff0c;绕…

Pytest进阶之fixture的使用(超详细)

目录 Fixture定义 Fixture使用方式 作为参数使用 Fixture间相互调用(作为参数调用) 作为conftest.py文件传入 Fixture作用范围Scope function class module session Fixture中params和ids Fixture中autouse Fixture中Name 总结 pytest fixture 是一种用来管理测试…

回溯算法(相关解题):

求子集序列&#xff1a; 解题思路&#xff1a; 已知原集合的数据位数为N&#xff0c;则可以通过二进制比对原来集合&#xff0c;二进制位为1则输出集合上的该位数据&#xff0c;为0则空&#xff0c;二进制的01排序规律与子集的输出一致由集合的位数可以判断出二进制的范围 0 ~…

Direct3D 9的介绍以及Demo演示

文章目录 1、d3d9的介绍1. 概述2. 核心概念3. 初始化和渲染流程4. 常见用法5. 先进特性6. 总结 2、d3d9demo详解1.头文件和全局变量2.IGW 相关全局变量3.函数&#xff1a;CloseIGW4.函数&#xff1a;OpenIGW5.UI 控件和日志处理6.登录和登出相关函数7.登录回调函数8.DXUT 相关回…

P3-AI产品经理-九五小庞

AI产品的数据流向 美团外卖&#xff0c;实时只能调度 美团28分钟送达需求的分析 AI产品常用的算法 常用算法 常见的AI算法解析 自然语言生成NLG语音识别&#xff1a;科大讯飞&#xff0c;通义千问 虚拟现实机器学习平台 决策管理系统生物特征识别技术 RPA(机器人流程自动…

探索 GPT-4o Mini:开发者的新利器

文章目录 探索 GPT-4o Mini&#xff1a;开发者的新利器1. 引言2. GPT-4o Mini 的核心特点3. 使用 GPT-4o Mini 的实际案例3.1 客户支持自动化3.2 内容生成与创作3.3 代码生成与优化 4. 使用体验分享5. 未来展望6. 结论 探索 GPT-4o Mini&#xff1a;开发者的新利器 OpenAI 最新…

UE4-光照重建

当我们拉入新的光源和模型到我们的场景中后&#xff0c;会产生这样的情况&#xff1a; Preview:预览 表示此时由于光照物体所产生的阴影都是预览级别的并不是真正的效果。 方法一&#xff1a; 或者也可以在世界大纲中选中我们的光源&#xff0c;然后将我们的光源改变为可以…

JAVA基本概念(垃圾回收、API)- 10

一、垃圾分代回收机制 1. 垃圾回收针对的是堆内存 2. 对象在堆内存中存储,对象在使用完成之后会在不定的某个时刻被垃圾回收器(GC - Garbage Collector)解析 掉。现阶段回收过程无法手动控制。当调用构造方法的时候,创建好一个对象,因为Java中对每种数据类型都明确 给…

Jdk22新特性

JDK 22 引入了多项新特性,旨在提升 Java 语言的性能、简化开发过程以及增强代码的可读性和可维护性。以下是对 JDK 22 新特性的详细归纳: 核心Java库 外部函数和内存 API (JEP 454):提供了一个纯 Java 应用程序接口,用于替代 JNI(Java Native Interface),以支持直接调…