java面向对象实现文字格斗游戏细节完善版

为了完善上一篇的文字格斗游戏的细节,所以加了些代码,使得交互更加的具体有趣!

效果

在这里插入图片描述
大家可以多运行几次代码,得到不同的战况!!

代码实现

1.bean类

import java.util.Random;public class TextGame {private String name;private int blood;private String face;private char gender;String[] boyface = {"风流俊雅","气字轩品","相毂关俊","五官正","相较平平","一塌糊涂","面目狰狞"};String[] girlface = {"美奂绝伦","沉鱼落厂","婷婷玉立","身材娇好","相貌平平","相貌简所","不忍睹"};String[] attack_desc = {"%s使出了一招【背心钉】,转到对方的身后,一零向%s背心的关台穴拍去。","%s使出了一招【游空探爪】。飞起身形自半空中变章为抓锁向%s。","%s人喝一声,身形下伙,一招【劈雷坠地】,捶向%s双腿。","%s运气于景,一瞬间常心变得血红,一式【京心需】,推向%s。","%s明手翻起阳手跟进,一招【没遮拦】,结结实实的捶向%s。","%s上步抢身,招中套报,一招【劈挂连环】,连环攻向%s。"};String[] injured_desc= {"结果%s退了半步,毫发无损","结果给%s适成一处察伤","结果一击命中。%s痛得弯下服","结果%s痛苦地闷哼了一声,是然受了点内伤","结果xs摇摇晃晃,一跤摔倒作地","结果%s脸色一下变得惨白,连逖了好几步","结果「轰】的一声,%s口中鲜血狂喷面出","结果%s一声惨叫,像滩软泥般塌了下去"};public TextGame() {}public TextGame(String name, int blood,char gender) {this.name = name;this.blood = blood;this.gender = gender;setface(gender);}/*** 获取* @return name*/public String getName() {return name;}/*** 设置* @param name*/public void setName(String name) {this.name = name;}/*** 获取* @return blood*/public int getBlood() {return blood;}/*** 设置* @param blood*/public void setBlood(int blood) {this.blood = blood;}public String toString() {return "TextGame{name = " + name + ", blood = " + blood + "}";}public void setface(char gender){Random random = new Random();if(gender == '男'){int index = random.nextInt(boyface.length);this.face = boyface[index];}else if(gender == '女') {int index = random.nextInt(girlface.length);this.face = girlface[index];}else{this.face = "面目狰狞";}}public char getGender() {return gender;}public void setGender(char gender) {this.gender = gender;}public String getFace(){return this.face;}public void attack(TextGame role){//攻击方的威力Random r1 = new Random();int index = r1.nextInt(attack_desc.length);String kungfu = attack_desc[index];//攻击效果System.out.printf(kungfu,this.getName(),role.getName());System.out.println();//被揍的人伤害点Random r = new Random() ;int hurt = r.nextInt(20) + 1;//修改挨揍人的血量int remainBlood = Math.max(0 , (role.getBlood() - hurt));role.setBlood(remainBlood);
//        System.out.println(this.getName() + "了举起拳头,打了"+ role.getName()  +"一下,造成了"+hurt+"点伤害,"+role.getName()+"还剩下"+remainBlood+"血量");if(remainBlood > 90){System.out.printf(injured_desc[0],role.getName());} else if (remainBlood > 80 && remainBlood <= 90) {System.out.printf(injured_desc[1],role.getName());} else if (remainBlood >70 && remainBlood <= 80) {System.out.printf(injured_desc[2],role.getName());}else if (remainBlood >60 && remainBlood <= 70) {System.out.printf(injured_desc[3],role.getName());}else if (remainBlood >40 && remainBlood <= 60) {System.out.printf(injured_desc[4],role.getName());}else if (remainBlood >20 && remainBlood <= 40) {System.out.printf(injured_desc[5],role.getName());}else if (remainBlood >10 && remainBlood <= 20) {System.out.printf(injured_desc[6],role.getName());}else{System.out.printf(injured_desc[7],role.getName());}System.out.println();}public void showRoleInfo(){System.out.println("姓名为:"+getName());System.out.println("血型为:"+getBlood());System.out.println("性别为:"+getGender());System.out.println("长相为:"+getFace());}
}

2.测试类

public class TextGameText {public static void main(String[] args) {TextGame q1 = new TextGame("乔峰", 100,'男');TextGame q2 = new TextGame("鸠摩智", 100,'男');q1.showRoleInfo();q2.showRoleInfo();while (true){q1.attack(q2);if(q2.getBlood() == 0){System.out.println(q1.getName() +"KO." + q2.getName());break;}q2.attack(q1);if(q1.getBlood() == 0){System.out.println(q2.getName() +"KO." + q1.getName());break;}}}
}

这样就丰富了一场格斗大战的游戏细节!!!

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

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

相关文章

[性能优化] ScrollView视图优化为循环列表

问题描述&#xff1a; 原先商城的物品栏中的item 是load在一个scrollView 下&#xff0c;用于滑动查看。仅仅在父级panel下是使用了NGUI原生的scrollview 组件&#xff0c;随着商场物品列表中新物品的增多。panel下加载的实例也非常庞大。而大部分的实例用户也无法看到&#x…

python代码无法点击进入,如何破???

python代码无法点击进入&#xff0c;如何破&#xff1f;&#xff1f;&#xff1f; 举个栗子&#xff1a; model.chat是无法进入的&#xff0c;这时可以使用如下的命令进行操作&#xff1a; ?model.chat

Day31:单元测试、项目监控、项目部署、项目总结、常见面试题

单元测试 保证独立性。 Assert&#xff1a;断言&#xff0c;一般用来比较是否相等&#xff0c;比如 Assert.assertEquals 在JUnit测试框架中&#xff0c;BeforeClass&#xff0c;Before&#xff0c;After和AfterClass是四个常用的注解&#xff0c;它们的作用如下&#xff1a; …

Vue--》从零开始打造交互体验一流的电商平台(一)

今天开始使用 vue3 ts 搭建一个电商项目平台&#xff0c;因为文章会将项目的每处代码的书写都会讲解到&#xff0c;所以本项目会分成好几篇文章进行讲解&#xff0c;我会在最后一篇文章中会将项目代码开源到我的github上&#xff0c;大家可以自行去进行下载运行&#xff0c;希…

LeetCode刷题笔记第190题:颠倒二进制位

LeetCode刷题笔记第190题&#xff1a;颠倒二进制位 题目: 颠倒输入的二进制数 想法&#xff1a; 通过位运算来实现&#xff0c;以下通过代码逐步说明 class Solution:def reverseBits(self, n: int) -> int:result 0for i in range(32):result (result << 1) |…

Pyserini

文章目录 关于 Pyserini安装&#x1f3ac;如何搜索&#xff1f;&#x1f64b;如何给我的语料集建立索引 关于 Pyserini github : https://github.com/castorini/pyseriniPyserini: An Easy-to-Use Python Toolkit to Support Replicable IR Research with Sparse and Dense Re…

第09章 局域网技术(拓扑结构设计+FDDI工作机制)

9.1 本章目标 了解IEEE 802局域网标准掌握局域网拓扑结构了解10Base以太网了解快速以太网熟悉交换式以太网了解千兆位以太网了解其它种类的局域网局域网中的常用技术 9.2 局域网概述 罗伯特梅特卡夫个人简介 罗伯特梅特卡夫&#xff08;Robert Metcalfe&#xff0c;1…

Dijkstra算法(C/C++简明注释详解版: 代码实现 测试数据)

算法思想简述&#xff08;From C知道&#xff09;&#xff1a; Dijkstra算法是一种求解最短路径的贪心算法&#xff0c;它能够找到两点之间的最短路径。C语言实现Dijkstra算法需要以下步骤&#xff1a; 1. 创建一个数组用于记录起始点到其他节点的距离&#xff0c;初始化为无…

【镜像仿真篇】磁盘镜像仿真常见错误

【镜像仿真篇】磁盘镜像仿真常见错误 记系统镜像仿真常见错误集—【蘇小沐】 1、实验环境 2023AFS39.E01&#xff08;Windows11系统镜像&#xff09;Arsenal Image Mounter&#xff0c;[v3.10.262]‍Vmware Workstation 17 Pro&#xff0c;[v17.5.1]Windows 11 专业工作站版…

Android ViewFlipper

Android ViewFlipper 在很多APP都有如下的头条/热榜效果&#xff08;上下自动翻滚&#xff09; 这种效果可以使用很多方式实现&#xff0c;有一个简便的方式可以使用ViewFlipper控件实现&#xff0c;ViewFlipper控件继承结果如下&#xff1a; 可以看出ViewFlipper 继承自ViewA…

在VMware上利用Samba实现资源共享

一、背景 FTP协议能让主机之间的文件传输变得简单方便&#xff0c;但是FTP协议的本质是传输文件。 举个栗子&#xff1a;当客户端想修改服务器上的test.txt&#xff0c;需要先get test.txt将文件下载下来&#xff0c;修改后再put test.txt 有没有一种方式能使客户端直接修改…

关于支付接口测试点的思考

支付接口测试是一项非常重要的测试工作&#xff0c;以下是一些测试支付接口的建议&#xff1a; 测试支付流程&#xff1a; 测试支付流程的正确性&#xff0c;包括支付前、支付中和支付后的各个环节&#xff0c;确保支付流程的顺畅和正确。 测试支付金额&#xff1a; 测试支…

Python 中的 Unit testing 文件写入

在 Python 中进行单元测试时&#xff0c;有时候需要测试文件写入操作。为了模拟文件写入并进行单元测试&#xff0c;你可以使用 Python 的 unittest 模块&#xff0c;并结合 io.StringIO 或 tempfile 模块来模拟文件操作。 1、问题背景 在 Python 中&#xff0c;为 ConfigPars…

Docker下Open WebUI,Ollama的安装实践

提示一下Open WebUI与ollama的关系。后端的同学可以理解为Open WebUI等于是个Navicat&#xff0c;Ollama就是具体的数据库实例。 官方安装文档&#xff1a; &#x1f3e1; Home | Open WebUI Open WebUI官网文档翻译&#xff1a; 注意&#xff1a; 使用Docker安装Open WebU…

58. 【Android教程】音频录制:MediaRecord

在第 57 节我们使用 MediaPlayer 实现了一个 mp3 播放器&#xff0c;除了播放 Android 还提供了 MediaRecorder 用于录音。Android 设备基本都会有一个麦克风&#xff0c;通过 MediaRecorder 可以打开麦克风进行语音采集&#xff0c;这一节我们就来学习如何在 Android 系统上实…

深入解析C++的auto自动类型推导(二)

目录 使用auto的好处 新标准新增功能 使用auto的限制 上一篇详细讲解了使用auto关键字进行自动类型推导时的推导规则&#xff0c;这一篇重点讲解auto的使用以及C14、C17、C20等新标准对auto的功能完善&#xff0c;最后再介绍auto的使用限制。上一篇请从这里阅读&#xff1a;…

线程池核心原理浅析

前言 由于系统资源是有限的&#xff0c;为了降低资源消耗&#xff0c;提高系统的性能和稳定性&#xff0c;引入了线程池对线程进行统一的管理和监控&#xff0c;本文将详细讲解线程池的使用、原理。 为什么使用线程池 池化思想 线程池主要用到了池化思想&#xff0c;池化思想…

【计算机科学速成课】笔记一

文章目录 写在前面1.计算机的早期历史2.电子计算机3.布尔运算和逻辑门4.二进制5.算术逻辑单元-ALU6.寄存器和内存 写在前面 所有的一切源于这样一个网站——CS自学指南。 这是新手小白入门计算机科学必要了解的知识——【计算机科学速成课】[40集全/精校] - Crash Course Comp…

Dragonfly 拓扑的路由算法

Dragonfly 拓扑的路由算法 1. Dragonfly 上的路由 (1)最小路由(2)非最小路由 2. 评估3. 存在问题 (1)吞吐量限制(2)较高的中间延迟 references Dragonfly 拓扑的路由算法 John Kim, William J. Dally 等人在 2008 年的 ISCA 中提出技术驱动、高度可扩展的 Dragonfly 拓扑。而…