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 账…

【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;。 没有人能成为运筹学所有方面的专家。 分析学越来越流…

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

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

国内微短剧系统平台抖音微信付费小程序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 ~…

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

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

UE4-光照重建

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

判断字符串,数组方法

判断字符串方法 在JavaScript中&#xff0c;可以使用typeof操作符来判断一个变量是否为字符串。 function isString(value) {return typeof value string; } 判断数组 在JavaScript中&#xff0c;typeof操作符并不足以准确判断一个变量是否为数组&#xff0c;因为typeof会…

《昇思25天学习打卡营第25天|第27天》

今天是学习的第二十七天&#xff0c;今天学习的是应用实践篇中计算机视觉中ShuffleNet图像分类。 从对ShuffleNet网络介绍开始学习&#xff0c;模型架构&#xff08;Pointwise Group Convolution&#xff0c;Channel Shuffle&#xff0c;ShuffleNet模块&#xff0c;构建Shuffl…

# Redis 入门到精通(九)-- 主从复制(1)

Redis 入门到精通&#xff08;九&#xff09;-- 主从复制&#xff08;1&#xff09; 一、redis 主从复制 – 主从复制简介 1、互联网“三高”架构 高并发高性能高可用 2、你的“Redis”是否高可用&#xff1f; 1&#xff09;单机 redis 的风险与问题 问题1.机器故障  现…

C++ 鼠标轨迹API【神诺科技SDK】

一.鼠标轨迹模拟简介 传统的鼠标轨迹模拟依赖于简单的数学模型&#xff0c;如直线或曲线路径。然而&#xff0c;这种方法难以捕捉到人类操作的复杂性和多样性。AI大模型的出现&#xff0c;使得神诺科技 能够通过深度学习技术&#xff0c;学习并模拟更自然的鼠标移动行为。 二.…

java之对称字符串以及如何优化(链式编程)

import java.util.Scanner;public class ScannerDemo12 {public static void main(String[] args) {Scanner sc new Scanner(System.in);System.out.println("请输入一个字符串");String str sc.next();//链式编程StringBuilder sbnew StringBuilder();sb.append(s…

国内大陆地区huggingface连接不上的解决方案

简介 本文主要介绍国内大陆地区huggingface连接不上的解决方案,希望能对学习大模型的同学们有所帮助。 1. 背景 最近有不少同学反应无法正常下载huggingface的模型文件,亲自尝试使用git clone下载huggingface上的大模型文件时,也同样无法正常下载,以Meta-Llama-3-8B为例…

数据结构之判断完全二叉树详解与示例(C,C++)

文章目录 一、判断完全二叉树的思路二、C语言实现三、C语言实现四、总结 完全二叉树是一种特殊的二叉树&#xff0c;它满足以下两个条件&#xff1a; 每一层&#xff08;除了最后一层&#xff09;都被严格地填充了节点。 最后一层的节点都尽可能地靠左对齐。 本文将详细介绍如…

微服务(网关路由)

目录 一&#xff1a;网关路由 1&#xff1a;认识网关 2&#xff1a;快速入门 2.1&#xff1a;创建项目 2.2&#xff1a;引入依赖 2.3&#xff1a;启动类 2.4&#xff1a;路由配置 2.5&#xff1a;测试 3&#xff1a;路由过滤 二&#xff1a;网关登录校验 1&…